diff --git a/.vscode/launch.json b/.vscode/launch.json index 8843b2d0..c96687dd 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,8 @@ "name": "Build Assets (test collateral)", "program": "${workspaceFolder}/project-explorer/build-assets.js", "args": [ - "--path=${workspaceFolder}/test/collateral" + "--appSettingPath=${workspaceFolder}/test/collateral/project-without-source", + "--formPath=${workspaceFolder}/test/collateral" ] }, { diff --git a/all-chts-bundle.js b/all-chts-bundle.js index e8f4a1cd..bd959233 100644 --- a/all-chts-bundle.js +++ b/all-chts-bundle.js @@ -37,4 +37,14 @@ module.exports = { Lineage: require('cht-core-3-12/shared-libs/lineage'), ChtScriptApi: require('cht-core-3-12/shared-libs/cht-script-api'), }, + '3.13': { + ddocs: require('./build/cht-core-3-13-ddocs.json'), + RegistrationUtils: require('cht-core-3-13/shared-libs/registration-utils'), + CalendarInterval: require('cht-core-3-13/shared-libs/calendar-interval'), + RulesEngineCore: require('cht-core-3-13/shared-libs/rules-engine'), + RulesEmitter: require('cht-core-3-13/shared-libs/rules-engine/src/rules-emitter'), + nootils: require('cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils'), + Lineage: require('cht-core-3-13/shared-libs/lineage'), + ChtScriptApi: require('cht-core-3-13/shared-libs/cht-script-api'), + }, }; diff --git a/build.sh b/build.sh index 28373360..ff53b14b 100755 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ trap exit_on_error EXIT npm ci rm -Rf dist build rm -Rf node_modules/enketo-core/node_modules/ -patch -f node_modules/enketo-core/src/js/Form.js < node_modules/cht-core-3-11/webapp/patches/enketo-inputs-always-relevant.patch +patch -f node_modules/enketo-core/src/js/Form.js < node_modules/cht-core-3-13/webapp/patches/enketo-inputs-always-relevant.patch patch -f node_modules/enketo-core/src/js/page.js < patches/enketo-handle-no-active-pages.patch node ./compile-ddocs.js diff --git a/dist/all-chts-bundle.dev.js b/dist/all-chts-bundle.dev.js index 59175887..36282e9f 100644 --- a/dist/all-chts-bundle.dev.js +++ b/dist/all-chts-bundle.dev.js @@ -46,6 +46,16 @@ module.exports = { Lineage: __webpack_require__(/*! cht-core-3-12/shared-libs/lineage */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/index.js"), ChtScriptApi: __webpack_require__(/*! cht-core-3-12/shared-libs/cht-script-api */ "./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/index.js"), }, + '3.13': { + ddocs: __webpack_require__(/*! ./build/cht-core-3-13-ddocs.json */ "./build/cht-core-3-13-ddocs.json"), + RegistrationUtils: __webpack_require__(/*! cht-core-3-13/shared-libs/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"), + CalendarInterval: __webpack_require__(/*! cht-core-3-13/shared-libs/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"), + RulesEngineCore: __webpack_require__(/*! cht-core-3-13/shared-libs/rules-engine */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/index.js"), + RulesEmitter: __webpack_require__(/*! cht-core-3-13/shared-libs/rules-engine/src/rules-emitter */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-emitter.js"), + nootils: __webpack_require__(/*! cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"), + Lineage: __webpack_require__(/*! cht-core-3-13/shared-libs/lineage */ "./node_modules/cht-core-3-13/shared-libs/lineage/src/index.js"), + ChtScriptApi: __webpack_require__(/*! cht-core-3-13/shared-libs/cht-script-api */ "./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/index.js"), + }, }; @@ -58,7 +68,7 @@ module.exports = { /***/ ((module) => { "use strict"; -module.exports = JSON.parse('[{"_id":"_design/medic-client","validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","views":{"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_last_visited":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}","reduce":"_stats"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n var type = doc.type === \'contact\' ? doc.contact_type : doc.type;\\n if (parentId) {\\n emit([parentId, type]);\\n }\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"data_records_by_type":{"map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}","reduce":"_count"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for patients. If patients are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/patient_by_patient_shortcode_id\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n if (doc.form &&\\n doc.type === \'data_record\' &&\\n (!doc.errors || doc.errors.length === 0) &&\\n patientId) {\\n emit(String(patientId));\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"reports_by_form_year_month_places":{"map":"// data record must adhere to property name of `month`\\nfunction(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.year &&\\n doc.fields.month) {\\n var year = parseInt(doc.fields.year, 10);\\n var month = parseInt(doc.fields.month, 10);\\n var clinic = doc.contact && doc.contact.parent;\\n var healthCenter = clinic && clinic.parent;\\n var district = healthCenter && healthCenter.parent;\\n emit(\\n [ doc.form, year, month ],\\n {\\n isValid: (doc.errors && doc.errors.length === 0),\\n clinicId: clinic && clinic._id,\\n healthCenterId: healthCenter && healthCenter._id,\\n districtId: district && district._id,\\n month: month\\n }\\n );\\n }\\n}"},"reports_by_form_year_week_places":{"map":"// data record must adhere to property name of `week` or `week_number`\\nfunction(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.year &&\\n (doc.fields.week || doc.fields.week_number)) {\\n var year = parseInt(doc.fields.year, 10);\\n var week = parseInt(doc.fields.week || doc.fields.week_number, 10);\\n var clinic = doc.contact && doc.contact.parent;\\n var healthCenter = clinic && clinic.parent;\\n var district = healthCenter && healthCenter.parent;\\n emit(\\n [ doc.form, year, week ],\\n {\\n isValid: (doc.errors && doc.errors.length === 0),\\n clinicId: clinic && clinic._id,\\n healthCenterId: healthCenter && healthCenter._id,\\n districtId: district && district._id,\\n weekNumber: week\\n }\\n );\\n }\\n}"},"reports_by_form":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}","reduce":"function() {\\n return true;\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n }\\n}"}}}]'); +module.exports = JSON.parse('[{"validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","_id":"_design/medic-client","views":{"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_last_visited":{"reduce":"_stats","map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n var type = doc.type === \'contact\' ? doc.contact_type : doc.type;\\n if (parentId) {\\n emit([parentId, type]);\\n }\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"data_records_by_type":{"map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}","reduce":"_count"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"reports_by_form":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}","reduce":"function() {\\n return true;\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for contacts. If contacts are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/docs_by_shortcode\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n var placeId = doc.place_id || (doc.fields && doc.fields.place_id);\\n\\n if (!doc.form || doc.type !== \'data_record\' || (doc.errors && doc.errors.length)) {\\n return;\\n }\\n\\n if (patientId) {\\n emit(String(patientId));\\n }\\n\\n if (placeId) {\\n emit(String(placeId));\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n emit([doc.fields.visited_contact_uuid, visited_date]);\\n }\\n}"}}}]'); /***/ }), @@ -69,7 +79,7 @@ module.exports = JSON.parse('[{"_id":"_design/medic-client","validate_doc_update /***/ ((module) => { "use strict"; -module.exports = JSON.parse('[{"_id":"_design/medic-client","views":{"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_last_visited":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}","reduce":"_stats"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n var type = doc.type === \'contact\' ? doc.contact_type : doc.type;\\n if (parentId) {\\n emit([parentId, type]);\\n }\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"data_records_by_type":{"map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}","reduce":"_count"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for contacts. If contacts are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/docs_by_shortcode\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n var placeId = doc.place_id || (doc.fields && doc.fields.place_id);\\n\\n if (!doc.form || doc.type !== \'data_record\' || (doc.errors && doc.errors.length)) {\\n return;\\n }\\n\\n if (patientId) {\\n emit(String(patientId));\\n }\\n\\n if (placeId) {\\n emit(String(placeId));\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"reports_by_form":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}","reduce":"function() {\\n return true;\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n }\\n}"}},"validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}"}]'); +module.exports = JSON.parse('[{"_id":"_design/medic-client","validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","views":{"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n var type = doc.type === \'contact\' ? doc.contact_type : doc.type;\\n if (parentId) {\\n emit([parentId, type]);\\n }\\n }\\n}"},"contacts_by_last_visited":{"reduce":"_stats","map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"data_records_by_type":{"reduce":"_count","map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for contacts. If contacts are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/docs_by_shortcode\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n var placeId = doc.place_id || (doc.fields && doc.fields.place_id);\\n\\n if (!doc.form || doc.type !== \'data_record\' || (doc.errors && doc.errors.length)) {\\n return;\\n }\\n\\n if (patientId) {\\n emit(String(patientId));\\n }\\n\\n if (placeId) {\\n emit(String(placeId));\\n }\\n}"},"reports_by_form":{"reduce":"function() {\\n return true;\\n}","map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n }\\n}"}}}]'); /***/ }), @@ -80,7 +90,18 @@ module.exports = JSON.parse('[{"_id":"_design/medic-client","views":{"contacts_b /***/ ((module) => { "use strict"; -module.exports = JSON.parse('[{"_id":"_design/medic-client","validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","views":{"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_last_visited":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}","reduce":"_stats"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n var type = doc.type === \'contact\' ? doc.contact_type : doc.type;\\n if (parentId) {\\n emit([parentId, type]);\\n }\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"data_records_by_type":{"reduce":"_count","map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"reports_by_form":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}","reduce":"function() {\\n return true;\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for contacts. If contacts are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/docs_by_shortcode\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n var placeId = doc.place_id || (doc.fields && doc.fields.place_id);\\n\\n if (!doc.form || doc.type !== \'data_record\' || (doc.errors && doc.errors.length)) {\\n return;\\n }\\n\\n if (patientId) {\\n emit(String(patientId));\\n }\\n\\n if (placeId) {\\n emit(String(placeId));\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n emit([doc.fields.visited_contact_uuid, visited_date]);\\n }\\n}"}}}]'); +module.exports = JSON.parse('[{"validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","_id":"_design/medic-client","views":{"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_last_visited":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}","reduce":"_stats"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n var type = doc.type === \'contact\' ? doc.contact_type : doc.type;\\n if (parentId) {\\n emit([parentId, type]);\\n }\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"data_records_by_type":{"reduce":"_count","map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for contacts. If contacts are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/docs_by_shortcode\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n var placeId = doc.place_id || (doc.fields && doc.fields.place_id);\\n\\n if (!doc.form || doc.type !== \'data_record\' || (doc.errors && doc.errors.length)) {\\n return;\\n }\\n\\n if (patientId) {\\n emit(String(patientId));\\n }\\n\\n if (placeId) {\\n emit(String(placeId));\\n }\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"reports_by_form":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}","reduce":"function() {\\n return true;\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n emit([doc.fields.visited_contact_uuid, visited_date]);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"}}}]'); + +/***/ }), + +/***/ "./build/cht-core-3-13-ddocs.json": +/*!****************************************!*\ + !*** ./build/cht-core-3-13-ddocs.json ***! + \****************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('[{"validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","_id":"_design/medic-client","views":{"contacts_by_last_visited":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}","reduce":"_stats"},"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n var type = doc.type === \'contact\' ? doc.contact_type : doc.type;\\n if (parentId) {\\n emit([parentId, type]);\\n }\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"data_records_by_type":{"map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}","reduce":"_count"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"reports_by_form":{"reduce":"function() {\\n return true;\\n}","map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for contacts. If contacts are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/docs_by_shortcode\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n var placeId = doc.place_id || (doc.fields && doc.fields.place_id);\\n\\n if (!doc.form || doc.type !== \'data_record\' || (doc.errors && doc.errors.length)) {\\n return;\\n }\\n\\n if (patientId) {\\n emit(String(patientId));\\n }\\n\\n if (placeId) {\\n emit(String(placeId));\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n var owner = (doc.owner || \'_unassigned\');\\n\\n if (!isTerminalState) {\\n emit(\'owner-\' + owner);\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n\\n emit([\'owner\', \'all\', owner], { state: doc.state });\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n emit([doc.fields.visited_contact_uuid, visited_date]);\\n }\\n}"}}}]'); /***/ }), @@ -91,42195 +112,47074 @@ module.exports = JSON.parse('[{"_id":"_design/medic-client","validate_doc_update /***/ ((module) => { "use strict"; -module.exports = JSON.parse('[{"validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","_id":"_design/medic-client","views":{"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_last_visited":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}","reduce":"_stats"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n if (parentId) {\\n emit([parentId, doc.contact_type || doc.type]);\\n }\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"data_records_by_type":{"map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}","reduce":"_count"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for patients. If patients are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/patient_by_patient_shortcode_id\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n if (doc.form &&\\n doc.type === \'data_record\' &&\\n (!doc.errors || doc.errors.length === 0) &&\\n patientId) {\\n emit(String(patientId));\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"reports_by_form_year_month_places":{"map":"// data record must adhere to property name of `month`\\nfunction(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.year &&\\n doc.fields.month) {\\n var year = parseInt(doc.fields.year, 10);\\n var month = parseInt(doc.fields.month, 10);\\n var clinic = doc.contact && doc.contact.parent;\\n var healthCenter = clinic && clinic.parent;\\n var district = healthCenter && healthCenter.parent;\\n emit(\\n [ doc.form, year, month ],\\n {\\n isValid: (doc.errors && doc.errors.length === 0),\\n clinicId: clinic && clinic._id,\\n healthCenterId: healthCenter && healthCenter._id,\\n districtId: district && district._id,\\n month: month\\n }\\n );\\n }\\n}"},"reports_by_form_year_week_places":{"map":"// data record must adhere to property name of `week` or `week_number`\\nfunction(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.year &&\\n (doc.fields.week || doc.fields.week_number)) {\\n var year = parseInt(doc.fields.year, 10);\\n var week = parseInt(doc.fields.week || doc.fields.week_number, 10);\\n var clinic = doc.contact && doc.contact.parent;\\n var healthCenter = clinic && clinic.parent;\\n var district = healthCenter && healthCenter.parent;\\n emit(\\n [ doc.form, year, week ],\\n {\\n isValid: (doc.errors && doc.errors.length === 0),\\n clinicId: clinic && clinic._id,\\n healthCenterId: healthCenter && healthCenter._id,\\n districtId: district && district._id,\\n weekNumber: week\\n }\\n );\\n }\\n}"},"reports_by_form":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}","reduce":"function() {\\n return true;\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n }\\n}"}}}]'); +module.exports = JSON.parse('[{"validate_doc_update":"function(newDoc, oldDoc, userCtx) {\\n /*\\n LOCAL DOCUMENT VALIDATION\\n\\n This is for validating document structure, irrespective of authority, so it\\n can be run both on couchdb and pouchdb (where you are technically admin).\\n\\n For validations around authority check lib/validate_doc_update.js, which is\\n only run on the server.\\n */\\n\\n var _err = function(msg) {\\n throw({ forbidden: msg });\\n };\\n\\n /**\\n * Ensure that type=\'form\' documents are created with correctly formatted _id\\n * property.\\n */\\n var validateForm = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var form_id = id_parts.slice(1).join(\':\');\\n if (prefix !== \'form\') {\\n _err(\'_id property must be prefixed with \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (!form_id) {\\n _err(\'_id property must define a value after \\"form:\\". e.g. \\"form:registration\\"\');\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id property must be lower case. e.g. \\"form:registration\\"\');\\n }\\n };\\n\\n var validateUserSettings = function(newDoc) {\\n var id_parts = newDoc._id.split(\':\');\\n var prefix = id_parts[0];\\n var username = id_parts.slice(1).join(\':\');\\n var idExample = \' e.g. \\"org.couchdb.user:sally\\"\';\\n if (prefix !== \'org.couchdb.user\') {\\n _err(\'_id must be prefixed with \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (!username) {\\n _err(\'_id must define a value after \\"org.couchdb.user:\\".\' + idExample);\\n }\\n if (newDoc._id !== newDoc._id.toLowerCase()) {\\n _err(\'_id must be lower case.\' + idExample);\\n }\\n if (typeof newDoc.name === \'undefined\' || newDoc.name !== username) {\\n _err(\'name property must be equivalent to username.\' + idExample);\\n }\\n if (newDoc.name.toLowerCase() !== username.toLowerCase()) {\\n _err(\'name must be equivalent to username\');\\n }\\n if (typeof newDoc.known !== \'undefined\' && typeof newDoc.known !== \'boolean\') {\\n _err(\'known is not a boolean.\');\\n }\\n if (typeof newDoc.roles !== \'object\') {\\n _err(\'roles is a required array\');\\n }\\n };\\n\\n if (userCtx.facility_id === newDoc._id) {\\n _err(\'You are not authorized to edit your own place\');\\n }\\n if (newDoc.type === \'form\') {\\n validateForm(newDoc);\\n }\\n if (newDoc.type === \'user-settings\') {\\n validateUserSettings(newDoc);\\n }\\n\\n log(\\n \'medic-client validate_doc_update passed for User \\"\' + userCtx.name +\\n \'\\" changing document \\"\' + newDoc._id + \'\\"\'\\n );\\n}","_id":"_design/medic-client","views":{"contacts_by_last_visited":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n if (typeof date !== \'number\' || isNaN(date)) {\\n date = 0;\\n }\\n // Is a visit report about a family\\n emit(doc.fields.visited_contact_uuid, date);\\n } else if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n // Is a contact type\\n emit(doc._id, 0);\\n }\\n}","reduce":"_stats"},"contacts_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_parent":{"map":"function(doc) {\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'person\') {\\n var parentId = doc.parent && doc.parent._id;\\n if (parentId) {\\n emit([parentId, doc.contact_type || doc.type]);\\n }\\n }\\n}"},"contacts_by_reference":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n\\n if (doc.type === \'contact\' ||\\n doc.type === \'clinic\' ||\\n doc.type === \'health_center\' ||\\n doc.type === \'district_hospital\' ||\\n doc.type === \'national_office\' ||\\n doc.type === \'person\') {\\n\\n var emitReference = function(prefix, key) {\\n if (tombstone) {\\n prefix = \'tombstone-\' + prefix;\\n }\\n emit([ prefix, String(key) ], doc.reported_date);\\n };\\n\\n if (doc.place_id) {\\n emitReference(\'shortcode\', doc.place_id);\\n }\\n if (doc.patient_id) {\\n emitReference(\'shortcode\', doc.patient_id);\\n }\\n if (doc.simprints_id) {\\n emitReference(\'simprints\', doc.simprints_id);\\n }\\n if (doc.rc_code) {\\n // need String because rewriter wraps everything in quotes\\n // keep refid case-insenstive since data is usually coming from SMS\\n emitReference(\'external\', String(doc.rc_code).toUpperCase());\\n }\\n }\\n}"},"contacts_by_type_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'geolocation\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(type, key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([ type, key ], value);\\n }\\n };\\n\\n var emitField = function(type, key, value, order) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(type, word, order);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(type, key + \':\' + value, order);\\n }\\n };\\n\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n Object.keys(doc).forEach(function(key) {\\n emitField(type, key, doc[key], order);\\n });\\n }\\n}"},"contacts_by_place":{"map":"function(doc) {\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n if (doc.type === \'contact\') {\\n idx = types.indexOf(doc.contact_type);\\n if (idx === -1) {\\n idx = doc.contact_type;\\n }\\n } else {\\n idx = types.indexOf(doc.type);\\n }\\n if (idx !== -1) {\\n var place = doc.parent;\\n var order = idx + \' \' + (doc.name && doc.name.toLowerCase());\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], order);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"data_records_by_type":{"reduce":"_count","map":"function(doc) {\\n if (doc.type === \'data_record\') {\\n emit(doc.form ? \'report\' : \'message\');\\n }\\n}"},"contacts_by_phone":{"map":"function(doc) {\\n if (doc.phone) {\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n if (types.indexOf(doc.type) !== -1) {\\n emit(doc.phone);\\n }\\n }\\n}"},"contacts_by_type":{"map":"function(doc) {\\n var tombstone = false;\\n if (doc.type === \'tombstone\' && doc.tombstone) {\\n tombstone = true;\\n doc = doc.tombstone;\\n }\\n var types = [ \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n var idx;\\n var type;\\n if (doc.type === \'contact\') {\\n type = doc.contact_type;\\n idx = types.indexOf(type);\\n if (idx === -1) {\\n idx = type;\\n }\\n } else {\\n type = doc.type;\\n idx = types.indexOf(type);\\n }\\n if (tombstone) {\\n type = \'tombstone-\' + type;\\n }\\n if (idx !== -1) {\\n var dead = !!doc.date_of_death;\\n var muted = !!doc.muted;\\n var order = dead + \' \' + muted + \' \' + idx + \' \' + (doc.name && doc.name.toLowerCase());\\n emit([ type ], order);\\n }\\n}"},"doc_by_type":{"map":"function(doc) {\\n if (doc.type === \'translations\') {\\n emit([ \'translations\', doc.enabled ], {\\n code: doc.code,\\n name: doc.name\\n });\\n return;\\n }\\n emit([ doc.type ]);\\n}"},"messages_by_contact_date":{"map":"function(doc) {\\n\\n var emitMessage = function(doc, contact, phone) {\\n var id = (contact && contact._id) || phone || doc._id;\\n emit([ id, doc.reported_date ], {\\n id: doc._id,\\n date: doc.reported_date,\\n contact: contact && contact._id\\n });\\n };\\n\\n if (doc.type === \'data_record\' && !doc.form) {\\n if (doc.kujua_message && doc.tasks) {\\n // outgoing\\n doc.tasks.forEach(function(task) {\\n var message = task.messages && task.messages[0];\\n if(message) {\\n emitMessage(doc, message.contact, message.to);\\n }\\n });\\n } else if (doc.sms_message) {\\n // incoming\\n emitMessage(doc, doc.contact, doc.from);\\n }\\n }\\n}","reduce":"function(key, values) {\\n var latest = { date: 0 };\\n values.forEach(function(value) {\\n if (value.date > latest.date) {\\n latest = value;\\n }\\n });\\n return latest;\\n}"},"docs_by_id_lineage":{"map":"function(doc) {\\n\\n var emitLineage = function(contact, depth) {\\n while (contact && contact._id) {\\n emit([ doc._id, depth++ ], { _id: contact._id });\\n contact = contact.parent;\\n }\\n };\\n\\n var types = [ \'contact\', \'district_hospital\', \'health_center\', \'clinic\', \'person\' ];\\n\\n if (types.indexOf(doc.type) !== -1) {\\n // contact\\n emitLineage(doc, 0);\\n } else if (doc.type === \'data_record\' && doc.form) {\\n // report\\n emit([ doc._id, 0 ]);\\n emitLineage(doc.contact, 1);\\n }\\n}"},"reports_by_form_year_month_places":{"map":"// data record must adhere to property name of `month`\\nfunction(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.year &&\\n doc.fields.month) {\\n var year = parseInt(doc.fields.year, 10);\\n var month = parseInt(doc.fields.month, 10);\\n var clinic = doc.contact && doc.contact.parent;\\n var healthCenter = clinic && clinic.parent;\\n var district = healthCenter && healthCenter.parent;\\n emit(\\n [ doc.form, year, month ],\\n {\\n isValid: (doc.errors && doc.errors.length === 0),\\n clinicId: clinic && clinic._id,\\n healthCenterId: healthCenter && healthCenter._id,\\n districtId: district && district._id,\\n month: month\\n }\\n );\\n }\\n}"},"registered_patients":{"map":"// NB: This returns *registrations* for patients. If patients are created by\\n// means other then sending in a registration report (eg created in the UI)\\n// they will not show up in this view.\\n//\\n// For a view with all patients by their shortcode, use:\\n// medic/patient_by_patient_shortcode_id\\nfunction(doc) {\\n var patientId = doc.patient_id || (doc.fields && doc.fields.patient_id);\\n if (doc.form &&\\n doc.type === \'data_record\' &&\\n (!doc.errors || doc.errors.length === 0) &&\\n patientId) {\\n emit(String(patientId));\\n }\\n}"},"reports_by_form_year_week_places":{"map":"// data record must adhere to property name of `week` or `week_number`\\nfunction(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.year &&\\n (doc.fields.week || doc.fields.week_number)) {\\n var year = parseInt(doc.fields.year, 10);\\n var week = parseInt(doc.fields.week || doc.fields.week_number, 10);\\n var clinic = doc.contact && doc.contact.parent;\\n var healthCenter = clinic && clinic.parent;\\n var district = healthCenter && healthCenter.parent;\\n emit(\\n [ doc.form, year, week ],\\n {\\n isValid: (doc.errors && doc.errors.length === 0),\\n clinicId: clinic && clinic._id,\\n healthCenterId: healthCenter && healthCenter._id,\\n districtId: district && district._id,\\n weekNumber: week\\n }\\n );\\n }\\n}"},"reports_by_form":{"reduce":"function() {\\n return true;\\n}","map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.form], doc.reported_date);\\n }\\n}"},"reports_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.reported_date], doc.reported_date);\\n }\\n}"},"reports_by_place":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var place = doc.contact && doc.contact.parent;\\n while (place) {\\n if (place._id) {\\n emit([ place._id ], doc.reported_date);\\n }\\n place = place.parent;\\n }\\n }\\n}"},"reports_by_freetext":{"map":"function(doc) {\\n var skip = [ \'_id\', \'_rev\', \'type\', \'refid\', \'content\' ];\\n\\n var usedKeys = [];\\n var emitMaybe = function(key, value) {\\n if (usedKeys.indexOf(key) === -1 && // Not already used\\n key.length > 2 // Not too short\\n ) {\\n usedKeys.push(key);\\n emit([key], value);\\n }\\n };\\n\\n var emitField = function(key, value, reportedDate) {\\n if (!key || !value) {\\n return;\\n }\\n key = key.toLowerCase();\\n if (skip.indexOf(key) !== -1 || /_date$/.test(key)) {\\n return;\\n }\\n if (typeof value === \'string\') {\\n value = value.toLowerCase();\\n value.split(/\\\\s+/).forEach(function(word) {\\n emitMaybe(word, reportedDate);\\n });\\n }\\n if (typeof value === \'number\' || typeof value === \'string\') {\\n emitMaybe(key + \':\' + value, reportedDate);\\n }\\n };\\n\\n if (doc.type === \'data_record\' && doc.form) {\\n Object.keys(doc).forEach(function(key) {\\n emitField(key, doc[key], doc.reported_date);\\n });\\n if (doc.fields) {\\n Object.keys(doc.fields).forEach(function(key) {\\n emitField(key, doc.fields[key], doc.reported_date);\\n });\\n }\\n if (doc.contact && doc.contact._id) {\\n emitMaybe(\'contact:\' + doc.contact._id.toLowerCase(), doc.reported_date);\\n }\\n }\\n}"},"reports_by_subject":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n var emitField = function(obj, field) {\\n if (obj[field]) {\\n emit(obj[field], doc.reported_date);\\n }\\n };\\n\\n emitField(doc, \'patient_id\');\\n emitField(doc, \'place_id\');\\n emitField(doc, \'case_id\');\\n\\n if (doc.fields) {\\n emitField(doc.fields, \'patient_id\');\\n emitField(doc.fields, \'place_id\');\\n emitField(doc.fields, \'case_id\');\\n emitField(doc.fields, \'patient_uuid\');\\n emitField(doc.fields, \'place_uuid\');\\n }\\n }\\n}"},"reports_by_verification":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([doc.verified], doc.reported_date);\\n }\\n}"},"tasks_by_contact":{"map":"function(doc) {\\n if (doc.type === \'task\') {\\n var isTerminalState = [\'Cancelled\', \'Completed\', \'Failed\'].indexOf(doc.state) >= 0;\\n if (!isTerminalState) {\\n emit(\'owner-\' + (doc.owner || \'_unassigned\'));\\n }\\n\\n if (doc.requester) {\\n emit(\'requester-\' + doc.requester);\\n }\\n }\\n}"},"reports_by_validity":{"map":"function(doc) {\\n if (doc.type === \'data_record\' && doc.form) {\\n emit([!doc.errors || doc.errors.length === 0], doc.reported_date);\\n }\\n}"},"total_clinics_by_facility":{"map":"function(doc) {\\n var districtId = doc.parent && doc.parent.parent && doc.parent.parent._id;\\n if (doc.type === \'clinic\' || (doc.type === \'contact\' && districtId)) {\\n var healthCenterId = doc.parent && doc.parent._id;\\n emit([ districtId, healthCenterId, doc._id, 0 ]);\\n if (doc.contact && doc.contact._id) {\\n emit([ districtId, healthCenterId, doc._id, 1 ], { _id: doc.contact._id });\\n }\\n var index = 2;\\n var parent = doc.parent;\\n while(parent) {\\n if (parent._id) {\\n emit([ districtId, healthCenterId, doc._id, index++ ], { _id: parent._id });\\n }\\n parent = parent.parent;\\n }\\n }\\n}"},"visits_by_date":{"map":"function(doc) {\\n if (doc.type === \'data_record\' &&\\n doc.form &&\\n doc.fields &&\\n doc.fields.visited_contact_uuid) {\\n\\n var visited_date = doc.fields.visited_date ? Date.parse(doc.fields.visited_date) : doc.reported_date;\\n\\n // Is a visit report about a family\\n emit(visited_date, doc.fields.visited_contact_uuid);\\n }\\n}"}}}]'); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/af.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/af.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/src/index.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/src/index.js ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Afrikaans [af] -//! author : Werner Mollentze : https://github.com/wernerm +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +const normalizeStartDate = (intervalStartDate) => { + intervalStartDate = parseInt(intervalStartDate); - //! moment.js locale configuration + if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) { + intervalStartDate = 1; + } - var af = moment.defineLocale('af', { - months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split( - '_' - ), - weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM: function (input) { - return /^nm$/i.test(input); - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Vandag om] LT', - nextDay: '[Môre om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[Gister om] LT', - lastWeek: '[Laas] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'oor %s', - past: '%s gelede', - s: "'n paar sekondes", - ss: '%d sekondes', - m: "'n minuut", - mm: '%d minute', - h: "'n uur", - hh: '%d ure', - d: "'n dag", - dd: '%d dae', - M: "'n maand", - MM: '%d maande', - y: "'n jaar", - yy: '%d jaar', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week: { - dow: 1, // Maandag is die eerste dag van die week. - doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - }, - }); + return intervalStartDate; +}; - return af; +const getMinimumStartDate = (intervalStartDate, relativeDate) => { + return moment + .min( + relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'), + relativeDate.clone().startOf('month') + ) + .valueOf(); +}; -}))); +const getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => { + return moment + .min( + relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'), + relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month') + ) + .valueOf(); +}; +const getInterval = (intervalStartDate, referenceDate = moment()) => { + intervalStartDate = normalizeStartDate(intervalStartDate); + if (intervalStartDate === 1) { + return { + start: referenceDate.startOf('month').valueOf(), + end: referenceDate.endOf('month').valueOf() + }; + } -/***/ }), + if (intervalStartDate <= referenceDate.date()) { + return { + start: referenceDate.date(intervalStartDate).startOf('day').valueOf(), + end: getMinimumEndDate(intervalStartDate, true, referenceDate) + }; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + return { + start: getMinimumStartDate(intervalStartDate, referenceDate), + end: getMinimumEndDate(intervalStartDate, false, referenceDate) + }; +}; -//! moment.js locale configuration -//! locale : Arabic (Algeria) [ar-dz] -//! author : Amine Roukh: https://github.com/Amine27 -//! author : Abdel Said: https://github.com/abdelsaid -//! author : Ahmed Elkhatib -//! author : forabi https://github.com/forabi -//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem +module.exports = { + // Returns the timestamps of the start and end of the current calendar interval + // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) + // + // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned + // f.e. `intervalStartDate` === 31 would generate next intervals : + // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30] + getCurrent: (intervalStartDate) => getInterval(intervalStartDate), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + /** + * Returns the timestamps of the start and end of the a calendar interval that contains a reference date + * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) + * @param {Number} timestamp - the reference date the interval should include + * @returns { start: number, end: number } - timestamps that define the calendar interval + */ + getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)), +}; - //! moment.js locale configuration - var pluralForm = function (n) { - return n === 0 - ? 0 - : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; - }, - plurals = { - s: [ - 'أقل من ثانية', - 'ثانية واحدة', - ['ثانيتان', 'ثانيتين'], - '%d ثوان', - '%d ثانية', - '%d ثانية', - ], - m: [ - 'أقل من دقيقة', - 'دقيقة واحدة', - ['دقيقتان', 'دقيقتين'], - '%d دقائق', - '%d دقيقة', - '%d دقيقة', - ], - h: [ - 'أقل من ساعة', - 'ساعة واحدة', - ['ساعتان', 'ساعتين'], - '%d ساعات', - '%d ساعة', - '%d ساعة', - ], - d: [ - 'أقل من يوم', - 'يوم واحد', - ['يومان', 'يومين'], - '%d أيام', - '%d يومًا', - '%d يوم', - ], - M: [ - 'أقل من شهر', - 'شهر واحد', - ['شهران', 'شهرين'], - '%d أشهر', - '%d شهرا', - '%d شهر', - ], - y: [ - 'أقل من عام', - 'عام واحد', - ['عامان', 'عامين'], - '%d أعوام', - '%d عامًا', - '%d عام', - ], - }, - pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, - months = [ - 'جانفي', - 'فيفري', - 'مارس', - 'أفريل', - 'ماي', - 'جوان', - 'جويلية', - 'أوت', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', - ]; +/***/ }), - var arDz = moment.defineLocale('ar-dz', { - months: months, - monthsShort: months, - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/\u200FM/\u200FYYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar: { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'بعد %s', - past: 'منذ %s', - s: pluralize('s'), - ss: pluralize('s'), - m: pluralize('m'), - mm: pluralize('m'), - h: pluralize('h'), - hh: pluralize('h'), - d: pluralize('d'), - dd: pluralize('d'), - M: pluralize('M'), - MM: pluralize('M'), - y: pluralize('y'), - yy: pluralize('y'), - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js": +/*!*************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js ***! + \*************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return arDz; +const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); +_.uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js"); -}))); +const deepCopy = obj => JSON.parse(JSON.stringify(obj)); +const selfAndParents = function(self) { + const parents = []; + let current = self; + while (current) { + if (parents.includes(current)) { + return parents; + } -/***/ }), + parents.push(current); + current = current.parent; + } + return parents; +}; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +const extractParentIds = current => selfAndParents(current) + .map(parent => parent._id) + .filter(id => id); -//! moment.js locale configuration -//! locale : Arabic (Kuwait) [ar-kw] -//! author : Nusret Parlak: https://github.com/nusretparlak +const getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +const getContactIds = (contacts) => { + const ids = []; + contacts.forEach(doc => { + if (!doc) { + return; + } - //! moment.js locale configuration + const id = utils.getId(doc.contact); + id && ids.push(id); - var arKw = moment.defineLocale('ar-kw', { - months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, + if (!utils.validLinkedDocs(doc)) { + return; + } + Object.keys(doc.linked_docs).forEach(key => { + const id = utils.getId(doc.linked_docs[key]); + id && ids.push(id); }); + }); - return arKw; + return _.uniq(ids); +}; -}))); +module.exports = function(Promise, DB) { + const fillParentsInDocs = function(doc, lineage) { + if (!doc || !lineage.length) { + return doc; + } + // Parent hierarchy starts at the contact for data_records + let currentParent; + if (utils.isReport(doc)) { + currentParent = doc.contact = lineage.shift() || doc.contact; + } else { + // It's a contact + currentParent = doc; + } -/***/ }), + const parentIds = extractParentIds(currentParent.parent); + lineage.forEach(function(l, i) { + currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] }; + currentParent = currentParent.parent; + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + return doc; + }; -//! moment.js locale configuration -//! locale : Arabic (Lybia) [ar-ly] -//! author : Ali Hmer: https://github.com/kikoanis + const fillContactsInDocs = function(docs, contacts) { + if (!contacts || !contacts.length) { + return; + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + docs.forEach(function(doc) { + if (!doc) { + return; + } + const id = utils.getId(doc.contact); + const contactDoc = getContactById(contacts, id); + if (contactDoc) { + doc.contact = deepCopy(contactDoc); + } - //! moment.js locale configuration + if (!utils.validLinkedDocs(doc)) { + return; + } - var symbolMap = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '0': '0', - }, - pluralForm = function (n) { - return n === 0 - ? 0 - : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; - }, - plurals = { - s: [ - 'أقل من ثانية', - 'ثانية واحدة', - ['ثانيتان', 'ثانيتين'], - '%d ثوان', - '%d ثانية', - '%d ثانية', - ], - m: [ - 'أقل من دقيقة', - 'دقيقة واحدة', - ['دقيقتان', 'دقيقتين'], - '%d دقائق', - '%d دقيقة', - '%d دقيقة', - ], - h: [ - 'أقل من ساعة', - 'ساعة واحدة', - ['ساعتان', 'ساعتين'], - '%d ساعات', - '%d ساعة', - '%d ساعة', - ], - d: [ - 'أقل من يوم', - 'يوم واحد', - ['يومان', 'يومين'], - '%d أيام', - '%d يومًا', - '%d يوم', - ], - M: [ - 'أقل من شهر', - 'شهر واحد', - ['شهران', 'شهرين'], - '%d أشهر', - '%d شهرا', - '%d شهر', - ], - y: [ - 'أقل من عام', - 'عام واحد', - ['عامان', 'عامين'], - '%d أعوام', - '%d عامًا', - '%d عام', - ], - }, - pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, - months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', - ]; + Object.keys(doc.linked_docs).forEach(key => { + const id = utils.getId(doc.linked_docs[key]); + const contactDoc = getContactById(contacts, id); + if (contactDoc) { + doc.linked_docs[key] = deepCopy(contactDoc); + } + }); + }); + }; - var arLy = moment.defineLocale('ar-ly', { - months: months, - monthsShort: months, - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/\u200FM/\u200FYYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar: { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'بعد %s', - past: 'منذ %s', - s: pluralize('s'), - ss: pluralize('s'), - m: pluralize('m'), - mm: pluralize('m'), - h: pluralize('h'), - hh: pluralize('h'), - d: pluralize('d'), - dd: pluralize('d'), - M: pluralize('M'), - MM: pluralize('M'), - y: pluralize('y'), - yy: pluralize('y'), - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, + const fetchContacts = function(lineage) { + const contactIds = getContactIds(lineage); + + // Only fetch docs that are new to us + const lineageContacts = []; + const contactsToFetch = []; + contactIds.forEach(function(id) { + const contact = getContactById(lineage, id); + if (contact) { + lineageContacts.push(deepCopy(contact)); + } else { + contactsToFetch.push(id); + } }); - return arLy; + return fetchDocs(contactsToFetch) + .then(function(fetchedContacts) { + return lineageContacts.concat(fetchedContacts); + }); + }; -}))); + const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) { + const doc = lineage.shift(); + fillParentsInDocs(doc, lineage); + if (patientLineage && patientLineage.length) { + const patientDoc = patientLineage.shift(); + fillParentsInDocs(patientDoc, patientLineage); + doc.patient = patientDoc; + } -/***/ }), + if (placeLineage && placeLineage.length) { + const placeDoc = placeLineage.shift(); + fillParentsInDocs(placeDoc, placeLineage); + doc.place = placeDoc; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + return doc; + }; -//! moment.js locale configuration -//! locale : Arabic (Morocco) [ar-ma] -//! author : ElFadili Yassine : https://github.com/ElFadiliY -//! author : Abdel Said : https://github.com/abdelsaid + /* + * @returns {Object} subjectMaps + * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid] + * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid] + */ + const fetchSubjectsUuids = (records) => { + const shortcodes = []; + const recordToPlaceUuidMap = new Map(); + const recordToPatientUuidMap = new Map(); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + records.forEach(record => { + if (!utils.isReport(record)) { + return; + } - //! moment.js locale configuration + const patientId = utils.getPatientId(record); + const placeId = utils.getPlaceId(record); + recordToPatientUuidMap.set(record._id, patientId); + recordToPlaceUuidMap.set(record._id, placeId); - var arMa = moment.defineLocale('ar-ma', { - months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, + shortcodes.push(patientId, placeId); }); - return arMa; + if (!shortcodes.some(shortcode => shortcode)) { + return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }); + } -}))); + return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => { + records.forEach(record => { + const patientShortcode = recordToPatientUuidMap.get(record._id); + recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode)); + const placeShortcode = recordToPlaceUuidMap.get(record._id); + recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode)); + }); -/***/ }), + return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }; + }); + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + /* + * @returns {Object} lineages + * @returns {Array} lineages.patientLineage + * @returns {Array} lineages.placeLineage + */ + const fetchSubjectLineage = (record) => { + if (!utils.isReport(record)) { + return Promise.resolve({ patientLineage: [], placeLineage: [] }); + } -//! moment.js locale configuration -//! locale : Arabic (Saudi Arabia) [ar-sa] -//! author : Suhail Alkowaileet : https://github.com/xsoh + const patientId = utils.getPatientId(record); + const placeId = utils.getPlaceId(record); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + if (!patientId && !placeId) { + return Promise.resolve({ patientLineage: [], placeLineage: [] }); + } - //! moment.js locale configuration + return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => { + const patientUuid = shortcodeToUuidMap.get(patientId); + const placeUuid = shortcodeToUuidMap.get(placeId); - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠', - }, - numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0', - }; + return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => { + const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || []; + const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || []; - var arSa = moment.defineLocale('ar-sa', { - months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - preparse: function (string) { - return string - .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, + return { patientLineage, placeLineage }; + }); }); + }; - return arSa; - -}))); - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + /* + * @returns {Map} map with [k, v] pairs of [shortcode, uuid] + */ + const contactUuidByShortcode = function(shortcodes) { + const keys = shortcodes + .filter(shortcode => shortcode) + .map(shortcode => [ 'shortcode', shortcode ]); -//! moment.js locale configuration -//! locale : Arabic (Tunisia) [ar-tn] -//! author : Nader Toukabri : https://github.com/naderio + return DB.query('medic-client/contacts_by_reference', { keys }) + .then(function(results) { + const findIdWithKey = key => { + const matchingRow = results.rows.find(row => row.key[1] === key); + return matchingRow && matchingRow.id; + }; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ]))); + }); + }; - //! moment.js locale configuration + const fetchLineageById = function(id) { + const options = { + startkey: [id], + endkey: [id, {}], + include_docs: true + }; + return DB.query('medic-client/docs_by_id_lineage', options) + .then(function(result) { + return result.rows.map(function(row) { + return row.doc; + }); + }); + }; - var arTn = moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, + const fetchLineageByIds = function(ids) { + return fetchDocs(ids).then(function(docs) { + return hydrateDocs(docs).then(function(hydratedDocs) { + // Returning a list of docs just like fetchLineageById + const docsList = []; + hydratedDocs.forEach(function(hdoc) { + const docLineage = selfAndParents(hdoc); + docsList.push(docLineage); + }); + return docsList; + }); }); + }; - return arTn; + const fetchDoc = function(id) { + return DB.get(id) + .catch(function(err) { + if (err.status === 404) { + err.statusCode = 404; + } + throw err; + }); + }; -}))); + const fetchHydratedDoc = function(id, options = {}, callback) { + let lineage; + let patientLineage; + let placeLineage; + if (typeof options === 'function') { + callback = options; + options = {}; + } + _.defaults(options, { + throwWhenMissingLineage: false, + }); -/***/ }), + return fetchLineageById(id) + .then(function(result) { + lineage = result; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + if (lineage.length === 0) { + if (options.throwWhenMissingLineage) { + const err = new Error(`Document not found: ${id}`); + err.code = 404; + throw err; + } else { + // Not a doc that has lineage, just do a normal fetch. + return fetchDoc(id); + } + } -//! moment.js locale configuration -//! locale : Arabic [ar] -//! author : Abdel Said: https://github.com/abdelsaid -//! author : Ahmed Elkhatib -//! author : forabi https://github.com/forabi + return fetchSubjectLineage(lineage[0]) + .then((lineages = {}) => { + patientLineage = lineages.patientLineage; + placeLineage = lineages.placeLineage; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + return fetchContacts(lineage.concat(patientLineage, placeLineage)); + }) + .then(function(contacts) { + fillContactsInDocs(lineage, contacts); + fillContactsInDocs(patientLineage, contacts); + fillContactsInDocs(placeLineage, contacts); + return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage); + }); + }) + .then(function(result) { + if (callback) { + callback(null, result); + } + return result; + }) + .catch(function(err) { + if (callback) { + callback(err); + } else { + throw err; + } + }); + }; - //! moment.js locale configuration + // for data_records, include the first-level contact. + const collectParentIds = function(docs) { + const ids = []; + docs.forEach(function(doc) { + let parent = doc.parent; + if (utils.isReport(doc)) { + const contactId = utils.getId(doc.contact); + if (!contactId) { + return; + } + ids.push(contactId); + parent = doc.contact; + } - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠', - }, - numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0', - }, - pluralForm = function (n) { - return n === 0 - ? 0 - : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; - }, - plurals = { - s: [ - 'أقل من ثانية', - 'ثانية واحدة', - ['ثانيتان', 'ثانيتين'], - '%d ثوان', - '%d ثانية', - '%d ثانية', - ], - m: [ - 'أقل من دقيقة', - 'دقيقة واحدة', - ['دقيقتان', 'دقيقتين'], - '%d دقائق', - '%d دقيقة', - '%d دقيقة', - ], - h: [ - 'أقل من ساعة', - 'ساعة واحدة', - ['ساعتان', 'ساعتين'], - '%d ساعات', - '%d ساعة', - '%d ساعة', - ], - d: [ - 'أقل من يوم', - 'يوم واحد', - ['يومان', 'يومين'], - '%d أيام', - '%d يومًا', - '%d يوم', - ], - M: [ - 'أقل من شهر', - 'شهر واحد', - ['شهران', 'شهرين'], - '%d أشهر', - '%d شهرا', - '%d شهر', - ], - y: [ - 'أقل من عام', - 'عام واحد', - ['عامان', 'عامين'], - '%d أعوام', - '%d عامًا', - '%d عام', - ], - }, - pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, - months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', - ]; + ids.push(...extractParentIds(parent)); + }); + return _.uniq(ids); + }; - var ar = moment.defineLocale('ar', { - months: months, - monthsShort: months, - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/\u200FM/\u200FYYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar: { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'بعد %s', - past: 'منذ %s', - s: pluralize('s'), - ss: pluralize('s'), - m: pluralize('m'), - mm: pluralize('m'), - h: pluralize('h'), - hh: pluralize('h'), - d: pluralize('d'), - dd: pluralize('d'), - M: pluralize('M'), - MM: pluralize('M'), - y: pluralize('y'), - yy: pluralize('y'), - }, - preparse: function (string) { - return string - .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, + // for data_records, doesn't include the first-level contact (it counts as a parent). + const collectLeafContactIds = function(partiallyHydratedDocs) { + const ids = []; + partiallyHydratedDocs.forEach(function(doc) { + const startLineageFrom = utils.isReport(doc) ? doc.contact : doc; + ids.push(...getContactIds(selfAndParents(startLineageFrom))); }); - return ar; + return _.uniq(ids); + }; -}))); + const fetchDocs = function(ids) { + if (!ids || !ids.length) { + return Promise.resolve([]); + } + const keys = _.uniq(ids.filter(id => id)); + if (keys.length === 0) { + return Promise.resolve([]); + } + return DB.allDocs({ keys, include_docs: true }) + .then(function(results) { + return results.rows + .map(function(row) { + return row.doc; + }) + .filter(function(doc) { + return !!doc; + }); + }); + }; -/***/ }), + const hydrateDocs = function(docs) { + if (!docs.length) { + return Promise.resolve([]); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/az.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/az.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return + const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched -//! moment.js locale configuration -//! locale : Azerbaijani [az] -//! author : topchiyev : https://github.com/topchiyev + let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid] + let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid] -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + return fetchSubjectsUuids(hydratedDocs) + .then((subjectMaps) => { + placeUuids = subjectMaps.placeUuids; + patientUuids = subjectMaps.patientUuids; - //! moment.js locale configuration + return fetchDocs([...placeUuids.values(), ...patientUuids.values()]); + }) + .then(subjects => { + knownDocs.push(...subjects); - var suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı', - }; + const firstRoundIdsToFetch = _.uniq([ + ...collectParentIds(hydratedDocs), + ...collectLeafContactIds(hydratedDocs), - var az = moment.defineLocale('az', { - months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split( - '_' - ), - monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( - '_' - ), - weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[bugün saat] LT', - nextDay: '[sabah saat] LT', - nextWeek: '[gələn həftə] dddd [saat] LT', - lastDay: '[dünən] LT', - lastWeek: '[keçən həftə] dddd [saat] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s sonra', - past: '%s əvvəl', - s: 'birneçə saniyə', - ss: '%d saniyə', - m: 'bir dəqiqə', - mm: '%d dəqiqə', - h: 'bir saat', - hh: '%d saat', - d: 'bir gün', - dd: '%d gün', - M: 'bir ay', - MM: '%d ay', - y: 'bir il', - yy: '%d il', - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM: function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal: function (number) { - if (number === 0) { - // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = (number % 100) - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + ...collectParentIds(subjects), + ...collectLeafContactIds(subjects), + ]); - return az; + return fetchDocs(firstRoundIdsToFetch); + }) + .then(function(firstRoundFetched) { + knownDocs.push(...firstRoundFetched); + const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched) + .filter(id => !knownDocs.some(doc => doc._id === id)); + return fetchDocs(secondRoundIdsToFetch); + }) + .then(function(secondRoundFetched) { + knownDocs.push(...secondRoundFetched); -}))); + fillContactsInDocs(knownDocs, knownDocs); + hydratedDocs.forEach((doc) => { + const reconstructLineage = (docWithLineage, parents) => { + const parentIds = extractParentIds(docWithLineage); + return parentIds.map(id => { + // how can we use hashmaps? + return getContactById(parents, id); + }); + }; + const isReport = utils.isReport(doc); + const findParentsFor = isReport ? doc.contact : doc; + const lineage = reconstructLineage(findParentsFor, knownDocs); -/***/ }), + if (isReport) { + lineage.unshift(doc); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/be.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/be.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + const patientDoc = getContactById(knownDocs, patientUuids.get(doc._id)); + const patientLineage = reconstructLineage(patientDoc, knownDocs); -//! moment.js locale configuration -//! locale : Belarusian [be] -//! author : Dmitry Demidov : https://github.com/demidov91 -//! author: Praleska: http://praleska.pro/ -//! Author : Menelion Elensúle : https://github.com/Oire + const placeDoc = getContactById(knownDocs, placeUuids.get(doc._id)); + const placeLineage = reconstructLineage(placeDoc, knownDocs); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage); + }); - //! moment.js locale configuration + return hydratedDocs; + }); + }; - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 - ? forms[0] - : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - dd: 'дзень_дні_дзён', - MM: 'месяц_месяцы_месяцаў', - yy: 'год_гады_гадоў', - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } else { - return number + ' ' + plural(format[key], +number); - } + const fetchHydratedDocs = docIds => { + if (!Array.isArray(docIds)) { + return Promise.reject(new Error('Invalid parameter: "docIds" must be an array')); } - var be = moment.defineLocale('be', { - months: { - format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( - '_' - ), - standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( - '_' - ), - }, - monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split( - '_' - ), - weekdays: { - format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( - '_' - ), - standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( - '_' - ), - isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, - }, - weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY г.', - LLL: 'D MMMM YYYY г., HH:mm', - LLLL: 'dddd, D MMMM YYYY г., HH:mm', - }, - calendar: { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'праз %s', - past: '%s таму', - s: 'некалькі секунд', - m: relativeTimeWithPlural, - mm: relativeTimeWithPlural, - h: relativeTimeWithPlural, - hh: relativeTimeWithPlural, - d: 'дзень', - dd: relativeTimeWithPlural, - M: 'месяц', - MM: relativeTimeWithPlural, - y: 'год', - yy: relativeTimeWithPlural, - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM: function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && - number % 100 !== 12 && - number % 100 !== 13 - ? number + '-і' - : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + if (!docIds.length) { + return Promise.resolve([]); + } - return be; + if (docIds.length === 1) { + return fetchHydratedDoc(docIds[0]) + .then(doc => [doc]) + .catch(err => { + if (err.status === 404) { + return []; + } -}))); + throw err; + }); + } + return DB + .allDocs({ keys: docIds, include_docs: true }) + .then(result => { + const docs = result.rows.map(row => row.doc).filter(doc => doc); + return hydrateDocs(docs); + }); + }; -/***/ }), + return { + /** + * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents) + * @param {String} id The id of the doc to fetch and hydrate + * @param {Object} [options] Options for the behavior of the hydration + * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate. + * When false, does a best effort to return the document regardless of content. + * @returns {Promise} A promise to return the hydrated doc. + */ + fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bg.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bg.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + /** + * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc) + * If a doc is not found, it's simply excluded from the results list + * @param {Object[]} docs The array of docs to hydrate + * @returns {Promise} A promise to return the hydrated docs + */ + fetchHydratedDocs: docIds => fetchHydratedDocs(docIds), -//! moment.js locale configuration -//! locale : Bulgarian [bg] -//! author : Krasen Borisov : https://github.com/kraz + /** + * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents) + * @param {Object[]} docs The array of docs to hydrate + * @returns {Promise} + */ + hydrateDocs: docs => hydrateDocs(docs), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + fetchLineageById, + fetchLineageByIds, + fillContactsInDocs, + fillParentsInDocs, + fetchContacts, + }; +}; - //! moment.js locale configuration - var bg = moment.defineLocale('bg', { - months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( - '_' - ), - monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( - '_' - ), - weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'D.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY H:mm', - LLLL: 'dddd, D MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[Днес в] LT', - nextDay: '[Утре в] LT', - nextWeek: 'dddd [в] LT', - lastDay: '[Вчера в] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Миналата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Миналия] dddd [в] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'след %s', - past: 'преди %s', - s: 'няколко секунди', - ss: '%d секунди', - m: 'минута', - mm: '%d минути', - h: 'час', - hh: '%d часа', - d: 'ден', - dd: '%d дена', - M: 'месец', - MM: '%d месеца', - y: 'година', - yy: '%d години', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal: function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ }), - return bg; +/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/index.js": +/*!*********************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/index.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +/** + * @module lineage + */ +module.exports = (Promise, DB) => Object.assign( + {}, + __webpack_require__(/*! ./hydration */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js")(Promise, DB), + __webpack_require__(/*! ./minify */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js") +); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bm.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bm.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js": +/*!**********************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Bambara [bm] -//! author : Estelle Comment : https://github.com/estellecomment +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js"); +const RECURSION_LIMIT = 50; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +// Minifies things you would attach to another doc: +// doc.parent = minify(doc.parent) +// Not: +// minify(doc) +function minifyLineage(parent) { + if (!parent || !parent._id) { + return parent; + } - //! moment.js locale configuration + const docId = parent._id; + const result = { _id: parent._id }; + let minified = result; + for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) { + if (guard === 0) { + throw Error(`Could not minify ${docId}, possible parent recursion.`); + } - var bm = moment.defineLocale('bm', { - months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( - '_' - ), - monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), - weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), - weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), - weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'MMMM [tile] D [san] YYYY', - LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', - LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', - }, - calendar: { - sameDay: '[Bi lɛrɛ] LT', - nextDay: '[Sini lɛrɛ] LT', - nextWeek: 'dddd [don lɛrɛ] LT', - lastDay: '[Kunu lɛrɛ] LT', - lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s kɔnɔ', - past: 'a bɛ %s bɔ', - s: 'sanga dama dama', - ss: 'sekondi %d', - m: 'miniti kelen', - mm: 'miniti %d', - h: 'lɛrɛ kelen', - hh: 'lɛrɛ %d', - d: 'tile kelen', - dd: 'tile %d', - M: 'kalo kelen', - MM: 'kalo %d', - y: 'san kelen', - yy: 'san %d', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + minified.parent = { _id: parent.parent._id }; + minified = minified.parent; + parent = parent.parent; + } - return bm; + return result; +} -}))); +/** + * Remove all hyrdrated items and leave just the ids + * @param {Object} doc The doc to minify + */ +function minify(doc) { + if (!doc) { + return; + } + if (doc.parent) { + doc.parent = minifyLineage(doc.parent); + } + if (doc.contact && doc.contact._id) { + const miniContact = { _id: doc.contact._id }; + if (doc.contact.parent) { + miniContact.parent = minifyLineage(doc.contact.parent); + } + doc.contact = miniContact; + } + if (doc.type === 'data_record') { + delete doc.patient; + delete doc.place; + } + + if (utils.validLinkedDocs(doc)) { + Object.keys(doc.linked_docs).forEach(key => { + doc.linked_docs[key] = utils.getId(doc.linked_docs[key]); + }); + } +} + +module.exports = { + minify, + minifyLineage, +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js": +/*!*********************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Bengali [bn] -//! author : Kaushik Gandhi : https://github.com/kaushikgandhi +const contactTypeUtils = __webpack_require__(/*! @medic/contact-types-utils */ "./node_modules/cht-core-3-13/shared-libs/contact-types-utils/src/index.js"); +const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +const isContact = doc => { + if (!doc) { + return; + } - //! moment.js locale configuration + return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type); +}; - var symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০', - }, - numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0', - }; +const getId = (item) => item && (typeof item === 'string' ? item : item._id); - var bn = moment.defineLocale('bn', { - months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( - '_' - ), - monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( - '_' - ), - weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( - '_' - ), - weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), - weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'), - longDateFormat: { - LT: 'A h:mm সময়', - LTS: 'A h:mm:ss সময়', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm সময়', - LLLL: 'dddd, D MMMM YYYY, A h:mm সময়', - }, - calendar: { - sameDay: '[আজ] LT', - nextDay: '[আগামীকাল] LT', - nextWeek: 'dddd, LT', - lastDay: '[গতকাল] LT', - lastWeek: '[গত] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s পরে', - past: '%s আগে', - s: 'কয়েক সেকেন্ড', - ss: '%d সেকেন্ড', - m: 'এক মিনিট', - mm: '%d মিনিট', - h: 'এক ঘন্টা', - hh: '%d ঘন্টা', - d: 'এক দিন', - dd: '%d দিন', - M: 'এক মাস', - MM: '%d মাস', - y: 'এক বছর', - yy: '%d বছর', - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - (meridiem === 'রাত' && hour >= 4) || - (meridiem === 'দুপুর' && hour < 5) || - meridiem === 'বিকাল' - ) { - return hour + 12; - } else { - return hour; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকাল'; - } else { - return 'রাত'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +// don't process linked docs for non-contact types +// linked_docs property should be a key-value object +const validLinkedDocs = doc => { + return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs); +}; - return bn; +const isReport = (doc) => doc.type === 'data_record'; +const getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id; +const getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id; -}))); + +module.exports = { + getId, + validLinkedDocs, + isReport, + getPatientId, + getPlaceId, +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/src/index.js": +/*!********************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/src/index.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tibetan [bo] -//! author : Thupten N. Chakrishar : https://github.com/vajradog +const uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +const formCodeMatches = (conf, form) => { + return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form); +}; - //! moment.js locale configuration +// Returns whether `doc` is a valid registration against a configuration +// This is done by checks roughly similar to the `registration` transition filter function +// Serves as a replacement for checking for `transitions` metadata within the doc itself +exports.isValidRegistration = (doc, settings) => { + if (!doc || + (doc.errors && doc.errors.length) || + !settings || + !settings.registrations || + doc.type !== 'data_record' || + !doc.form) { + return false; + } - var symbolMap = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠', - }, - numberMap = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0', - }; + // Registration transition should be configured for this form + const registrationConfiguration = settings.registrations.find((conf) => { + return conf && + conf.form && + formCodeMatches(conf.form, doc.form); + }); + if (!registrationConfiguration) { + return false; + } - var bo = moment.defineLocale('bo', { - months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( - '_' - ), - monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( - '_' - ), - monthsShortRegex: /^(ཟླ་\d{1,2})/, - monthsParseExact: true, - weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( - '_' - ), - weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( - '_' - ), - weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm', - LLLL: 'dddd, D MMMM YYYY, A h:mm', - }, - calendar: { - sameDay: '[དི་རིང] LT', - nextDay: '[སང་ཉིན] LT', - nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay: '[ཁ་སང] LT', - lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ལ་', - past: '%s སྔན་ལ', - s: 'ལམ་སང', - ss: '%d སྐར་ཆ།', - m: 'སྐར་མ་གཅིག', - mm: '%d སྐར་མ', - h: 'ཆུ་ཚོད་གཅིག', - hh: '%d ཆུ་ཚོད', - d: 'ཉིན་གཅིག', - dd: '%d ཉིན་', - M: 'ཟླ་བ་གཅིག', - MM: '%d ཟླ་བ', - y: 'ལོ་གཅིག', - yy: '%d ལོ', - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - (meridiem === 'མཚན་མོ' && hour >= 4) || - (meridiem === 'ཉིན་གུང' && hour < 5) || - meridiem === 'དགོང་དག' - ) { - return hour + 12; - } else { - return hour; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); + if (doc.content_type === 'xml') { + return true; + } - return bo; + // SMS forms need to be configured + const form = settings.forms && settings.forms[doc.form]; + if (!form) { + return false; + } -}))); + // Require a known submitter or the form to be public. + return Boolean(form.public_form || doc.contact); +}; +exports._formCodeMatches = formCodeMatches; -/***/ }), +const CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id']; +const REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid']; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/br.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/br.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +exports.getSubjectIds = (doc) => { + const subjectIds = []; -//! moment.js locale configuration -//! locale : Breton [br] -//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + if (!doc) { + return subjectIds; + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + if (doc.type === 'data_record') { + REPORT_SUBJECT_PROPERTIES.forEach(prop => { + if (doc[prop]) { + subjectIds.push(doc[prop]); + } + if (doc.fields && doc.fields[prop]) { + subjectIds.push(doc.fields[prop]); + } + }); + } else { + CONTACT_SUBJECT_PROPERTIES.forEach(prop => { + if (doc[prop]) { + subjectIds.push(doc[prop]); + } + }); + } - //! moment.js locale configuration + return uniq(subjectIds); +}; - function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - mm: 'munutenn', - MM: 'miz', - dd: 'devezh', - }; - return number + ' ' + mutation(format[key], number); - } - function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } - } - function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; +exports.getSubjectId = report => { + if (!report) { + return false; + } + for (const prop of REPORT_SUBJECT_PROPERTIES) { + if (report[prop]) { + return report[prop]; } - function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; + if (report.fields && report.fields[prop]) { + return report.fields[prop]; } - function softMutation(text) { - var mutationTable = { - m: 'v', - b: 'v', - d: 'z', - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; + } +}; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js ***! + \******************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +(function () { + "use strict"; + + function defineArgumentsExtended(extended, is) { + + var pSlice = Array.prototype.slice, + isArguments = is.isArguments; + + function argsToArray(args, slice) { + var i = -1, j = 0, l = args.length, ret = []; + slice = slice || 0; + i += slice; + while (++i < l) { + ret[j++] = args[i]; + } + return ret; } - return mutationTable[text.charAt(0)] + text.substring(1); - } - var monthsParse = [ - /^gen/i, - /^c[ʼ\']hwe/i, - /^meu/i, - /^ebr/i, - /^mae/i, - /^(mez|eve)/i, - /^gou/i, - /^eos/i, - /^gwe/i, - /^her/i, - /^du/i, - /^ker/i, - ], - monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, - monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i, - monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, - fullWeekdaysParse = [ - /^sul/i, - /^lun/i, - /^meurzh/i, - /^merc[ʼ\']her/i, - /^yaou/i, - /^gwener/i, - /^sadorn/i, - ], - shortWeekdaysParse = [ - /^Sul/i, - /^Lun/i, - /^Meu/i, - /^Mer/i, - /^Yao/i, - /^Gwe/i, - /^Sad/i, - ], - minWeekdaysParse = [ - /^Su/i, - /^Lu/i, - /^Me([^r]|$)/i, - /^Mer/i, - /^Ya/i, - /^Gw/i, - /^Sa/i, - ]; - var br = moment.defineLocale('br', { - months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split( - '_' - ), - monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - weekdaysParse: minWeekdaysParse, - fullWeekdaysParse: fullWeekdaysParse, - shortWeekdaysParse: shortWeekdaysParse, - minWeekdaysParse: minWeekdaysParse, + return extended + .define(isArguments, { + toArray: argsToArray + }) + .expose({ + argsToArray: argsToArray + }); + } - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: monthsStrictRegex, - monthsShortStrictRegex: monthsShortStrictRegex, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, + if (true) { + if ( true && module.exports) { + module.exports = defineArgumentsExtended(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")); - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [a viz] MMMM YYYY', - LLL: 'D [a viz] MMMM YYYY HH:mm', - LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Hiziv da] LT', - nextDay: '[Warcʼhoazh da] LT', - nextWeek: 'dddd [da] LT', - lastDay: '[Decʼh da] LT', - lastWeek: 'dddd [paset da] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'a-benn %s', - past: '%s ʼzo', - s: 'un nebeud segondennoù', - ss: '%d eilenn', - m: 'ur vunutenn', - mm: relativeTimeWithMutation, - h: 'un eur', - hh: '%d eur', - d: 'un devezh', - dd: relativeTimeWithMutation, - M: 'ur miz', - MM: relativeTimeWithMutation, - y: 'ur bloaz', - yy: specialMutationForYears, - }, - dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, - ordinal: function (number) { - var output = number === 1 ? 'añ' : 'vet'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn - isPM: function (token) { - return token === 'g.m.'; - }, - meridiem: function (hour, minute, isLower) { - return hour < 12 ? 'a.m.' : 'g.m.'; - }, - }); + } + } else {} - return br; +}).call(this); -}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bs.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bs.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js ***! + \**************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Bosnian [bs] -//! author : Nedim Cholich : https://github.com/frontyard -//! based on (hr) translation by Bojan Marković +(function () { + "use strict"; + /*global define*/ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function defineArray(extended, is, args) { - //! moment.js locale configuration + var isString = is.isString, + isArray = Array.isArray || is.isArray, + isDate = is.isDate, + floor = Math.floor, + abs = Math.abs, + mathMax = Math.max, + mathMin = Math.min, + arrayProto = Array.prototype, + arrayIndexOf = arrayProto.indexOf, + arrayForEach = arrayProto.forEach, + arrayMap = arrayProto.map, + arrayReduce = arrayProto.reduce, + arrayReduceRight = arrayProto.reduceRight, + arrayFilter = arrayProto.filter, + arrayEvery = arrayProto.every, + arraySome = arrayProto.some, + argsToArray = args.argsToArray; - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - if (number === 1) { - result += 'sekunda'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sekunde'; - } else { - result += 'sekundi'; - } - return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; + + function cross(num, cros) { + return reduceRight(cros, function (a, b) { + if (!isArray(b)) { + b = [b]; } - return result; + b.unshift(num); + a.unshift(b); + return a; + }, []); } - } - var bs = moment.defineLocale('bs', { - months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[jučer u] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; + function permute(num, cross, length) { + var ret = []; + for (var i = 0; i < cross.length; i++) { + ret.push([num].concat(rotate(cross, i)).slice(0, length)); + } + return ret; + } + + + function intersection(a, b) { + var ret = [], aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) !== -1) { + ret.push(aOne); } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'prije %s', - s: 'par sekundi', - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: 'dan', - dd: translate, - M: 'mjesec', - MM: translate, - y: 'godinu', - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + } + return ret; + } - return bs; -}))); + var _sort = (function () { + var isAll = function (arr, test) { + return every(arr, test); + }; -/***/ }), + var defaultCmp = function (a, b) { + return a - b; + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ca.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ca.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + var dateSort = function (a, b) { + return a.getTime() - b.getTime(); + }; -//! moment.js locale configuration -//! locale : Catalan [ca] -//! author : Juan G. Hurtado : https://github.com/juanghurtado + return function _sort(arr, property) { + var ret = []; + if (isArray(arr)) { + ret = arr.slice(); + if (property) { + if (typeof property === "function") { + ret.sort(property); + } else { + ret.sort(function (a, b) { + var aProp = a[property], bProp = b[property]; + if (isString(aProp) && isString(bProp)) { + return aProp > bProp ? 1 : aProp < bProp ? -1 : 0; + } else if (isDate(aProp) && isDate(bProp)) { + return aProp.getTime() - bProp.getTime(); + } else { + return aProp - bProp; + } + }); + } + } else { + if (isAll(ret, isString)) { + ret.sort(); + } else if (isAll(ret, isDate)) { + ret.sort(dateSort); + } else { + ret.sort(defaultCmp); + } + } + } + return ret; + }; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + })(); - //! moment.js locale configuration + function indexOf(arr, searchElement, from) { + var index = (from || 0) - 1, + length = arr.length; + while (++index < length) { + if (arr[index] === searchElement) { + return index; + } + } + return -1; + } - var ca = moment.defineLocale('ca', { - months: { - standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( - '_' - ), - format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( - '_' - ), - isFormat: /D[oD]?(\s)+MMMM/, - }, - monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( - '_' - ), - weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM [de] YYYY', - ll: 'D MMM YYYY', - LLL: 'D MMMM [de] YYYY [a les] H:mm', - lll: 'D MMM YYYY, H:mm', - LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', - llll: 'ddd D MMM YYYY, H:mm', - }, - calendar: { - sameDay: function () { - return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - nextDay: function () { - return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - lastDay: function () { - return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [passat a ' + - (this.hours() !== 1 ? 'les' : 'la') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: "d'aquí %s", - past: 'fa %s', - s: 'uns segons', - ss: '%d segons', - m: 'un minut', - mm: '%d minuts', - h: 'una hora', - hh: '%d hores', - d: 'un dia', - dd: '%d dies', - M: 'un mes', - MM: '%d mesos', - y: 'un any', - yy: '%d anys', - }, - dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal: function (number, period) { - var output = - number === 1 - ? 'r' - : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; + function lastIndexOf(arr, searchElement, from) { + if (!isArray(arr)) { + throw new TypeError(); } - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return ca; + var t = Object(arr); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } -}))); + var n = len; + if (arguments.length > 2) { + n = Number(arguments[2]); + if (n !== n) { + n = 0; + } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { + n = (n > 0 || -1) * floor(abs(n)); + } + } + var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n); -/***/ }), + for (; k >= 0; k--) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cs.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cs.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + function filter(arr, iterator, scope) { + if (arr && arrayFilter && arrayFilter === arr.filter) { + return arr.filter(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } -//! moment.js locale configuration -//! locale : Czech [cs] -//! author : petrbela : https://github.com/petrbela + var t = Object(arr); + var len = t.length >>> 0; + var res = []; + for (var i = 0; i < len; i++) { + if (i in t) { + var val = t[i]; // in case fun mutates this + if (iterator.call(scope, val, i, t)) { + res.push(val); + } + } + } + return res; + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function forEach(arr, iterator, scope) { + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + if (arr && arrayForEach && arrayForEach === arr.forEach) { + arr.forEach(iterator, scope); + return arr; + } + for (var i = 0, len = arr.length; i < len; ++i) { + iterator.call(scope || arr, arr[i], i, arr); + } - //! moment.js locale configuration + return arr; + } - var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( - '_' - ), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), - monthsParse = [ - /^led/i, - /^úno/i, - /^bře/i, - /^dub/i, - /^kvě/i, - /^(čvn|červen$|června)/i, - /^(čvc|červenec|července)/i, - /^srp/i, - /^zář/i, - /^říj/i, - /^lis/i, - /^pro/i, - ], - // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. - // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; + function every(arr, iterator, scope) { + if (arr && arrayEvery && arrayEvery === arr.every) { + return arr.every(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + var t = Object(arr); + var len = t.length >>> 0; + for (var i = 0; i < len; i++) { + if (i in t && !iterator.call(scope, t[i], i, t)) { + return false; + } + } + return true; + } - function plural(n) { - return n > 1 && n < 5 && ~~(n / 10) !== 1; - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; - case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'sekundy' : 'sekund'); - } else { - return result + 'sekundami'; + function some(arr, iterator, scope) { + if (arr && arraySome && arraySome === arr.some) { + return arr.some(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + var t = Object(arr); + var len = t.length >>> 0; + for (var i = 0; i < len; i++) { + if (i in t && iterator.call(scope, t[i], i, t)) { + return true; } - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; + } + return false; + } + + function map(arr, iterator, scope) { + if (arr && arrayMap && arrayMap === arr.map) { + return arr.map(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + + var t = Object(arr); + var len = t.length >>> 0; + var res = []; + for (var i = 0; i < len; i++) { + if (i in t) { + res.push(iterator.call(scope, t[i], i, t)); } - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; + } + return res; + } + + function reduce(arr, accumulator, curr) { + var initial = arguments.length > 2; + if (arr && arrayReduce && arrayReduce === arr.reduce) { + return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator); + } + if (!isArray(arr) || typeof accumulator !== "function") { + throw new TypeError(); + } + var i = 0, l = arr.length >> 0; + if (arguments.length < 3) { + if (l === 0) { + throw new TypeError("Array length is 0 and no second argument"); } - case 'd': // a day / in a day / a day ago - return withoutSuffix || isFuture ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; + curr = arr[0]; + i = 1; // start accumulating at the second element + } else { + curr = arguments[2]; + } + while (i < l) { + if (i in arr) { + curr = accumulator.call(undefined, curr, arr[i], i, arr); } - case 'M': // a month / in a month / a month ago - return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; + ++i; + } + return curr; + } + + function reduceRight(arr, accumulator, curr) { + var initial = arguments.length > 2; + if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) { + return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator); + } + if (!isArray(arr) || typeof accumulator !== "function") { + throw new TypeError(); + } + + var t = Object(arr); + var len = t.length >>> 0; + + // no value to return if no initial value, empty array + if (len === 0 && arguments.length === 2) { + throw new TypeError(); + } + + var k = len - 1; + if (arguments.length >= 3) { + curr = arguments[2]; + } else { + do { + if (k in arr) { + curr = arr[k--]; + break; + } } - case 'y': // a year / in a year / a year ago - return withoutSuffix || isFuture ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; + while (true); + } + while (k >= 0) { + if (k in t) { + curr = accumulator.call(undefined, curr, t[k], k, t); } + k--; + } + return curr; } - } - var cs = moment.defineLocale('cs', { - months: months, - monthsShort: monthsShort, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. - // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, - monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd D. MMMM YYYY H:mm', - l: 'D. M. YYYY', - }, - calendar: { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; + + function toArray(o) { + var ret = []; + if (o !== null) { + var args = argsToArray(arguments); + if (args.length === 1) { + if (isArray(o)) { + ret = o; + } else if (is.isHash(o)) { + for (var i in o) { + if (o.hasOwnProperty(i)) { + ret.push([i, o[i]]); + } + } + } else { + ret.push(o); + } + } else { + forEach(args, function (a) { + ret = ret.concat(toArray(a)); + }); } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; + } + return ret; + } + + function sum(array) { + array = array || []; + if (array.length) { + return reduce(array, function (a, b) { + return a + b; + }); + } else { + return 0; + } + } + + function avg(arr) { + arr = arr || []; + if (arr.length) { + var total = sum(arr); + if (is.isNumber(total)) { + return total / arr.length; + } else { + throw new Error("Cannot average an array of non numbers."); } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'před %s', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + } else { + return 0; + } + } - return cs; + function sort(arr, cmp) { + return _sort(arr, cmp); + } -}))); + function min(arr, cmp) { + return _sort(arr, cmp)[0]; + } + function max(arr, cmp) { + return _sort(arr, cmp)[arr.length - 1]; + } -/***/ }), + function difference(arr1) { + var ret = arr1, args = flatten(argsToArray(arguments, 1)); + if (isArray(arr1)) { + ret = filter(arr1, function (a) { + return indexOf(args, a) === -1; + }); + } + return ret; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + function removeDuplicates(arr) { + var ret = [], i = -1, l, retLength = 0; + if (arr) { + l = arr.length; + while (++i < l) { + var item = arr[i]; + if (indexOf(ret, item) === -1) { + ret[retLength++] = item; + } + } + } + return ret; + } -//! moment.js locale configuration -//! locale : Chuvash [cv] -//! author : Anatoly Mironov : https://github.com/mirontoli -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function unique(arr) { + return removeDuplicates(arr); + } - //! moment.js locale configuration - var cv = moment.defineLocale('cv', { - months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( - '_' - ), - monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( - '_' - ), - weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD-MM-YYYY', - LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - }, - calendar: { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L', - }, - relativeTime: { - future: function (output) { - var affix = /сехет$/i.exec(output) - ? 'рен' - : /ҫул$/i.exec(output) - ? 'тан' - : 'ран'; - return output + affix; - }, - past: '%s каялла', - s: 'пӗр-ик ҫеккунт', - ss: '%d ҫеккунт', - m: 'пӗр минут', - mm: '%d минут', - h: 'пӗр сехет', - hh: '%d сехет', - d: 'пӗр кун', - dd: '%d кун', - M: 'пӗр уйӑх', - MM: '%d уйӑх', - y: 'пӗр ҫул', - yy: '%d ҫул', - }, - dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, - ordinal: '%d-мӗш', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + function rotate(arr, numberOfTimes) { + var ret = arr.slice(); + if (typeof numberOfTimes !== "number") { + numberOfTimes = 1; + } + if (numberOfTimes && isArray(arr)) { + if (numberOfTimes > 0) { + ret.push(ret.shift()); + numberOfTimes--; + } else { + ret.unshift(ret.pop()); + numberOfTimes++; + } + return rotate(ret, numberOfTimes); + } else { + return ret; + } + } - return cv; + function permutations(arr, length) { + var ret = []; + if (isArray(arr)) { + var copy = arr.slice(0); + if (typeof length !== "number") { + length = arr.length; + } + if (!length) { + ret = [ + [] + ]; + } else if (length <= arr.length) { + ret = reduce(arr, function (a, b, i) { + var ret; + if (length > 1) { + ret = permute(b, rotate(copy, i).slice(1), length); + } else { + ret = [ + [b] + ]; + } + return a.concat(ret); + }, []); + } + } + return ret; + } -}))); + function zip() { + var ret = []; + var arrs = argsToArray(arguments); + if (arrs.length > 1) { + var arr1 = arrs.shift(); + if (isArray(arr1)) { + ret = reduce(arr1, function (a, b, i) { + var curr = [b]; + for (var j = 0; j < arrs.length; j++) { + var currArr = arrs[j]; + if (isArray(currArr) && !is.isUndefined(currArr[i])) { + curr.push(currArr[i]); + } else { + curr.push(null); + } + } + a.push(curr); + return a; + }, []); + } + } + return ret; + } + function transpose(arr) { + var ret = []; + if (isArray(arr) && arr.length) { + var last; + forEach(arr, function (a) { + if (isArray(a) && (!last || a.length === last.length)) { + forEach(a, function (b, i) { + if (!ret[i]) { + ret[i] = []; + } + ret[i].push(b); + }); + last = a; + } + }); + } + return ret; + } -/***/ }), + function valuesAt(arr, indexes) { + var ret = []; + indexes = argsToArray(arguments); + arr = indexes.shift(); + if (isArray(arr) && indexes.length) { + for (var i = 0, l = indexes.length; i < l; i++) { + ret.push(arr[indexes[i]] || null); + } + } + return ret; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cy.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cy.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + function union() { + var ret = []; + var arrs = argsToArray(arguments); + if (arrs.length > 1) { + for (var i = 0, l = arrs.length; i < l; i++) { + ret = ret.concat(arrs[i]); + } + ret = removeDuplicates(ret); + } + return ret; + } -//! moment.js locale configuration -//! locale : Welsh [cy] -//! author : Robert Allen : https://github.com/robgallen -//! author : https://github.com/ryangreaves + function intersect() { + var collect = [], sets, i = -1 , l; + if (arguments.length > 1) { + //assume we are intersections all the lists in the array + sets = argsToArray(arguments); + } else { + sets = arguments[0]; + } + if (isArray(sets)) { + collect = sets[0]; + i = 0; + l = sets.length; + while (++i < l) { + collect = intersection(collect, sets[i]); + } + } + return removeDuplicates(collect); + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function powerSet(arr) { + var ret = []; + if (isArray(arr) && arr.length) { + ret = reduce(arr, function (a, b) { + var ret = map(a, function (c) { + return c.concat(b); + }); + return a.concat(ret); + }, [ + [] + ]); + } + return ret; + } - //! moment.js locale configuration + function cartesian(a, b) { + var ret = []; + if (isArray(a) && isArray(b) && a.length && b.length) { + ret = cross(a[0], b).concat(cartesian(a.slice(1), b)); + } + return ret; + } - var cy = moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( - '_' - ), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( - '_' - ), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( - '_' - ), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - weekdaysParseExact: true, - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - ss: '%d eiliad', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd', - }, - dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', - 'af', - 'il', - 'ydd', - 'ydd', - 'ed', - 'ed', - 'ed', - 'fed', - 'fed', - 'fed', // 1af to 10fed - 'eg', - 'fed', - 'eg', - 'eg', - 'fed', - 'eg', - 'eg', - 'fed', - 'eg', - 'fed', // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; + function compact(arr) { + var ret = []; + if (isArray(arr) && arr.length) { + ret = filter(arr, function (item) { + return !is.isUndefinedOrNull(item); + }); } - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + return ret; + } - return cy; + function multiply(arr, times) { + times = is.isNumber(times) ? times : 1; + if (!times) { + //make sure times is greater than zero if it is zero then dont multiply it + times = 1; + } + arr = toArray(arr || []); + var ret = [], i = 0; + while (++i <= times) { + ret = ret.concat(arr); + } + return ret; + } -}))); + function flatten(arr) { + var set; + var args = argsToArray(arguments); + if (args.length > 1) { + //assume we are intersections all the lists in the array + set = args; + } else { + set = toArray(arr); + } + return reduce(set, function (a, b) { + return a.concat(b); + }, []); + } + + function pluck(arr, prop) { + prop = prop.split("."); + var result = arr.slice(0); + forEach(prop, function (prop) { + var exec = prop.match(/(\w+)\(\)$/); + result = map(result, function (item) { + return exec ? item[exec[1]]() : item[prop]; + }); + }); + return result; + } + function invoke(arr, func, args) { + args = argsToArray(arguments, 2); + return map(arr, function (item) { + var exec = isString(func) ? item[func] : func; + return exec.apply(item, args); + }); + } -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/da.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/da.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + var array = { + toArray: toArray, + sum: sum, + avg: avg, + sort: sort, + min: min, + max: max, + difference: difference, + removeDuplicates: removeDuplicates, + unique: unique, + rotate: rotate, + permutations: permutations, + zip: zip, + transpose: transpose, + valuesAt: valuesAt, + union: union, + intersect: intersect, + powerSet: powerSet, + cartesian: cartesian, + compact: compact, + multiply: multiply, + flatten: flatten, + pluck: pluck, + invoke: invoke, + forEach: forEach, + map: map, + filter: filter, + reduce: reduce, + reduceRight: reduceRight, + some: some, + every: every, + indexOf: indexOf, + lastIndexOf: lastIndexOf + }; -//! moment.js locale configuration -//! locale : Danish [da] -//! author : Ulrik Nielsen : https://github.com/mrbase + return extended.define(isArray, array).expose(array); + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + if (true) { + if ( true && module.exports) { + module.exports = defineArray(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + } + } else {} - //! moment.js locale configuration +}).call(this); - var da = moment.defineLocale('da', { - months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm', - }, - calendar: { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'på dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[i] dddd[s kl.] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: '%s siden', - s: 'få sekunder', - ss: '%d sekunder', - m: 'et minut', - mm: '%d minutter', - h: 'en time', - hh: '%d timer', - d: 'en dag', - dd: '%d dage', - M: 'en måned', - MM: '%d måneder', - y: 'et år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return da; -}))); -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : German (Austria) [de-at] -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Martin Groller : https://github.com/MadMG -//! author : Mikolaj Dadela : https://github.com/mik01aj -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js ***! + \*********************************************************************************************/ +/***/ ((module) => { - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eine Minute', 'einer Minute'], - h: ['eine Stunde', 'einer Stunde'], - d: ['ein Tag', 'einem Tag'], - dd: [number + ' Tage', number + ' Tagen'], - M: ['ein Monat', 'einem Monat'], - MM: [number + ' Monate', number + ' Monaten'], - y: ['ein Jahr', 'einem Jahr'], - yy: [number + ' Jahre', number + ' Jahren'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; +var charenc = { + // UTF-8 encoding + utf8: { + // Convert a string to a byte array + stringToBytes: function(str) { + return charenc.bin.stringToBytes(unescape(encodeURIComponent(str))); + }, + + // Convert a byte array to a string + bytesToString: function(bytes) { + return decodeURIComponent(escape(charenc.bin.bytesToString(bytes))); } + }, - var deAt = moment.defineLocale('de-at', { - months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( - '_' - ), - weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd, D. MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]', - }, - relativeTime: { - future: 'in %s', - past: 'vor %s', - s: 'ein paar Sekunden', - ss: '%d Sekunden', - m: processRelativeTime, - mm: '%d Minuten', - h: processRelativeTime, - hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + // Binary encoding + bin: { + // Convert a string to a byte array + stringToBytes: function(str) { + for (var bytes = [], i = 0; i < str.length; i++) + bytes.push(str.charCodeAt(i) & 0xFF); + return bytes; + }, - return deAt; + // Convert a byte array to a string + bytesToString: function(bytes) { + for (var str = [], i = 0; i < bytes.length; i++) + str.push(String.fromCharCode(bytes[i])); + return str.join(''); + } + } +}; -}))); +module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : German (Switzerland) [de-ch] -//! author : sschueller : https://github.com/sschueller +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js ***! + \*****************************************************************************************/ +/***/ ((module) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +(function() { + var base64map + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', - //! moment.js locale configuration + crypt = { + // Bit-wise rotation left + rotl: function(n, b) { + return (n << b) | (n >>> (32 - b)); + }, - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eine Minute', 'einer Minute'], - h: ['eine Stunde', 'einer Stunde'], - d: ['ein Tag', 'einem Tag'], - dd: [number + ' Tage', number + ' Tagen'], - M: ['ein Monat', 'einem Monat'], - MM: [number + ' Monate', number + ' Monaten'], - y: ['ein Jahr', 'einem Jahr'], - yy: [number + ' Jahre', number + ' Jahren'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } + // Bit-wise rotation right + rotr: function(n, b) { + return (n << (32 - b)) | (n >>> b); + }, - var deCh = moment.defineLocale('de-ch', { - months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( - '_' - ), - weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd, D. MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]', - }, - relativeTime: { - future: 'in %s', - past: 'vor %s', - s: 'ein paar Sekunden', - ss: '%d Sekunden', - m: processRelativeTime, - mm: '%d Minuten', - h: processRelativeTime, - hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + // Swap big-endian to little-endian and vice versa + endian: function(n) { + // If number given, swap endian + if (n.constructor == Number) { + return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; + } - return deCh; + // Else, assume array and swap all items + for (var i = 0; i < n.length; i++) + n[i] = crypt.endian(n[i]); + return n; + }, -}))); + // Generate an array of any length of random bytes + randomBytes: function(n) { + for (var bytes = []; n > 0; n--) + bytes.push(Math.floor(Math.random() * 256)); + return bytes; + }, + // Convert a byte array to big-endian 32-bit words + bytesToWords: function(bytes) { + for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) + words[b >>> 5] |= bytes[i] << (24 - b % 32); + return words; + }, -/***/ }), + // Convert big-endian 32-bit words to a byte array + wordsToBytes: function(words) { + for (var bytes = [], b = 0; b < words.length * 32; b += 8) + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); + return bytes; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + // Convert a byte array to a hex string + bytesToHex: function(bytes) { + for (var hex = [], i = 0; i < bytes.length; i++) { + hex.push((bytes[i] >>> 4).toString(16)); + hex.push((bytes[i] & 0xF).toString(16)); + } + return hex.join(''); + }, -//! moment.js locale configuration -//! locale : German [de] -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Mikolaj Dadela : https://github.com/mik01aj + // Convert a hex string to a byte array + hexToBytes: function(hex) { + for (var bytes = [], c = 0; c < hex.length; c += 2) + bytes.push(parseInt(hex.substr(c, 2), 16)); + return bytes; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + // Convert a byte array to a base-64 string + bytesToBase64: function(bytes) { + for (var base64 = [], i = 0; i < bytes.length; i += 3) { + var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; + for (var j = 0; j < 4; j++) + if (i * 8 + j * 6 <= bytes.length * 8) + base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); + else + base64.push('='); + } + return base64.join(''); + }, - //! moment.js locale configuration + // Convert a base-64 string to a byte array + base64ToBytes: function(base64) { + // Remove non-base-64 characters + base64 = base64.replace(/[^A-Z0-9+\/]/ig, ''); - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eine Minute', 'einer Minute'], - h: ['eine Stunde', 'einer Stunde'], - d: ['ein Tag', 'einem Tag'], - dd: [number + ' Tage', number + ' Tagen'], - M: ['ein Monat', 'einem Monat'], - MM: [number + ' Monate', number + ' Monaten'], - y: ['ein Jahr', 'einem Jahr'], - yy: [number + ' Jahre', number + ' Jahren'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; + for (var bytes = [], i = 0, imod4 = 0; i < base64.length; + imod4 = ++i % 4) { + if (imod4 == 0) continue; + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) + & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) + | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); + } + return bytes; } + }; - var de = moment.defineLocale('de', { - months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( - '_' - ), - weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd, D. MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]', - }, - relativeTime: { - future: 'in %s', - past: 'vor %s', - s: 'ein paar Sekunden', - ss: '%d Sekunden', - m: processRelativeTime, - mm: '%d Minuten', - h: processRelativeTime, - hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - - return de; - -}))); + module.exports = crypt; +})(); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/dv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/dv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js ***! + \*************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Maldivian [dv] -//! author : Jawish Hameed : https://github.com/jawish +(function () { + "use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function defineDate(extended, is, array) { - //! moment.js locale configuration + function _pad(string, length, ch, end) { + string = "" + string; //check for numbers + ch = ch || " "; + var strLen = string.length; + while (strLen < length) { + if (end) { + string += ch; + } else { + string = ch + string; + } + strLen++; + } + return string; + } - var months = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު', - ], - weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު', - ]; - - var dv = moment.defineLocale('dv', { - months: months, - monthsShort: months, - weekdays: weekdays, - weekdaysShort: weekdays, - weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/M/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /މކ|މފ/, - isPM: function (input) { - return 'މފ' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'މކ'; + function _truncate(string, length, end) { + var ret = string; + if (is.isString(ret)) { + if (string.length > length) { + if (end) { + var l = string.length; + ret = string.substring(l - length, l); + } else { + ret = string.substring(0, length); + } + } } else { - return 'މފ'; + ret = _truncate("" + ret, length); } - }, - calendar: { - sameDay: '[މިއަދު] LT', - nextDay: '[މާދަމާ] LT', - nextWeek: 'dddd LT', - lastDay: '[އިއްޔެ] LT', - lastWeek: '[ފާއިތުވި] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: 'ތެރޭގައި %s', - past: 'ކުރިން %s', - s: 'ސިކުންތުކޮޅެއް', - ss: 'd% ސިކުންތު', - m: 'މިނިޓެއް', - mm: 'މިނިޓު %d', - h: 'ގަޑިއިރެއް', - hh: 'ގަޑިއިރު %d', - d: 'ދުވަހެއް', - dd: 'ދުވަސް %d', - M: 'މަހެއް', - MM: 'މަސް %d', - y: 'އަހަރެއް', - yy: 'އަހަރު %d', - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - dow: 7, // Sunday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); - - return dv; - -}))); - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/el.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/el.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Greek [el] -//! author : Aggelos Karalias : https://github.com/mehiel - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - - //! moment.js locale configuration - - function isFunction(input) { - return ( - (typeof Function !== 'undefined' && input instanceof Function) || - Object.prototype.toString.call(input) === '[object Function]' - ); - } + return ret; + } - var el = moment.defineLocale('el', { - monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( - '_' - ), - monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( - '_' - ), - months: function (momentToFormat, format) { - if (!momentToFormat) { - return this._monthsNominativeEl; - } else if ( - typeof format === 'string' && - /D/.test(format.substring(0, format.indexOf('MMMM'))) - ) { - // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( - '_' - ), - weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; + function every(arr, iterator, scope) { + if (!is.isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); } - }, - isPM: function (input) { - return (input + '').toLowerCase()[0] === 'μ'; - }, - meridiemParse: /[ΠΜ]\.?Μ?\.?/i, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendarEl: { - sameDay: '[Σήμερα {}] LT', - nextDay: '[Αύριο {}] LT', - nextWeek: 'dddd [{}] LT', - lastDay: '[Χθες {}] LT', - lastWeek: function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; + var t = Object(arr); + var len = t.length >>> 0; + for (var i = 0; i < len; i++) { + if (i in t && !iterator.call(scope, t[i], i, t)) { + return false; } - }, - sameElse: 'L', - }, - calendar: function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (isFunction(output)) { - output = output.apply(mom); } - return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); - }, - relativeTime: { - future: 'σε %s', - past: '%s πριν', - s: 'λίγα δευτερόλεπτα', - ss: '%d δευτερόλεπτα', - m: 'ένα λεπτό', - mm: '%d λεπτά', - h: 'μία ώρα', - hh: '%d ώρες', - d: 'μία μέρα', - dd: '%d μέρες', - M: 'ένας μήνας', - MM: '%d μήνες', - y: 'ένας χρόνος', - yy: '%d χρόνια', - }, - dayOfMonthOrdinalParse: /\d{1,2}η/, - ordinal: '%dη', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4st is the first week of the year. - }, - }); - - return el; - -}))); - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (Australia) [en-au] -//! author : Jared Morse : https://github.com/jarcoal + return true; + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration + var transforms = (function () { + var floor = Math.floor, round = Math.round; - var enAu = moment.defineLocale('en-au', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + var addMap = { + day: function addDay(date, amount) { + return [amount, "Date", false]; + }, + weekday: function addWeekday(date, amount) { + // Divide the increment time span into weekspans plus leftover days + // e.g., 8 days is one 5-day weekspan / and two leftover days + // Can't have zero leftover days, so numbers divisible by 5 get + // a days value of 5, and the remaining days make up the number of weeks + var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0; + if (!mod) { + days = (amount > 0) ? 5 : -5; + weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5); + } else { + days = mod; + weeks = parseInt(amount / 5, 10); + } + if (strt === 6 && amount > 0) { + adj = 1; + } else if (strt === 0 && amount < 0) { + // Orig date is Sun / negative increment + // Jump back over Sat + adj = -1; + } + // Get weekday val for the new date + var trgt = strt + days; + // New date is on Sat or Sun + if (trgt === 0 || trgt === 6) { + adj = (amount > 0) ? 2 : -2; + } + // Increment by number of weeks plus leftover days plus + // weekend adjustments + return [(7 * weeks) + days + adj, "Date", false]; + }, + year: function addYear(date, amount) { + return [amount, "FullYear", true]; + }, + week: function addWeek(date, amount) { + return [amount * 7, "Date", false]; + }, + quarter: function addYear(date, amount) { + return [amount * 3, "Month", true]; + }, + month: function addYear(date, amount) { + return [amount, "Month", true]; + } + }; - return enAu; + function addTransform(interval, date, amount) { + interval = interval.replace(/s$/, ""); + if (addMap.hasOwnProperty(interval)) { + return addMap[interval](date, amount); + } + return [amount, "UTC" + interval.charAt(0).toUpperCase() + interval.substring(1) + "s", false]; + } -}))); + var differenceMap = { + "quarter": function quarterDifference(date1, date2, utc) { + var yearDiff = date2.getFullYear() - date1.getFullYear(); + var m1 = date1[utc ? "getUTCMonth" : "getMonth"](); + var m2 = date2[utc ? "getUTCMonth" : "getMonth"](); + // Figure out which quarter the months are in + var q1 = floor(m1 / 3) + 1; + var q2 = floor(m2 / 3) + 1; + // Add quarters for any year difference between the dates + q2 += (yearDiff * 4); + return q2 - q1; + }, -/***/ }), + "weekday": function weekdayDifference(date1, date2, utc) { + var days = differenceTransform("day", date1, date2, utc), weeks; + var mod = days % 7; + // Even number of weeks + if (mod === 0) { + days = differenceTransform("week", date1, date2, utc) * 5; + } else { + // Weeks plus spare change (< 7 days) + var adj = 0, aDay = date1[utc ? "getUTCDay" : "getDay"](), bDay = date2[utc ? "getUTCDay" : "getDay"](); + weeks = parseInt(days / 7, 10); + // Mark the date advanced by the number of + // round weeks (may be zero) + var dtMark = new Date(+date1); + dtMark.setDate(dtMark[utc ? "getUTCDate" : "getDate"]() + (weeks * 7)); + var dayMark = dtMark[utc ? "getUTCDay" : "getDay"](); -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + // Spare change days -- 6 or less + if (days > 0) { + if (aDay === 6 || bDay === 6) { + adj = -1; + } else if (aDay === 0) { + adj = 0; + } else if (bDay === 0 || (dayMark + mod) > 5) { + adj = -2; + } + } else if (days < 0) { + if (aDay === 6) { + adj = 0; + } else if (aDay === 0 || bDay === 0) { + adj = 1; + } else if (bDay === 6 || (dayMark + mod) < 0) { + adj = 2; + } + } + days += adj; + days -= (weeks * 2); + } + return days; + }, + year: function (date1, date2) { + return date2.getFullYear() - date1.getFullYear(); + }, + month: function (date1, date2, utc) { + var m1 = date1[utc ? "getUTCMonth" : "getMonth"](); + var m2 = date2[utc ? "getUTCMonth" : "getMonth"](); + return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12); + }, + week: function (date1, date2, utc) { + return round(differenceTransform("day", date1, date2, utc) / 7); + }, + day: function (date1, date2) { + return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime()); + }, + hour: function (date1, date2) { + return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime()); + }, + minute: function (date1, date2) { + return 0.000016666666666666667 * (date2.getTime() - date1.getTime()); + }, + second: function (date1, date2) { + return 0.001 * (date2.getTime() - date1.getTime()); + }, + millisecond: function (date1, date2) { + return date2.getTime() - date1.getTime(); + } + }; -//! moment.js locale configuration -//! locale : English (Canada) [en-ca] -//! author : Jonathan Abourbih : https://github.com/jonbca -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function differenceTransform(interval, date1, date2, utc) { + interval = interval.replace(/s$/, ""); + return round(differenceMap[interval](date1, date2, utc)); + } - //! moment.js locale configuration - var enCa = moment.defineLocale('en-ca', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'YYYY-MM-DD', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY h:mm A', - LLLL: 'dddd, MMMM D, YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - }); + return { + addTransform: addTransform, + differenceTransform: differenceTransform + }; + }()), + addTransform = transforms.addTransform, + differenceTransform = transforms.differenceTransform; - return enCa; -}))); + /** + * @ignore + * Based on DOJO Date Implementation + * + * Dojo is available under *either* the terms of the modified BSD license *or* the + * Academic Free License version 2.1. As a recipient of Dojo, you may choose which + * license to receive this code under (except as noted in per-module LICENSE + * files). Some modules may not be the copyright of the Dojo Foundation. These + * modules contain explicit declarations of copyright in both the LICENSE files in + * the directories in which they reside and in the code itself. No external + * contributions are allowed under licenses which are fundamentally incompatible + * with the AFL or BSD licenses that Dojo is distributed under. + * + */ + var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs; + var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + var monthAbbr = ["Jan.", "Feb.", "Mar.", "Apr.", "May.", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]; + var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; + var dayAbbr = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + var eraNames = ["Before Christ", "Anno Domini"]; + var eraAbbr = ["BC", "AD"]; -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + function getDayOfYear(/*Date*/dateObject, utc) { + // summary: gets the day of the year as represented by dateObject + return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number + } -//! moment.js locale configuration -//! locale : English (United Kingdom) [en-gb] -//! author : Chris Gedrim : https://github.com/chrisgedrim + function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) { + firstDayOfWeek = firstDayOfWeek || 0; + var fullYear = dateObject[utc ? "getUTCFullYear" : "getFullYear"](); + var firstDayOfYear = new Date(fullYear, 0, 1).getDay(), + adj = (firstDayOfYear - firstDayOfWeek + 7) % 7, + week = floor((getDayOfYear(dateObject) + adj - 1) / 7); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + // if year starts on the specified day, start counting weeks at 1 + if (firstDayOfYear === firstDayOfWeek) { + week++; + } - //! moment.js locale configuration + return week; // Number + } - var enGb = moment.defineLocale('en-gb', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + function getTimezoneName(/*Date*/dateObject) { + var str = dateObject.toString(); + var tz = ''; + var pos = str.indexOf('('); + if (pos > -1) { + tz = str.substring(++pos, str.indexOf(')')); + } + return tz; // String + } - return enGb; -}))); + function buildDateEXP(pattern, tokens) { + return pattern.replace(/([a-z])\1*/ig,function (match) { + // Build a simple regexp. Avoid captures, which would ruin the tokens list + var s, + c = match.charAt(0), + l = match.length, + p2 = '0?', + p3 = '0{0,2}'; + if (c === 'y') { + s = '\\d{2,4}'; + } else if (c === "M") { + s = (l > 2) ? '\\S+?' : '1[0-2]|' + p2 + '[1-9]'; + } else if (c === "D") { + s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]'; + } else if (c === "d") { + s = '3[01]|[12]\\d|' + p2 + '[1-9]'; + } else if (c === "w") { + s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]'; + } else if (c === "E") { + s = '\\S+'; + } else if (c === "h") { + s = '1[0-2]|' + p2 + '[1-9]'; + } else if (c === "K") { + s = '1[01]|' + p2 + '\\d'; + } else if (c === "H") { + s = '1\\d|2[0-3]|' + p2 + '\\d'; + } else if (c === "k") { + s = '1\\d|2[0-4]|' + p2 + '[1-9]'; + } else if (c === "m" || c === "s") { + s = '[0-5]\\d'; + } else if (c === "S") { + s = '\\d{' + l + '}'; + } else if (c === "a") { + var am = 'AM', pm = 'PM'; + s = am + '|' + pm; + if (am !== am.toLowerCase()) { + s += '|' + am.toLowerCase(); + } + if (pm !== pm.toLowerCase()) { + s += '|' + pm.toLowerCase(); + } + s = s.replace(/\./g, "\\."); + } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') { + s = ".*"; + } else { + s = c === " " ? "\\s*" : c + "*"; + } + if (tokens) { + tokens.push(match); + } + return "(" + s + ")"; // add capture + }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace. Need explicit handling of \xa0 for IE. + } -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + /** + * @namespace Utilities for Dates + */ + var date = { -//! moment.js locale configuration -//! locale : English (Ireland) [en-ie] -//! author : Chris Cartlidge : https://github.com/chriscartlidge + /**@lends date*/ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + /** + * Returns the number of days in the month of a date + * + * @example + * + * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28 + * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29 + * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31 + * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30 + * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31 + * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30 + * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31 + * @param {Date} dateObject the date containing the month + * @return {Number} the number of days in the month + */ + getDaysInMonth: function (/*Date*/dateObject) { + // summary: + // Returns the number of days in the month used by dateObject + var month = dateObject.getMonth(); + var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + if (month === 1 && date.isLeapYear(dateObject)) { + return 29; + } // Number + return days[month]; // Number + }, - //! moment.js locale configuration + /** + * Determines if a date is a leap year + * + * @example + * + * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true + * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true + * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true + * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false + * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false + * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false + * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false + * + * @param {Date} dateObject + * @returns {Boolean} true if it is a leap year false otherwise + */ + isLeapYear: function (/*Date*/dateObject, utc) { + var year = dateObject[utc ? "getUTCFullYear" : "getFullYear"](); + return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0); - var enIe = moment.defineLocale('en-ie', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + }, - return enIe; + /** + * Determines if a date is on a weekend + * + * @example + * + * var thursday = new Date(2006, 8, 21); + * var saturday = new Date(2006, 8, 23); + * var sunday = new Date(2006, 8, 24); + * var monday = new Date(2006, 8, 25); + * dateExtender.isWeekend(thursday)); //false + * dateExtender.isWeekend(saturday); //true + * dateExtender.isWeekend(sunday); //true + * dateExtender.isWeekend(monday)); //false + * + * @param {Date} dateObject the date to test + * + * @returns {Boolean} true if the date is a weekend + */ + isWeekend: function (/*Date?*/dateObject, utc) { + // summary: + // Determines if the date falls on a weekend, according to local custom. + var day = (dateObject || new Date())[utc ? "getUTCDay" : "getDay"](); + return day === 0 || day === 6; + }, -}))); + /** + * Get the timezone of a date + * + * @example + * //just setting the strLocal to simulate the toString() of a date + * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)'; + * //just setting the strLocal to simulate the locale + * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT'; + * dateExtender.getTimezoneName(dt); //'CDT' + * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)'; + * dt.strLocale = 'Sun Sep 17 22:57:18 2006'; + * dateExtender.getTimezoneName(dt); //'CDT' + * @param dateObject the date to get the timezone from + * + * @returns {String} the timezone of the date + */ + getTimezoneName: getTimezoneName, + /** + * Compares two dates + * + * @example + * + * var d1 = new Date(); + * d1.setHours(0); + * dateExtender.compare(d1, d1); // 0 + * + * var d1 = new Date(); + * d1.setHours(0); + * var d2 = new Date(); + * d2.setFullYear(2005); + * d2.setHours(12); + * dateExtender.compare(d1, d2, "date"); // 1 + * dateExtender.compare(d1, d2, "datetime"); // 1 + * + * var d1 = new Date(); + * d1.setHours(0); + * var d2 = new Date(); + * d2.setFullYear(2005); + * d2.setHours(12); + * dateExtender.compare(d2, d1, "date"); // -1 + * dateExtender.compare(d1, d2, "time"); //-1 + * + * @param {Date|String} date1 the date to comapare + * @param {Date|String} [date2=new Date()] the date to compare date1 againse + * @param {"date"|"time"|"datetime"} portion compares the portion specified + * + * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2 + */ + compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) { + date1 = new Date(+date1); + date2 = new Date(+(date2 || new Date())); -/***/ }), + if (portion === "date") { + // Ignore times and compare dates. + date1.setHours(0, 0, 0, 0); + date2.setHours(0, 0, 0, 0); + } else if (portion === "time") { + // Ignore dates and compare times. + date1.setFullYear(0, 0, 0); + date2.setFullYear(0, 0, 0); + } + return date1 > date2 ? 1 : date1 < date2 ? -1 : 0; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : English (Israel) [en-il] -//! author : Chris Gedrim : https://github.com/chrisgedrim + /** + * Adds a specified interval and amount to a date + * + * @example + * var dtA = new Date(2005, 11, 27); + * dateExtender.add(dtA, "year", 1); //new Date(2006, 11, 27); + * dateExtender.add(dtA, "years", 1); //new Date(2006, 11, 27); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "quarter", 1); //new Date(2000, 3, 1); + * dateExtender.add(dtA, "quarters", 1); //new Date(2000, 3, 1); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "month", 1); //new Date(2000, 1, 1); + * dateExtender.add(dtA, "months", 1); //new Date(2000, 1, 1); + * + * dtA = new Date(2000, 0, 31); + * dateExtender.add(dtA, "month", 1); //new Date(2000, 1, 29); + * dateExtender.add(dtA, "months", 1); //new Date(2000, 1, 29); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "week", 1); //new Date(2000, 0, 8); + * dateExtender.add(dtA, "weeks", 1); //new Date(2000, 0, 8); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "day", 1); //new Date(2000, 0, 2); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "weekday", 1); //new Date(2000, 0, 3); + * + * dtA = new Date(2000, 0, 1, 11); + * dateExtender.add(dtA, "hour", 1); //new Date(2000, 0, 1, 12); + * + * dtA = new Date(2000, 11, 31, 23, 59); + * dateExtender.add(dtA, "minute", 1); //new Date(2001, 0, 1, 0, 0); + * + * dtA = new Date(2000, 11, 31, 23, 59, 59); + * dateExtender.add(dtA, "second", 1); //new Date(2001, 0, 1, 0, 0, 0); + * + * dtA = new Date(2000, 11, 31, 23, 59, 59, 999); + * dateExtender.add(dtA, "millisecond", 1); //new Date(2001, 0, 1, 0, 0, 0, 0); + * + * @param {Date} date + * @param {String} interval the interval to add + * + * @param {Number} [amount=0] the amount to add + */ + add: function (/*Date*/date, /*String*/interval, /*int*/amount) { + var res = addTransform(interval, date, amount || 0); + amount = res[0]; + var property = res[1]; + var sum = new Date(+date); + var fixOvershoot = res[2]; + if (property) { + sum["set" + property](sum["get" + property]() + amount); + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + if (fixOvershoot && (sum.getDate() < date.getDate())) { + sum.setDate(0); + } - //! moment.js locale configuration + return sum; // Date + }, - var enIl = moment.defineLocale('en-il', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - }); + /** + * Finds the difference between two dates based on the specified interval + * + * @example + * + * var dtA, dtB; + * + * dtA = new Date(2005, 11, 27); + * dtB = new Date(2006, 11, 27); + * dateExtender.difference(dtA, dtB, "year"); //1 + * + * dtA = new Date(2000, 1, 29); + * dtB = new Date(2001, 2, 1); + * dateExtender.difference(dtA, dtB, "quarter"); //4 + * dateExtender.difference(dtA, dtB, "month"); //13 + * + * dtA = new Date(2000, 1, 1); + * dtB = new Date(2000, 1, 8); + * dateExtender.difference(dtA, dtB, "week"); //1 + * + * dtA = new Date(2000, 1, 29); + * dtB = new Date(2000, 2, 1); + * dateExtender.difference(dtA, dtB, "day"); //1 + * + * dtA = new Date(2006, 7, 3); + * dtB = new Date(2006, 7, 11); + * dateExtender.difference(dtA, dtB, "weekday"); //6 + * + * dtA = new Date(2000, 11, 31, 23); + * dtB = new Date(2001, 0, 1, 0); + * dateExtender.difference(dtA, dtB, "hour"); //1 + * + * dtA = new Date(2000, 11, 31, 23, 59); + * dtB = new Date(2001, 0, 1, 0, 0); + * dateExtender.difference(dtA, dtB, "minute"); //1 + * + * dtA = new Date(2000, 11, 31, 23, 59, 59); + * dtB = new Date(2001, 0, 1, 0, 0, 0); + * dateExtender.difference(dtA, dtB, "second"); //1 + * + * dtA = new Date(2000, 11, 31, 23, 59, 59, 999); + * dtB = new Date(2001, 0, 1, 0, 0, 0, 0); + * dateExtender.difference(dtA, dtB, "millisecond"); //1 + * + * + * @param {Date} date1 + * @param {Date} [date2 = new Date()] + * @param {String} [interval = "day"] the intercal to find the difference of. + * + */ + difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) { + date2 = date2 || new Date(); + interval = interval || "day"; + return differenceTransform(interval, date1, date2, utc); + }, + + /** + * Formats a date to the specidifed format string + * + * @example + * + * var date = new Date(2006, 7, 11, 0, 55, 12, 345); + * dateExtender.format(date, "EEEE, MMMM dd, yyyy"); //"Friday, August 11, 2006" + * dateExtender.format(date, "M/dd/yy"); //"8/11/06" + * dateExtender.format(date, "E"); //"6" + * dateExtender.format(date, "h:m a"); //"12:55 AM" + * dateExtender.format(date, 'h:m:s'); //"12:55:12" + * dateExtender.format(date, 'h:m:s.SS'); //"12:55:12.35" + * dateExtender.format(date, 'k:m:s.SS'); //"24:55:12.35" + * dateExtender.format(date, 'H:m:s.SS'); //"0:55:12.35" + * dateExtender.format(date, "ddMMyyyy"); //"11082006" + * + * @param date the date to format + * @param {String} format the format of the date composed of the following options + * + */ + format: function (date, format, utc) { + utc = utc || false; + var fullYear, month, day, d, hour, minute, second, millisecond; + if (utc) { + fullYear = date.getUTCFullYear(); + month = date.getUTCMonth(); + day = date.getUTCDay(); + d = date.getUTCDate(); + hour = date.getUTCHours(); + minute = date.getUTCMinutes(); + second = date.getUTCSeconds(); + millisecond = date.getUTCMilliseconds(); + } else { + fullYear = date.getFullYear(); + month = date.getMonth(); + d = date.getDate(); + day = date.getDay(); + hour = date.getHours(); + minute = date.getMinutes(); + second = date.getSeconds(); + millisecond = date.getMilliseconds(); + } + return format.replace(/([A-Za-z])\1*/g, function (match) { + var s, pad, + c = match.charAt(0), + l = match.length; + if (c === 'd') { + s = "" + d; + pad = true; + } else if (c === "H" && !s) { + s = "" + hour; + pad = true; + } else if (c === 'm' && !s) { + s = "" + minute; + pad = true; + } else if (c === 's') { + if (!s) { + s = "" + second; + } + pad = true; + } else if (c === "G") { + s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1]; + } else if (c === "y") { + s = fullYear; + if (l > 1) { + if (l === 2) { + s = _truncate("" + s, 2, true); + } else { + pad = true; + } + } + } else if (c.toUpperCase() === "Q") { + s = ceil((month + 1) / 3); + pad = true; + } else if (c === "M") { + if (l < 3) { + s = month + 1; + pad = true; + } else { + s = (l === 3 ? monthAbbr : monthNames)[month]; + } + } else if (c === "w") { + s = getWeekOfYear(date, 0, utc); + pad = true; + } else if (c === "D") { + s = getDayOfYear(date, utc); + pad = true; + } else if (c === "E") { + if (l < 3) { + s = day + 1; + pad = true; + } else { + s = (l === -3 ? dayAbbr : dayNames)[day]; + } + } else if (c === 'a') { + s = (hour < 12) ? 'AM' : 'PM'; + } else if (c === "h") { + s = (hour % 12) || 12; + pad = true; + } else if (c === "K") { + s = (hour % 12); + pad = true; + } else if (c === "k") { + s = hour || 24; + pad = true; + } else if (c === "S") { + s = round(millisecond * pow(10, l - 3)); + pad = true; + } else if (c === "z" || c === "v" || c === "Z") { + s = getTimezoneName(date); + if ((c === "z" || c === "v") && !s) { + l = 4; + } + if (!s || c === "Z") { + var offset = date.getTimezoneOffset(); + var tz = [ + (offset >= 0 ? "-" : "+"), + _pad(floor(abs(offset) / 60), 2, "0"), + _pad(abs(offset) % 60, 2, "0") + ]; + if (l === 4) { + tz.splice(0, 0, "GMT"); + tz.splice(3, 0, ":"); + } + s = tz.join(""); + } + } else { + s = match; + } + if (pad) { + s = _pad(s, l, '0'); + } + return s; + }); + } + + }; + + var numberDate = {}; + + function addInterval(interval) { + numberDate[interval + "sFromNow"] = function (val) { + return date.add(new Date(), interval, val); + }; + numberDate[interval + "sAgo"] = function (val) { + return date.add(new Date(), interval, -val); + }; + } + + var intervals = ["year", "month", "day", "hour", "minute", "second"]; + for (var i = 0, l = intervals.length; i < l; i++) { + addInterval(intervals[i]); + } + + var stringDate = { + + parseDate: function (dateStr, format) { + if (!format) { + throw new Error('format required when calling dateExtender.parse'); + } + var tokens = [], regexp = buildDateEXP(format, tokens), + re = new RegExp("^" + regexp + "$", "i"), + match = re.exec(dateStr); + if (!match) { + return null; + } // null + var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end + amPm = "", + valid = every(match, function (v, i) { + if (i) { + var token = tokens[i - 1]; + var l = token.length, type = token.charAt(0); + if (type === 'y') { + if (v < 100) { + v = parseInt(v, 10); + //choose century to apply, according to a sliding window + //of 80 years before and 20 years after present year + var year = '' + new Date().getFullYear(), + century = year.substring(0, 2) * 100, + cutoff = min(year.substring(2, 4) + 20, 99); + result[0] = (v < cutoff) ? century + v : century - 100 + v; + } else { + result[0] = v; + } + } else if (type === "M") { + if (l > 2) { + var months = monthNames, j, k; + if (l === 3) { + months = monthAbbr; + } + //Tolerate abbreviating period in month part + //Case-insensitive comparison + v = v.replace(".", "").toLowerCase(); + var contains = false; + for (j = 0, k = months.length; j < k && !contains; j++) { + var s = months[j].replace(".", "").toLocaleLowerCase(); + if (s === v) { + v = j; + contains = true; + } + } + if (!contains) { + return false; + } + } else { + v--; + } + result[1] = v; + } else if (type === "E" || type === "e") { + var days = dayNames; + if (l === 3) { + days = dayAbbr; + } + //Case-insensitive comparison + v = v.toLowerCase(); + days = array.map(days, function (d) { + return d.toLowerCase(); + }); + var d = array.indexOf(days, v); + if (d === -1) { + v = parseInt(v, 10); + if (isNaN(v) || v > days.length) { + return false; + } + } else { + v = d; + } + } else if (type === 'D' || type === "d") { + if (type === "D") { + result[1] = 0; + } + result[2] = v; + } else if (type === "a") { + var am = "am"; + var pm = "pm"; + var period = /\./g; + v = v.replace(period, '').toLowerCase(); + // we might not have seen the hours field yet, so store the state and apply hour change later + amPm = (v === pm) ? 'p' : (v === am) ? 'a' : ''; + } else if (type === "k" || type === "h" || type === "H" || type === "K") { + if (type === "k" && (+v) === 24) { + v = 0; + } + result[3] = v; + } else if (type === "m") { + result[4] = v; + } else if (type === "s") { + result[5] = v; + } else if (type === "S") { + result[6] = v; + } + } + return true; + }); + if (valid) { + var hours = +result[3]; + //account for am/pm + if (amPm === 'p' && hours < 12) { + result[3] = hours + 12; //e.g., 3pm -> 15 + } else if (amPm === 'a' && hours === 12) { + result[3] = 0; //12am -> 0 + } + var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date + var dateToken = (array.indexOf(tokens, 'd') !== -1), + monthToken = (array.indexOf(tokens, 'M') !== -1), + month = result[1], + day = result[2], + dateMonth = dateObject.getMonth(), + dateDay = dateObject.getDate(); + if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) { + return null; + } + return dateObject; // Date + } else { + return null; + } + } + }; + + + var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate); + for (i in date) { + if (date.hasOwnProperty(i)) { + ret[i] = date[i]; + } + } + + for (i in stringDate) { + if (stringDate.hasOwnProperty(i)) { + ret[i] = stringDate[i]; + } + } + for (i in numberDate) { + if (numberDate.hasOwnProperty(i)) { + ret[i] = numberDate[i]; + } + } + return ret; + } + + if (true) { + if ( true && module.exports) { + module.exports = defineDate(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")); + + } + } else {} + +}).call(this); + + + + + + + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js ***! + \************************************************************************************************/ +/***/ ((module) => { + +(function () { + + /** + * @projectName declare + * @github http://github.com/doug-martin/declare.js + * @header + * + * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js. + * + * ##Installation + * + * `npm install declare.js` + * + * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js)) + * + * ###Requirejs + * + * To use with requirejs place the `declare` source in the root scripts directory + * + * ``` + * + * define(["declare"], function(declare){ + * return declare({ + * instance : { + * hello : function(){ + * return "world"; + * } + * } + * }); + * }); + * + * ``` + * + * + * ##Usage + * + * declare.js provides + * + * Class methods + * + * * `as(module | object, name)` : exports the object to module or the object with the name + * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class. + * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`; + * + * Instance methods + * + * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super + * * `_getSuper()`: returns a this methods direct super. + * * `_static` : use to reference class properties and methods. + * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object. + * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object. + * + * + * ###Declaring a new Class + * + * Creating a new class with declare is easy! + * + * ``` + * + * var Mammal = declare({ + * //define your instance methods and properties + * instance : { + * + * //will be called whenever a new instance is created + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); + * this._type = options.type || "mammal"; + * }, + * + * speak : function() { + * return "A mammal of type " + this._type + " sounds like"; + * }, + * + * //Define your getters + * getters : { + * + * //can be accessed by using the get method. (mammal.get("type")) + * type : function() { + * return this._type; + * } + * }, + * + * //Define your setters + * setters : { + * + * //can be accessed by using the set method. (mammal.set("type", "mammalType")) + * type : function(t) { + * this._type = t; + * } + * } + * }, + * + * //Define your static methods + * static : { + * + * //Mammal.soundOff(); //"Im a mammal!!" + * soundOff : function() { + * return "Im a mammal!!"; + * } + * } + * }); + * + * + * ``` + * + * You can use Mammal just like you would any other class. + * + * ``` + * Mammal.soundOff("Im a mammal!!"); + * + * var myMammal = new Mammal({type : "mymammal"}); + * myMammal.speak(); // "A mammal of type mymammal sounds like" + * myMammal.get("type"); //"mymammal" + * myMammal.set("type", "mammal"); + * myMammal.get("type"); //"mammal" + * + * + * ``` + * + * ###Extending a class + * + * If you want to just extend a single class use the .extend method. + * + * ``` + * + * var Wolf = Mammal.extend({ + * + * //define your instance method + * instance: { + * + * //You can override super constructors just be sure to call `_super` + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); //call our super constructor. + * this._sound = "growl"; + * this._color = options.color || "grey"; + * }, + * + * //override Mammals `speak` method by appending our own data to it. + * speak : function() { + * return this._super(arguments) + " a " + this._sound; + * }, + * + * //add new getters for sound and color + * getters : { + * + * //new Wolf().get("type") + * //notice color is read only as we did not define a setter + * color : function() { + * return this._color; + * }, + * + * //new Wolf().get("sound") + * sound : function() { + * return this._sound; + * } + * }, + * + * setters : { + * + * //new Wolf().set("sound", "howl") + * sound : function(s) { + * this._sound = s; + * } + * } + * + * }, + * + * static : { + * + * //You can override super static methods also! And you can still use _super + * soundOff : function() { + * //You can even call super in your statics!!! + * //should return "I'm a mammal!! that growls" + * return this._super(arguments) + " that growls"; + * } + * } + * }); + * + * Wolf.soundOff(); //Im a mammal!! that growls + * + * var myWolf = new Wolf(); + * myWolf instanceof Mammal //true + * myWolf instanceof Wolf //true + * + * ``` + * + * You can also extend a class by using the declare method and just pass in the super class. + * + * ``` + * //Typical hierarchical inheritance + * // Mammal->Wolf->Dog + * var Dog = declare(Wolf, { + * instance: { + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); + * //override Wolfs initialization of sound to woof. + * this._sound = "woof"; + * + * }, + * + * speak : function() { + * //Should return "A mammal of type mammal sounds like a growl thats domesticated" + * return this._super(arguments) + " thats domesticated"; + * } + * }, + * + * static : { + * soundOff : function() { + * //should return "I'm a mammal!! that growls but now barks" + * return this._super(arguments) + " but now barks"; + * } + * } + * }); + * + * Dog.soundOff(); //Im a mammal!! that growls but now barks + * + * var myDog = new Dog(); + * myDog instanceof Mammal //true + * myDog instanceof Wolf //true + * myDog instanceof Dog //true + * + * + * //Notice you still get the extend method. + * + * // Mammal->Wolf->Dog->Breed + * var Breed = Dog.extend({ + * instance: { + * + * //initialize outside of constructor + * _pitch : "high", + * + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); + * this.breed = options.breed || "lab"; + * }, + * + * speak : function() { + * //Should return "A mammal of type mammal sounds like a + * //growl thats domesticated with a high pitch!" + * return this._super(arguments) + " with a " + this._pitch + " pitch!"; + * }, + * + * getters : { + * pitch : function() { + * return this._pitch; + * } + * } + * }, + * + * static : { + * soundOff : function() { + * //should return "I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!" + * return this._super(arguments).toUpperCase() + "!"; + * } + * } + * }); + * + * + * Breed.soundOff()//"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!" + * + * var myBreed = new Breed({color : "gold", type : "lab"}), + * myBreed instanceof Dog //true + * myBreed instanceof Wolf //true + * myBreed instanceof Mammal //true + * myBreed.speak() //"A mammal of type lab sounds like a woof thats domesticated with a high pitch!" + * myBreed.get("type") //"lab" + * myBreed.get("color") //"gold" + * myBreed.get("sound")" //"woof" + * ``` + * + * ###Multiple Inheritance / Mixins + * + * declare also allows the use of multiple super classes. + * This is useful if you have generic classes that provide functionality but shouldnt be used on their own. + * + * Lets declare a mixin that allows us to watch for property changes. + * + * ``` + * //Notice that we set up the functions outside of declare because we can reuse them + * + * function _set(prop, val) { + * //get the old value + * var oldVal = this.get(prop); + * //call super to actually set the property + * var ret = this._super(arguments); + * //call our handlers + * this.__callHandlers(prop, oldVal, val); + * return ret; + * } + * + * function _callHandlers(prop, oldVal, newVal) { + * //get our handlers for the property + * var handlers = this.__watchers[prop], l; + * //if the handlers exist and their length does not equal 0 then we call loop through them + * if (handlers && (l = handlers.length) !== 0) { + * for (var i = 0; i < l; i++) { + * //call the handler + * handlers[i].call(null, prop, oldVal, newVal); + * } + * } + * } + * + * + * //the watch function + * function _watch(prop, handler) { + * if ("function" !== typeof handler) { + * //if its not a function then its an invalid handler + * throw new TypeError("Invalid handler."); + * } + * if (!this.__watchers[prop]) { + * //create the watchers if it doesnt exist + * this.__watchers[prop] = [handler]; + * } else { + * //otherwise just add it to the handlers array + * this.__watchers[prop].push(handler); + * } + * } + * + * function _unwatch(prop, handler) { + * if ("function" !== typeof handler) { + * throw new TypeError("Invalid handler."); + * } + * var handlers = this.__watchers[prop], index; + * if (handlers && (index = handlers.indexOf(handler)) !== -1) { + * //remove the handler if it is found + * handlers.splice(index, 1); + * } + * } + * + * declare({ + * instance:{ + * constructor:function () { + * this._super(arguments); + * //set up our watchers + * this.__watchers = {}; + * }, + * + * //override the default set function so we can watch values + * "set":_set, + * //set up our callhandlers function + * __callHandlers:_callHandlers, + * //add the watch function + * watch:_watch, + * //add the unwatch function + * unwatch:_unwatch + * }, + * + * "static":{ + * + * init:function () { + * this._super(arguments); + * this.__watchers = {}; + * }, + * //override the default set function so we can watch values + * "set":_set, + * //set our callHandlers function + * __callHandlers:_callHandlers, + * //add the watch + * watch:_watch, + * //add the unwatch function + * unwatch:_unwatch + * } + * }) + * + * ``` + * + * Now lets use the mixin + * + * ``` + * var WatchDog = declare([Dog, WatchMixin]); + * + * var watchDog = new WatchDog(); + * //create our handler + * function watch(id, oldVal, newVal) { + * console.log("watchdog's %s was %s, now %s", id, oldVal, newVal); + * } + * + * //watch for property changes + * watchDog.watch("type", watch); + * watchDog.watch("color", watch); + * watchDog.watch("sound", watch); + * + * //now set the properties each handler will be called + * watchDog.set("type", "newDog"); + * watchDog.set("color", "newColor"); + * watchDog.set("sound", "newSound"); + * + * + * //unwatch the property changes + * watchDog.unwatch("type", watch); + * watchDog.unwatch("color", watch); + * watchDog.unwatch("sound", watch); + * + * //no handlers will be called this time + * watchDog.set("type", "newDog"); + * watchDog.set("color", "newColor"); + * watchDog.set("sound", "newSound"); + * + * + * ``` + * + * ###Accessing static methods and properties witin an instance. + * + * To access static properties on an instance use the `_static` property which is a reference to your constructor. + * + * For example if your in your constructor and you want to have configurable default values. + * + * ``` + * consturctor : function constructor(opts){ + * this.opts = opts || {}; + * this._type = opts.type || this._static.DEFAULT_TYPE; + * } + * ``` + * + * + * + * ###Creating a new instance of within an instance. + * + * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class. + * + * Lets add a reproduce method `Mammal` + * + * ``` + * reproduce : function(options){ + * return new this._static(options); + * } + * ``` + * + * Now in each subclass you can call reproduce and get the proper type. + * + * ``` + * var myDog = new Dog(); + * var myDogsChild = myDog.reproduce(); + * + * myDogsChild instanceof Dog; //true + * ``` + * + * ###Using the `as` + * + * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module. + * + * ``` + * var animals = {}; + * + * Mammal.as(animals, "Dog"); + * Wolf.as(animals, "Wolf"); + * Dog.as(animals, "Dog"); + * Breed.as(animals, "Breed"); + * + * var myDog = new animals.Dog(); + * + * ``` + * + * Or in node + * + * ``` + * Mammal.as(exports, "Dog"); + * Wolf.as(exports, "Wolf"); + * Dog.as(exports, "Dog"); + * Breed.as(exports, "Breed"); + * + * ``` + * + * To export a class as the `module` in node + * + * ``` + * Mammal.as(module); + * ``` + * + * + */ + function createDeclared() { + var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function(); + + var SUPER_REGEXP = /(super)/g; + + function argsToArray(args, slice) { + slice = slice || 0; + return arraySlice.call(args, slice); + } + + function isArray(obj) { + return Object.prototype.toString.call(obj) === "[object Array]"; + } + + function isObject(obj) { + var undef; + return obj !== null && obj !== undef && typeof obj === "object"; + } + + function isHash(obj) { + var ret = isObject(obj); + return ret && obj.constructor === Object; + } + + var isArguments = function _isArguments(object) { + return Object.prototype.toString.call(object) === '[object Arguments]'; + }; + + if (!isArguments(arguments)) { + isArguments = function _isArguments(obj) { + return !!(obj && obj.hasOwnProperty("callee")); + }; + } + + function indexOf(arr, item) { + if (arr && arr.length) { + for (var i = 0, l = arr.length; i < l; i++) { + if (arr[i] === item) { + return i; + } + } + } + return -1; + } + + function merge(target, source, exclude) { + var name, s; + for (name in source) { + if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; + } + + function callSuper(args, a) { + var meta = this.__meta, + supers = meta.supers, + l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; + if (l > pos) { + args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args; + var name = superMeta.name, f = superMeta.f, m; + do { + m = supers[pos][name]; + if ("function" === typeof m && (m = m._f || m) !== f) { + superMeta.pos = 1 + pos; + return m.apply(this, args); + } + } while (l > ++pos); + } + + return null; + } + + function getSuper() { + var meta = this.__meta, + supers = meta.supers, + l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; + if (l > pos) { + var name = superMeta.name, f = superMeta.f, m; + do { + m = supers[pos][name]; + if ("function" === typeof m && (m = m._f || m) !== f) { + superMeta.pos = 1 + pos; + return m.bind(this); + } + } while (l > ++pos); + } + return null; + } + + function getter(name) { + var getters = this.__getters__; + if (getters.hasOwnProperty(name)) { + return getters[name].apply(this); + } else { + return this[name]; + } + } + + function setter(name, val) { + var setters = this.__setters__; + if (isHash(name)) { + for (var i in name) { + var prop = name[i]; + if (setters.hasOwnProperty(i)) { + setters[name].call(this, prop); + } else { + this[i] = prop; + } + } + } else { + if (setters.hasOwnProperty(name)) { + return setters[name].apply(this, argsToArray(arguments, 1)); + } else { + return this[name] = val; + } + } + } + + + function defaultFunction() { + var meta = this.__meta || {}, + supers = meta.supers, + l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; + if (l > pos) { + var name = superMeta.name, f = superMeta.f, m; + do { + m = supers[pos][name]; + if ("function" === typeof m && (m = m._f || m) !== f) { + superMeta.pos = 1 + pos; + return m.apply(this, arguments); + } + } while (l > ++pos); + } + return null; + } + + + function functionWrapper(f, name) { + if (f.toString().match(SUPER_REGEXP)) { + var wrapper = function wrapper() { + var ret, meta = this.__meta || {}; + var orig = meta.superMeta; + meta.superMeta = {f: f, pos: 0, name: name}; + switch (arguments.length) { + case 0: + ret = f.call(this); + break; + case 1: + ret = f.call(this, arguments[0]); + break; + case 2: + ret = f.call(this, arguments[0], arguments[1]); + break; + + case 3: + ret = f.call(this, arguments[0], arguments[1], arguments[2]); + break; + default: + ret = f.apply(this, arguments); + } + meta.superMeta = orig; + return ret; + }; + wrapper._f = f; + return wrapper; + } else { + f._f = f; + return f; + } + } + + function defineMixinProps(child, proto) { + + var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__; + for (var i in operations) { + if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there + __setters[i] = operations[i]; + } + } + operations = proto.getters || {}; + for (i in operations) { + if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there + __getters[i] = operations[i]; + } + } + for (var j in proto) { + if (j !== "getters" && j !== "setters") { + var p = proto[j]; + if ("function" === typeof p) { + if (!child.hasOwnProperty(j)) { + child[j] = functionWrapper(defaultFunction, j); + } + } else { + child[j] = p; + } + } + } + } + + function mixin() { + var args = argsToArray(arguments), l = args.length; + var child = this.prototype; + var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(), + staticSupers = thisMeta.supers || [], supers = childMeta.supers || []; + for (var i = 0; i < l; i++) { + var m = args[i], mProto = m.prototype; + var protoMeta = mProto.__meta, meta = m.__meta; + !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}})); + !meta && (meta = (m.__meta = {proto: m.__proto__ || {}})); + defineMixinProps(child, protoMeta.proto || {}); + defineMixinProps(this, meta.proto || {}); + //copy the bases for static, + + mixinSupers(m.prototype, supers, bases); + mixinSupers(m, staticSupers, staticBases); + } + return this; + } + + function mixinSupers(sup, arr, bases) { + var meta = sup.__meta; + !meta && (meta = (sup.__meta = {})); + var unique = sup.__meta.unique; + !unique && (meta.unique = "declare" + ++classCounter); + //check it we already have this super mixed into our prototype chain + //if true then we have already looped their supers! + if (indexOf(bases, unique) === -1) { + //add their id to our bases + bases.push(unique); + var supers = sup.__meta.supers || [], i = supers.length - 1 || 0; + while (i >= 0) { + mixinSupers(supers[i--], arr, bases); + } + arr.unshift(sup); + } + } + + function defineProps(child, proto) { + var operations = proto.setters, + __setters = child.__setters__, + __getters = child.__getters__; + if (operations) { + for (var i in operations) { + __setters[i] = operations[i]; + } + } + operations = proto.getters || {}; + if (operations) { + for (i in operations) { + __getters[i] = operations[i]; + } + } + for (i in proto) { + if (i != "getters" && i != "setters") { + var f = proto[i]; + if ("function" === typeof f) { + var meta = f.__meta || {}; + if (!meta.isConstructor) { + child[i] = functionWrapper(f, i); + } else { + child[i] = f; + } + } else { + child[i] = f; + } + } + } + + } + + function _export(obj, name) { + if (obj && name) { + obj[name] = this; + } else { + obj.exports = obj = this; + } + return this; + } + + function extend(proto) { + return declare(this, proto); + } + + function getNew(ctor) { + // create object with correct prototype using a do-nothing + // constructor + forceNew.prototype = ctor.prototype; + var t = new forceNew(); + forceNew.prototype = null; // clean up + return t; + } + + + function __declare(child, sup, proto) { + var childProto = {}, supers = []; + var unique = "declare" + ++classCounter, bases = [], staticBases = []; + var instanceSupers = [], staticSupers = []; + var meta = { + supers: instanceSupers, + unique: unique, + bases: bases, + superMeta: { + f: null, + pos: 0, + name: null + } + }; + var childMeta = { + supers: staticSupers, + unique: unique, + bases: staticBases, + isConstructor: true, + superMeta: { + f: null, + pos: 0, + name: null + } + }; + + if (isHash(sup) && !proto) { + proto = sup; + sup = Base; + } + + if ("function" === typeof sup || isArray(sup)) { + supers = isArray(sup) ? sup : [sup]; + sup = supers.shift(); + child.__meta = childMeta; + childProto = getNew(sup); + childProto.__meta = meta; + childProto.__getters__ = merge({}, childProto.__getters__ || {}); + childProto.__setters__ = merge({}, childProto.__setters__ || {}); + child.__getters__ = merge({}, child.__getters__ || {}); + child.__setters__ = merge({}, child.__setters__ || {}); + mixinSupers(sup.prototype, instanceSupers, bases); + mixinSupers(sup, staticSupers, staticBases); + } else { + child.__meta = childMeta; + childProto.__meta = meta; + childProto.__getters__ = childProto.__getters__ || {}; + childProto.__setters__ = childProto.__setters__ || {}; + child.__getters__ = child.__getters__ || {}; + child.__setters__ = child.__setters__ || {}; + } + child.prototype = childProto; + if (proto) { + var instance = meta.proto = proto.instance || {}; + var stat = childMeta.proto = proto.static || {}; + stat.init = stat.init || defaultFunction; + defineProps(childProto, instance); + defineProps(child, stat); + if (!instance.hasOwnProperty("constructor")) { + childProto.constructor = instance.constructor = functionWrapper(defaultFunction, "constructor"); + } else { + childProto.constructor = functionWrapper(instance.constructor, "constructor"); + } + } else { + meta.proto = {}; + childMeta.proto = {}; + child.init = functionWrapper(defaultFunction, "init"); + childProto.constructor = functionWrapper(defaultFunction, "constructor"); + } + if (supers.length) { + mixin.apply(child, supers); + } + if (sup) { + //do this so we mixin our super methods directly but do not ov + merge(child, merge(merge({}, sup), child)); + } + childProto._super = child._super = callSuper; + childProto._getSuper = child._getSuper = getSuper; + childProto._static = child; + } + + function declare(sup, proto) { + function declared() { + switch (arguments.length) { + case 0: + this.constructor.call(this); + break; + case 1: + this.constructor.call(this, arguments[0]); + break; + case 2: + this.constructor.call(this, arguments[0], arguments[1]); + break; + case 3: + this.constructor.call(this, arguments[0], arguments[1], arguments[2]); + break; + default: + this.constructor.apply(this, arguments); + } + } + + __declare(declared, sup, proto); + return declared.init() || declared; + } + + function singleton(sup, proto) { + var retInstance; + + function declaredSingleton() { + if (!retInstance) { + this.constructor.apply(this, arguments); + retInstance = this; + } + return retInstance; + } + + __declare(declaredSingleton, sup, proto); + return declaredSingleton.init() || declaredSingleton; + } + + Base = declare({ + instance: { + "get": getter, + "set": setter + }, + + "static": { + "get": getter, + "set": setter, + mixin: mixin, + extend: extend, + as: _export + } + }); + + declare.singleton = singleton; + return declare; + } + + if (true) { + if ( true && module.exports) { + module.exports = createDeclared(); + } + } else {} +}()); + + + + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js"); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js ***! + \********************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +(function () { + "use strict"; + /*global extender is, dateExtended*/ + + function defineExtended(extender) { + + + var merge = (function merger() { + function _merge(target, source) { + var name, s; + for (name in source) { + if (source.hasOwnProperty(name)) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; + } + + return function merge(obj) { + if (!obj) { + obj = {}; + } + for (var i = 1, l = arguments.length; i < l; i++) { + _merge(obj, arguments[i]); + } + return obj; // Object + }; + }()); + + function getExtended() { + + var loaded = {}; + + + //getInitial instance; + var extended = extender.define(); + extended.expose({ + register: function register(alias, extendWith) { + if (!extendWith) { + extendWith = alias; + alias = null; + } + var type = typeof extendWith; + if (alias) { + extended[alias] = extendWith; + } else if (extendWith && type === "function") { + extended.extend(extendWith); + } else if (type === "object") { + extended.expose(extendWith); + } else { + throw new TypeError("extended.register must be called with an extender function"); + } + return extended; + }, + + define: function () { + return extender.define.apply(extender, arguments); + } + }); + + return extended; + } + + function extended() { + return getExtended(); + } + + extended.define = function define() { + return extender.define.apply(extender, arguments); + }; + + return extended; + } + + if (true) { + if ( true && module.exports) { + module.exports = defineExtended(__webpack_require__(/*! extender */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js")); + + } + } else {} + +}).call(this); + + + + + + + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js ***! + \***********************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +(function () { + /*jshint strict:false*/ + + + /** + * + * @projectName extender + * @github http://github.com/doug-martin/extender + * @header + * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender) + * # Extender + * + * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type. + * + * ## Why Is Extender Different? + * + * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner. + * + * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API. + * + * + * ## Installation + * + * ``` + * npm install extender + * ``` + * + * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js)) + * + * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/). + * + * ### Requirejs + * + * To use with requirejs place the `extend` source in the root scripts directory + * + * ```javascript + * + * define(["extender"], function(extender){ + * }); + * + * ``` + * + * + * ## Usage + * + * **`extender.define(tester, decorations)`** + * + * To create your own extender call the `extender.define` function. + * + * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations` + * + * ```javascript + * function isString(obj) { + * return !isUndefinedOrNull(obj) && (typeof obj === "string" || obj instanceof String); + * } + * + * + * var myExtender = extender.define(isString, { + * multiply: function (str, times) { + * var ret = str; + * for (var i = 1; i < times; i++) { + * ret += str; + * } + * return ret; + * }, + * toArray: function (str, delim) { + * delim = delim || ""; + * return str.split(delim); + * } + * }); + * + * myExtender("hello").multiply(2).value(); //hellohello + * + * ``` + * + * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods. + * + * ```javascript + * + * function isUndefined(obj) { + * var undef; + * return obj === undef; + * } + * + * function isUndefinedOrNull(obj) { + * var undef; + * return obj === undef || obj === null; + * } + * + * function isArray(obj) { + * return Object.prototype.toString.call(obj) === "[object Array]"; + * } + * + * function isBoolean(obj) { + * var undef, type = typeof obj; + * return !isUndefinedOrNull(obj) && type === "boolean" || type === "Boolean"; + * } + * + * function isString(obj) { + * return !isUndefinedOrNull(obj) && (typeof obj === "string" || obj instanceof String); + * } + * + * var myExtender = extender.define({ + * isUndefined : isUndefined, + * isUndefinedOrNull : isUndefinedOrNull, + * isArray : isArray, + * isBoolean : isBoolean, + * isString : isString + * }); + * + * ``` + * + * To use + * + * ``` + * var undef; + * myExtender("hello").isUndefined().value(); //false + * myExtender(undef).isUndefined().value(); //true + * ``` + * + * You can also chain extenders so that they accept multiple types and decorates accordingly. + * + * ```javascript + * myExtender + * .define(isArray, { + * pluck: function (arr, m) { + * var ret = []; + * for (var i = 0, l = arr.length; i < l; i++) { + * ret.push(arr[i][m]); + * } + * return ret; + * } + * }) + * .define(isBoolean, { + * invert: function (val) { + * return !val; + * } + * }); + * + * myExtender([{a: "a"},{a: "b"},{a: "c"}]).pluck("a").value(); //["a", "b", "c"] + * myExtender("I love javascript!").toArray(/\s+/).pluck("0"); //["I", "l", "j"] + * + * ``` + * + * Notice that we reuse the same extender as defined above. + * + * **Return Values** + * + * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned. + * + * **Default decoration methods** + * + * By default every value passed into an extender is decorated with the following methods. + * + * * `value` : The value this extender represents. + * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue` + * * `neq(oterValue)` : Tests strict inequality of the currently represented value. + * * `print` : logs the current value to the console. + * + * **Extender initialization** + * + * When creating an extender you can also specify a constructor which will be invoked with the current value. + * + * ```javascript + * myExtender.define(isString, { + * constructor : function(val){ + * //set our value to the string trimmed + * this._value = val.trimRight().trimLeft(); + * } + * }); + * ``` + * + * **`noWrap`** + * + * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`. + * + * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense. + * + * ``` + * + * var myValidator = extender.define({ + * //chainable validation methods + * //... + * //end chainable validation methods + * + * noWrap : { + * validator : function(){ + * //return your validator + * } + * } + * }); + * + * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value() + * + * + * ``` + * **`extender.extend(extendr)`** + * + * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders. + * + * Suppose you have the following two extenders. + * + * ```javascript + * var myExtender = extender + * .define({ + * isFunction: is.function, + * isNumber: is.number, + * isString: is.string, + * isDate: is.date, + * isArray: is.array, + * isBoolean: is.boolean, + * isUndefined: is.undefined, + * isDefined: is.defined, + * isUndefinedOrNull: is.undefinedOrNull, + * isNull: is.null, + * isArguments: is.arguments, + * isInstanceOf: is.instanceOf, + * isRegExp: is.regExp + * }); + * var myExtender2 = extender.define(is.array, { + * pluck: function (arr, m) { + * var ret = []; + * for (var i = 0, l = arr.length; i < l; i++) { + * ret.push(arr[i][m]); + * } + * return ret; + * }, + * + * noWrap: { + * pluckPlain: function (arr, m) { + * var ret = []; + * for (var i = 0, l = arr.length; i < l; i++) { + * ret.push(arr[i][m]); + * } + * return ret; + * } + * } + * }); + * + * + * ``` + * + * And you do not want to alter either of them but instead what to create a third that is the union of the two. + * + * + * ```javascript + * var composed = extender.extend(myExtender).extend(myExtender2); + * ``` + * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`. + * + * ```javascript + * var extended = composed([ + * {a: "a"}, + * {a: "b"}, + * {a: "c"} + * ]); + * extended.isArray().value(); //true + * extended.pluck("a").value(); // ["a", "b", "c"]); + * + * ``` + * + * **Note** `myExtender` and `myExtender2` will **NOT** be altered. + * + * **`extender.expose(methods)`** + * + * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly. + * + * ``` + * var isMethods = { + * isFunction: is.function, + * isNumber: is.number, + * isString: is.string, + * isDate: is.date, + * isArray: is.array, + * isBoolean: is.boolean, + * isUndefined: is.undefined, + * isDefined: is.defined, + * isUndefinedOrNull: is.undefinedOrNull, + * isNull: is.null, + * isArguments: is.arguments, + * isInstanceOf: is.instanceOf, + * isRegExp: is.regExp + * }; + * + * var myExtender = extender.define(isMethods).expose(isMethods); + * + * myExtender.isArray([]); //true + * myExtender([]).isArray([]).value(); //true + * + * ``` + * + * + * **Using `instanceof`** + * + * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator. + * + * ```javascript + * var str = myExtender("hello"); + * + * str instanceof myExtender; //true + * ``` + * + * ## Examples + * + * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples) + */ + function defineExtender(declare) { + + + var slice = Array.prototype.slice, undef; + + function indexOf(arr, item) { + if (arr && arr.length) { + for (var i = 0, l = arr.length; i < l; i++) { + if (arr[i] === item) { + return i; + } + } + } + return -1; + } + + function isArray(obj) { + return Object.prototype.toString.call(obj) === "[object Array]"; + } + + var merge = (function merger() { + function _merge(target, source, exclude) { + var name, s; + for (name in source) { + if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; + } + + return function merge(obj) { + if (!obj) { + obj = {}; + } + var l = arguments.length; + var exclude = arguments[arguments.length - 1]; + if (isArray(exclude)) { + l--; + } else { + exclude = []; + } + for (var i = 1; i < l; i++) { + _merge(obj, arguments[i], exclude); + } + return obj; // Object + }; + }()); + + + function extender(supers) { + supers = supers || []; + var Base = declare({ + instance: { + constructor: function (value) { + this._value = value; + }, + + value: function () { + return this._value; + }, + + eq: function eq(val) { + return this["__extender__"](this._value === val); + }, + + neq: function neq(other) { + return this["__extender__"](this._value !== other); + }, + print: function () { + console.log(this._value); + return this; + } + } + }), defined = []; + + function addMethod(proto, name, func) { + if ("function" !== typeof func) { + throw new TypeError("when extending type you must provide a function"); + } + var extendedMethod; + if (name === "constructor") { + extendedMethod = function () { + this._super(arguments); + func.apply(this, arguments); + }; + } else { + extendedMethod = function extendedMethod() { + var args = slice.call(arguments); + args.unshift(this._value); + var ret = func.apply(this, args); + return ret !== undef ? this["__extender__"](ret) : this; + }; + } + proto[name] = extendedMethod; + } + + function addNoWrapMethod(proto, name, func) { + if ("function" !== typeof func) { + throw new TypeError("when extending type you must provide a function"); + } + var extendedMethod; + if (name === "constructor") { + extendedMethod = function () { + this._super(arguments); + func.apply(this, arguments); + }; + } else { + extendedMethod = function extendedMethod() { + var args = slice.call(arguments); + args.unshift(this._value); + return func.apply(this, args); + }; + } + proto[name] = extendedMethod; + } + + function decorateProto(proto, decoration, nowrap) { + for (var i in decoration) { + if (decoration.hasOwnProperty(i)) { + if (i !== "getters" && i !== "setters") { + if (i === "noWrap") { + decorateProto(proto, decoration[i], true); + } else if (nowrap) { + addNoWrapMethod(proto, i, decoration[i]); + } else { + addMethod(proto, i, decoration[i]); + } + } else { + proto[i] = decoration[i]; + } + } + } + } + + function _extender(obj) { + var ret = obj, i, l; + if (!(obj instanceof Base)) { + var OurBase = Base; + for (i = 0, l = defined.length; i < l; i++) { + var definer = defined[i]; + if (definer[0](obj)) { + OurBase = OurBase.extend({instance: definer[1]}); + } + } + ret = new OurBase(obj); + ret["__extender__"] = _extender; + } + return ret; + } + + function always() { + return true; + } + + function define(tester, decorate) { + if (arguments.length) { + if (typeof tester === "object") { + decorate = tester; + tester = always; + } + decorate = decorate || {}; + var proto = {}; + decorateProto(proto, decorate); + //handle browsers like which skip over the constructor while looping + if (!proto.hasOwnProperty("constructor")) { + if (decorate.hasOwnProperty("constructor")) { + addMethod(proto, "constructor", decorate.constructor); + } else { + proto.constructor = function () { + this._super(arguments); + }; + } + } + defined.push([tester, proto]); + } + return _extender; + } + + function extend(supr) { + if (supr && supr.hasOwnProperty("__defined__")) { + _extender["__defined__"] = defined = defined.concat(supr["__defined__"]); + } + merge(_extender, supr, ["define", "extend", "expose", "__defined__"]); + return _extender; + } + + _extender.define = define; + _extender.extend = extend; + _extender.expose = function expose() { + var methods; + for (var i = 0, l = arguments.length; i < l; i++) { + methods = arguments[i]; + if (typeof methods === "object") { + merge(_extender, methods, ["define", "extend", "expose", "__defined__"]); + } + } + return _extender; + }; + _extender["__defined__"] = defined; + + + return _extender; + } + + return { + define: function () { + return extender().define.apply(extender, arguments); + }, + + extend: function (supr) { + return extender().define().extend(supr); + } + }; + + } + + if (true) { + if ( true && module.exports) { + module.exports = defineExtender(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")); + + } + } else {} + +}).call(this); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js"); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js ***! + \*****************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +(function () { + "use strict"; + + function defineFunction(extended, is, args) { + + var isArray = is.isArray, + isObject = is.isObject, + isString = is.isString, + isFunction = is.isFunction, + argsToArray = args.argsToArray; + + function spreadArgs(f, args, scope) { + var ret; + switch ((args || []).length) { + case 0: + ret = f.call(scope); + break; + case 1: + ret = f.call(scope, args[0]); + break; + case 2: + ret = f.call(scope, args[0], args[1]); + break; + case 3: + ret = f.call(scope, args[0], args[1], args[2]); + break; + default: + ret = f.apply(scope, args); + } + return ret; + } + + function hitch(scope, method, args) { + args = argsToArray(arguments, 2); + if ((isString(method) && !(method in scope))) { + throw new Error(method + " property not defined in scope"); + } else if (!isString(method) && !isFunction(method)) { + throw new Error(method + " is not a function"); + } + if (isString(method)) { + return function () { + var func = scope[method]; + if (isFunction(func)) { + return spreadArgs(func, args.concat(argsToArray(arguments)), scope); + } else { + return func; + } + }; + } else { + if (args.length) { + return function () { + return spreadArgs(method, args.concat(argsToArray(arguments)), scope); + }; + } else { + + return function () { + return spreadArgs(method, arguments, scope); + }; + } + } + } + + + function applyFirst(method, args) { + args = argsToArray(arguments, 1); + if (!isString(method) && !isFunction(method)) { + throw new Error(method + " must be the name of a property or function to execute"); + } + if (isString(method)) { + return function () { + var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift(); + var func = scope[method]; + if (isFunction(func)) { + scopeArgs = args.concat(scopeArgs); + return spreadArgs(func, scopeArgs, scope); + } else { + return func; + } + }; + } else { + return function () { + var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift(); + scopeArgs = args.concat(scopeArgs); + return spreadArgs(method, scopeArgs, scope); + }; + } + } + + + function hitchIgnore(scope, method, args) { + args = argsToArray(arguments, 2); + if ((isString(method) && !(method in scope))) { + throw new Error(method + " property not defined in scope"); + } else if (!isString(method) && !isFunction(method)) { + throw new Error(method + " is not a function"); + } + if (isString(method)) { + return function () { + var func = scope[method]; + if (isFunction(func)) { + return spreadArgs(func, args, scope); + } else { + return func; + } + }; + } else { + return function () { + return spreadArgs(method, args, scope); + }; + } + } + + + function hitchAll(scope) { + var funcs = argsToArray(arguments, 1); + if (!isObject(scope) && !isFunction(scope)) { + throw new TypeError("scope must be an object"); + } + if (funcs.length === 1 && isArray(funcs[0])) { + funcs = funcs[0]; + } + if (!funcs.length) { + funcs = []; + for (var k in scope) { + if (scope.hasOwnProperty(k) && isFunction(scope[k])) { + funcs.push(k); + } + } + } + for (var i = 0, l = funcs.length; i < l; i++) { + scope[funcs[i]] = hitch(scope, scope[funcs[i]]); + } + return scope; + } + + + function partial(method, args) { + args = argsToArray(arguments, 1); + if (!isString(method) && !isFunction(method)) { + throw new Error(method + " must be the name of a property or function to execute"); + } + if (isString(method)) { + return function () { + var func = this[method]; + if (isFunction(func)) { + var scopeArgs = args.concat(argsToArray(arguments)); + return spreadArgs(func, scopeArgs, this); + } else { + return func; + } + }; + } else { + return function () { + var scopeArgs = args.concat(argsToArray(arguments)); + return spreadArgs(method, scopeArgs, this); + }; + } + } + + function curryFunc(f, execute) { + return function () { + var args = argsToArray(arguments); + return execute ? spreadArgs(f, arguments, this) : function () { + return spreadArgs(f, args.concat(argsToArray(arguments)), this); + }; + }; + } + + + function curry(depth, cb, scope) { + var f; + if (scope) { + f = hitch(scope, cb); + } else { + f = cb; + } + if (depth) { + var len = depth - 1; + for (var i = len; i >= 0; i--) { + f = curryFunc(f, i === len); + } + } + return f; + } + + return extended + .define(isObject, { + bind: hitch, + bindAll: hitchAll, + bindIgnore: hitchIgnore, + curry: function (scope, depth, fn) { + return curry(depth, fn, scope); + } + }) + .define(isFunction, { + bind: function (fn, obj) { + return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this); + }, + bindIgnore: function (fn, obj) { + return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this); + }, + partial: partial, + applyFirst: applyFirst, + curry: function (fn, num, scope) { + return curry(num, fn, scope); + }, + noWrap: { + f: function () { + return this.value(); + } + } + }) + .define(isString, { + bind: function (str, scope) { + return hitch(scope, str); + }, + bindIgnore: function (str, scope) { + return hitchIgnore(scope, str); + }, + partial: partial, + applyFirst: applyFirst, + curry: function (fn, depth, scope) { + return curry(depth, fn, scope); + } + }) + .expose({ + bind: hitch, + bindAll: hitchAll, + bindIgnore: hitchIgnore, + partial: partial, + applyFirst: applyFirst, + curry: curry + }); + + } + + if (true) { + if ( true && module.exports) { + module.exports = defineFunction(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + + } + } else {} + +}).call(this); + + + + + + + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js ***! + \**************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +(function () { + "use strict"; + + function defineHt(_) { + + + var hashFunction = function (key) { + if (typeof key === "string") { + return key; + } else if (typeof key === "object") { + return key.hashCode ? key.hashCode() : "" + key; + } else { + return "" + key; + } + }; + + var Bucket = _.declare({ + + instance: { + + constructor: function () { + this.__entries = []; + this.__keys = []; + this.__values = []; + }, + + pushValue: function (key, value) { + this.__keys.push(key); + this.__values.push(value); + this.__entries.push({key: key, value: value}); + return value; + }, + + remove: function (key) { + var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values; + var i = map.length - 1; + for (; i >= 0; i--) { + if (!!(val = map[i]) && val.key === key) { + map.splice(i, 1); + keys.splice(i, 1); + vals.splice(i, 1); + return val.value; + } + } + return ret; + }, + + "set": function (key, value) { + var ret = null, map = this.__entries, vals = this.__values; + var i = map.length - 1; + for (; i >= 0; i--) { + var val = map[i]; + if (val && key === val.key) { + vals[i] = value; + val.value = value; + ret = value; + break; + } + } + if (!ret) { + map.push({key: key, value: value}); + } + return ret; + }, + + find: function (key) { + var ret = null, map = this.__entries, val; + var i = map.length - 1; + for (; i >= 0; i--) { + val = map[i]; + if (val && key === val.key) { + ret = val.value; + break; + } + } + return ret; + }, + + getEntrySet: function () { + return this.__entries; + }, + + getKeys: function () { + return this.__keys; + }, + + getValues: function (arr) { + return this.__values; + } + } + }); + + return _.declare({ + + instance: { + + constructor: function () { + this.__map = {}; + }, + + entrySet: function () { + var ret = [], map = this.__map; + for (var i in map) { + if (map.hasOwnProperty(i)) { + ret = ret.concat(map[i].getEntrySet()); + } + } + return ret; + }, + + put: function (key, value) { + var hash = hashFunction(key); + var bucket = null; + if (!(bucket = this.__map[hash])) { + bucket = (this.__map[hash] = new Bucket()); + } + bucket.pushValue(key, value); + return value; + }, + + remove: function (key) { + var hash = hashFunction(key), ret = null; + var bucket = this.__map[hash]; + if (bucket) { + ret = bucket.remove(key); + } + return ret; + }, + + "get": function (key) { + var hash = hashFunction(key), ret = null, bucket; + if (!!(bucket = this.__map[hash])) { + ret = bucket.find(key); + } + return ret; + }, + + "set": function (key, value) { + var hash = hashFunction(key), ret = null, bucket = null, map = this.__map; + if (!!(bucket = map[hash])) { + ret = bucket.set(key, value); + } else { + ret = (map[hash] = new Bucket()).pushValue(key, value); + } + return ret; + }, + + contains: function (key) { + var hash = hashFunction(key), ret = false, bucket = null; + if (!!(bucket = this.__map[hash])) { + ret = !!(bucket.find(key)); + } + return ret; + }, + + concat: function (hashTable) { + if (hashTable instanceof this._static) { + var ret = new this._static(); + var otherEntrySet = hashTable.entrySet().concat(this.entrySet()); + for (var i = otherEntrySet.length - 1; i >= 0; i--) { + var e = otherEntrySet[i]; + ret.put(e.key, e.value); + } + return ret; + } else { + throw new TypeError("When joining hashtables the joining arg must be a HashTable"); + } + }, + + filter: function (cb, scope) { + var es = this.entrySet(), ret = new this._static(); + es = _.filter(es, cb, scope); + for (var i = es.length - 1; i >= 0; i--) { + var e = es[i]; + ret.put(e.key, e.value); + } + return ret; + }, + + forEach: function (cb, scope) { + var es = this.entrySet(); + _.forEach(es, cb, scope); + }, + + every: function (cb, scope) { + var es = this.entrySet(); + return _.every(es, cb, scope); + }, + + map: function (cb, scope) { + var es = this.entrySet(); + return _.map(es, cb, scope); + }, + + some: function (cb, scope) { + var es = this.entrySet(); + return _.some(es, cb, scope); + }, + + reduce: function (cb, scope) { + var es = this.entrySet(); + return _.reduce(es, cb, scope); + }, + + reduceRight: function (cb, scope) { + var es = this.entrySet(); + return _.reduceRight(es, cb, scope); + }, + + clear: function () { + this.__map = {}; + }, + + keys: function () { + var ret = [], map = this.__map; + for (var i in map) { + //if (map.hasOwnProperty(i)) { + ret = ret.concat(map[i].getKeys()); + //} + } + return ret; + }, + + values: function () { + var ret = [], map = this.__map; + for (var i in map) { + //if (map.hasOwnProperty(i)) { + ret = ret.concat(map[i].getValues()); + //} + } + return ret; + }, + + isEmpty: function () { + return this.keys().length === 0; + } + } + + }); + + + } + + if (true) { + if ( true && module.exports) { + module.exports = defineHt(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")().register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")).register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")).register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js"))); + + } + } else {} + +}).call(this); + + + + + + + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js ***! + \*********************************************************************************************/ +/***/ ((module) => { + +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js ***! + \***********************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +(function () { + "use strict"; + + function defineIsa(extended) { + + var pSlice = Array.prototype.slice; + + var hasOwn = Object.prototype.hasOwnProperty; + var toStr = Object.prototype.toString; + + function argsToArray(args, slice) { + var i = -1, j = 0, l = args.length, ret = []; + slice = slice || 0; + i += slice; + while (++i < l) { + ret[j++] = args[i]; + } + return ret; + } + + function keys(obj) { + var ret = []; + for (var i in obj) { + if (hasOwn.call(obj, i)) { + ret.push(i); + } + } + return ret; + } + + //taken from node js assert.js + //https://github.com/joyent/node/blob/master/lib/assert.js + function deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (typeof Buffer !== "undefined" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { + if (actual.length !== expected.length) { + return false; + } + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) { + return false; + } + } + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (isDate(actual) && isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (isRegExp(actual) && isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (isString(actual) && isString(expected) && actual !== expected) { + return false; + } else if (typeof actual !== 'object' && typeof expected !== 'object') { + return actual === expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } + } + + + function objEquiv(a, b) { + var key; + if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { + return false; + } + // an identical 'prototype' property. + if (a.prototype !== b.prototype) { + return false; + } + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return deepEqual(a, b); + } + try { + var ka = keys(a), + kb = keys(b), + i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) { + return false; + } + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) { + return false; + } + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!deepEqual(a[key], b[key])) { + return false; + } + } + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + return true; + } + + + var isFunction = function (obj) { + return toStr.call(obj) === '[object Function]'; + }; + + //ie hack + if ("undefined" !== typeof window && !isFunction(window.alert)) { + (function (alert) { + isFunction = function (obj) { + return toStr.call(obj) === '[object Function]' || obj === alert; + }; + }(window.alert)); + } + + function isObject(obj) { + var undef; + return obj !== null && typeof obj === "object"; + } + + function isHash(obj) { + var ret = isObject(obj); + return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval; + } + + function isEmpty(object) { + if (isArguments(object)) { + return object.length === 0; + } else if (isObject(object)) { + return keys(object).length === 0; + } else if (isString(object) || isArray(object)) { + return object.length === 0; + } + return true; + } + + function isBoolean(obj) { + return obj === true || obj === false || toStr.call(obj) === "[object Boolean]"; + } + + function isUndefined(obj) { + return typeof obj === 'undefined'; + } + + function isDefined(obj) { + return !isUndefined(obj); + } + + function isUndefinedOrNull(obj) { + return isUndefined(obj) || isNull(obj); + } + + function isNull(obj) { + return obj === null; + } + + + var isArguments = function _isArguments(object) { + return toStr.call(object) === '[object Arguments]'; + }; + + if (!isArguments(arguments)) { + isArguments = function _isArguments(obj) { + return !!(obj && hasOwn.call(obj, "callee")); + }; + } + + + function isInstanceOf(obj, clazz) { + if (isFunction(clazz)) { + return obj instanceof clazz; + } else { + return false; + } + } + + function isRegExp(obj) { + return toStr.call(obj) === '[object RegExp]'; + } + + var isArray = Array.isArray || function isArray(obj) { + return toStr.call(obj) === "[object Array]"; + }; + + function isDate(obj) { + return toStr.call(obj) === '[object Date]'; + } + + function isString(obj) { + return toStr.call(obj) === '[object String]'; + } + + function isNumber(obj) { + return toStr.call(obj) === '[object Number]'; + } + + function isTrue(obj) { + return obj === true; + } + + function isFalse(obj) { + return obj === false; + } + + function isNotNull(obj) { + return !isNull(obj); + } + + function isEq(obj, obj2) { + /*jshint eqeqeq:false*/ + return obj == obj2; + } + + function isNeq(obj, obj2) { + /*jshint eqeqeq:false*/ + return obj != obj2; + } + + function isSeq(obj, obj2) { + return obj === obj2; + } + + function isSneq(obj, obj2) { + return obj !== obj2; + } + + function isIn(obj, arr) { + if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) { + return arr.indexOf(obj) > -1; + } else if (isArray(arr)) { + for (var i = 0, l = arr.length; i < l; i++) { + if (isEq(obj, arr[i])) { + return true; + } + } + } + return false; + } + + function isNotIn(obj, arr) { + return !isIn(obj, arr); + } + + function isLt(obj, obj2) { + return obj < obj2; + } - return enIl; + function isLte(obj, obj2) { + return obj <= obj2; + } -}))); + function isGt(obj, obj2) { + return obj > obj2; + } + function isGte(obj, obj2) { + return obj >= obj2; + } -/***/ }), + function isLike(obj, reg) { + if (isString(reg)) { + return ("" + obj).match(reg) !== null; + } else if (isRegExp(reg)) { + return reg.test(obj); + } + return false; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + function isNotLike(obj, reg) { + return !isLike(obj, reg); + } -//! moment.js locale configuration -//! locale : English (India) [en-in] -//! author : Jatin Agrawal : https://github.com/jatinag22 + function contains(arr, obj) { + return isIn(obj, arr); + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function notContains(arr, obj) { + return !isIn(obj, arr); + } - //! moment.js locale configuration + function containsAt(arr, obj, index) { + if (isArray(arr) && arr.length > index) { + return isEq(arr[index], obj); + } + return false; + } - var enIn = moment.defineLocale('en-in', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 1st is the first week of the year. - }, - }); + function notContainsAt(arr, obj, index) { + if (isArray(arr)) { + return !isEq(arr[index], obj); + } + return false; + } - return enIn; + function has(obj, prop) { + return hasOwn.call(obj, prop); + } -}))); + function notHas(obj, prop) { + return !has(obj, prop); + } + function length(obj, l) { + if (has(obj, "length")) { + return obj.length === l; + } + return false; + } -/***/ }), + function notLength(obj, l) { + if (has(obj, "length")) { + return obj.length !== l; + } + return false; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + var isa = { + isFunction: isFunction, + isObject: isObject, + isEmpty: isEmpty, + isHash: isHash, + isNumber: isNumber, + isString: isString, + isDate: isDate, + isArray: isArray, + isBoolean: isBoolean, + isUndefined: isUndefined, + isDefined: isDefined, + isUndefinedOrNull: isUndefinedOrNull, + isNull: isNull, + isArguments: isArguments, + instanceOf: isInstanceOf, + isRegExp: isRegExp, + deepEqual: deepEqual, + isTrue: isTrue, + isFalse: isFalse, + isNotNull: isNotNull, + isEq: isEq, + isNeq: isNeq, + isSeq: isSeq, + isSneq: isSneq, + isIn: isIn, + isNotIn: isNotIn, + isLt: isLt, + isLte: isLte, + isGt: isGt, + isGte: isGte, + isLike: isLike, + isNotLike: isNotLike, + contains: contains, + notContains: notContains, + has: has, + notHas: notHas, + isLength: length, + isNotLength: notLength, + containsAt: containsAt, + notContainsAt: notContainsAt + }; -//! moment.js locale configuration -//! locale : English (New Zealand) [en-nz] -//! author : Luke McGregor : https://github.com/lukemcgregor + var tester = { + constructor: function () { + this._testers = []; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + noWrap: { + tester: function () { + var testers = this._testers; + return function tester(value) { + var isa = false; + for (var i = 0, l = testers.length; i < l && !isa; i++) { + isa = testers[i](value); + } + return isa; + }; + } + } + }; - //! moment.js locale configuration + var switcher = { + constructor: function () { + this._cases = []; + this.__default = null; + }, - var enNz = moment.defineLocale('en-nz', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + def: function (val, fn) { + this.__default = fn; + }, - return enNz; + noWrap: { + switcher: function () { + var testers = this._cases, __default = this.__default; + return function tester() { + var handled = false, args = argsToArray(arguments), caseRet; + for (var i = 0, l = testers.length; i < l && !handled; i++) { + caseRet = testers[i](args); + if (caseRet.length > 1) { + if (caseRet[1] || caseRet[0]) { + return caseRet[1]; + } + } + } + if (!handled && __default) { + return __default.apply(this, args); + } + }; + } + } + }; + + function addToTester(func) { + tester[func] = function isaTester() { + this._testers.push(isa[func]); + }; + } + + function addToSwitcher(func) { + switcher[func] = function isaTester() { + var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true; + if (args.length <= isFunc.length - 1) { + throw new TypeError("A handler must be defined when calling using switch"); + } else { + handler = args.pop(); + if (isBoolean(handler)) { + doBreak = handler; + handler = args.pop(); + } + } + if (!isFunction(handler)) { + throw new TypeError("handler must be defined"); + } + this._cases.push(function (testArgs) { + if (isFunc.apply(isa, testArgs.concat(args))) { + return [doBreak, handler.apply(this, testArgs)]; + } + return [false]; + }); + }; + } + + for (var i in isa) { + if (hasOwn.call(isa, i)) { + addToSwitcher(i); + addToTester(i); + } + } + + var is = extended.define(isa).expose(isa); + is.tester = extended.define(tester); + is.switcher = extended.define(switcher); + return is; + + } + + if (true) { + if ( true && module.exports) { + module.exports = defineIsa(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")); + + } + } else {} + +}).call(this); -}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js ***! + \*****************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : English (Singapore) [en-sg] -//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension +(function () { + "use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + function defineLeafy(_) { - //! moment.js locale configuration + function compare(a, b) { + var ret = 0; + if (a > b) { + return 1; + } else if (a < b) { + return -1; + } else if (!b) { + return 1; + } + return ret; + } + + var multiply = _.multiply; + + var Tree = _.declare({ + + instance: { + + /** + * Prints a node + * @param node node to print + * @param level the current level the node is at, Used for formatting + */ + __printNode: function (node, level) { + //console.log(level); + var str = []; + if (_.isUndefinedOrNull(node)) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push(node.data + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + }, + + constructor: function (options) { + options = options || {}; + this.compare = options.compare || compare; + this.__root = null; + }, + + insert: function () { + throw new Error("Not Implemented"); + }, + + remove: function () { + throw new Error("Not Implemented"); + }, + + clear: function () { + this.__root = null; + }, + + isEmpty: function () { + return !(this.__root); + }, + + traverseWithCondition: function (node, order, callback) { + var cont = true; + if (node) { + order = order || Tree.PRE_ORDER; + if (order === Tree.PRE_ORDER) { + cont = callback(node.data); + if (cont) { + cont = this.traverseWithCondition(node.left, order, callback); + if (cont) { + cont = this.traverseWithCondition(node.right, order, callback); + } + + } + } else if (order === Tree.IN_ORDER) { + cont = this.traverseWithCondition(node.left, order, callback); + if (cont) { + cont = callback(node.data); + if (cont) { + cont = this.traverseWithCondition(node.right, order, callback); + } + } + } else if (order === Tree.POST_ORDER) { + cont = this.traverseWithCondition(node.left, order, callback); + if (cont) { + if (cont) { + cont = this.traverseWithCondition(node.right, order, callback); + } + if (cont) { + cont = callback(node.data); + } + } + } else if (order === Tree.REVERSE_ORDER) { + cont = this.traverseWithCondition(node.right, order, callback); + if (cont) { + cont = callback(node.data); + if (cont) { + cont = this.traverseWithCondition(node.left, order, callback); + } + } + } + } + return cont; + }, + + traverse: function (node, order, callback) { + if (node) { + order = order || Tree.PRE_ORDER; + if (order === Tree.PRE_ORDER) { + callback(node.data); + this.traverse(node.left, order, callback); + this.traverse(node.right, order, callback); + } else if (order === Tree.IN_ORDER) { + this.traverse(node.left, order, callback); + callback(node.data); + this.traverse(node.right, order, callback); + } else if (order === Tree.POST_ORDER) { + this.traverse(node.left, order, callback); + this.traverse(node.right, order, callback); + callback(node.data); + } else if (order === Tree.REVERSE_ORDER) { + this.traverse(node.right, order, callback); + callback(node.data); + this.traverse(node.left, order, callback); + + } + } + }, + + forEach: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + order = order || Tree.IN_ORDER; + scope = scope || this; + this.traverse(this.__root, order, function (node) { + cb.call(scope, node, this); + }); + }, + + map: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret = new this._static(); + this.traverse(this.__root, order, function (node) { + ret.insert(cb.call(scope, node, this)); + }); + return ret; + }, + + filter: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret = new this._static(); + this.traverse(this.__root, order, function (node) { + if (cb.call(scope, node, this)) { + ret.insert(node); + } + }); + return ret; + }, + + reduce: function (fun, accumulator, order) { + var arr = this.toArray(order); + var args = [arr, fun]; + if (!_.isUndefinedOrNull(accumulator)) { + args.push(accumulator); + } + return _.reduce.apply(_, args); + }, + + reduceRight: function (fun, accumulator, order) { + var arr = this.toArray(order); + var args = [arr, fun]; + if (!_.isUndefinedOrNull(accumulator)) { + args.push(accumulator); + } + return _.reduceRight.apply(_, args); + }, + + every: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret = false; + this.traverseWithCondition(this.__root, order, function (node) { + ret = cb.call(scope, node, this); + return ret; + }); + return ret; + }, + + some: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret; + this.traverseWithCondition(this.__root, order, function (node) { + ret = cb.call(scope, node, this); + return !ret; + }); + return ret; + }, + + toArray: function (order) { + order = order || Tree.IN_ORDER; + var arr = []; + this.traverse(this.__root, order, function (node) { + arr.push(node); + }); + return arr; + }, + + contains: function (value) { + var ret = false; + var root = this.__root; + while (root !== null) { + var cmp = this.compare(value, root.data); + if (cmp) { + root = root[(cmp === -1) ? "left" : "right"]; + } else { + ret = true; + root = null; + } + } + return ret; + }, + + find: function (value) { + var ret; + var root = this.__root; + while (root) { + var cmp = this.compare(value, root.data); + if (cmp) { + root = root[(cmp === -1) ? "left" : "right"]; + } else { + ret = root.data; + break; + } + } + return ret; + }, + + findLessThan: function (value, exclusive) { + //find a better way!!!! + var ret = [], compare = this.compare; + this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) { + var cmp = compare(value, v); + if ((!exclusive && cmp === 0) || cmp === 1) { + ret.push(v); + return true; + } else { + return false; + } + }); + return ret; + }, + + findGreaterThan: function (value, exclusive) { + //find a better way!!!! + var ret = [], compare = this.compare; + this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) { + var cmp = compare(value, v); + if ((!exclusive && cmp === 0) || cmp === -1) { + ret.push(v); + return true; + } else { + return false; + } + }); + return ret; + }, + + print: function () { + this.__printNode(this.__root, 0); + } + }, + + "static": { + PRE_ORDER: "pre_order", + IN_ORDER: "in_order", + POST_ORDER: "post_order", + REVERSE_ORDER: "reverse_order" + } + }); + + var AVLTree = (function () { + var abs = Math.abs; + + + var makeNode = function (data) { + return { + data: data, + balance: 0, + left: null, + right: null + }; + }; + + var rotateSingle = function (root, dir, otherDir) { + var save = root[otherDir]; + root[otherDir] = save[dir]; + save[dir] = root; + return save; + }; + + + var rotateDouble = function (root, dir, otherDir) { + root[otherDir] = rotateSingle(root[otherDir], otherDir, dir); + return rotateSingle(root, dir, otherDir); + }; + + var adjustBalance = function (root, dir, bal) { + var otherDir = dir === "left" ? "right" : "left"; + var n = root[dir], nn = n[otherDir]; + if (nn.balance === 0) { + root.balance = n.balance = 0; + } else if (nn.balance === bal) { + root.balance = -bal; + n.balance = 0; + } else { /* nn.balance == -bal */ + root.balance = 0; + n.balance = bal; + } + nn.balance = 0; + }; + + var insertAdjustBalance = function (root, dir) { + var otherDir = dir === "left" ? "right" : "left"; + + var n = root[dir]; + var bal = dir === "right" ? -1 : +1; + + if (n.balance === bal) { + root.balance = n.balance = 0; + root = rotateSingle(root, otherDir, dir); + } else { + adjustBalance(root, dir, bal); + root = rotateDouble(root, otherDir, dir); + } + + return root; + + }; + + var removeAdjustBalance = function (root, dir, done) { + var otherDir = dir === "left" ? "right" : "left"; + var n = root[otherDir]; + var bal = dir === "right" ? -1 : 1; + if (n.balance === -bal) { + root.balance = n.balance = 0; + root = rotateSingle(root, dir, otherDir); + } else if (n.balance === bal) { + adjustBalance(root, otherDir, -bal); + root = rotateDouble(root, dir, otherDir); + } else { /* n.balance == 0 */ + root.balance = -bal; + n.balance = bal; + root = rotateSingle(root, dir, otherDir); + done.done = true; + } + return root; + }; + + function insert(tree, data, cmp) { + /* Empty tree case */ + var root = tree.__root; + if (root === null || root === undefined) { + tree.__root = makeNode(data); + } else { + var it = root, upd = [], up = [], top = 0, dir; + while (true) { + dir = upd[top] = cmp(data, it.data) === -1 ? "left" : "right"; + up[top++] = it; + if (!it[dir]) { + it[dir] = makeNode(data); + break; + } + it = it[dir]; + } + if (!it[dir]) { + return null; + } + while (--top >= 0) { + up[top].balance += upd[top] === "right" ? -1 : 1; + if (up[top].balance === 0) { + break; + } else if (abs(up[top].balance) > 1) { + up[top] = insertAdjustBalance(up[top], upd[top]); + if (top !== 0) { + up[top - 1][upd[top - 1]] = up[top]; + } else { + tree.__root = up[0]; + } + break; + } + } + } + } + + function remove(tree, data, cmp) { + var root = tree.__root; + if (root !== null && root !== undefined) { + var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare; + while (true) { + if (!it) { + return; + } else if ((compare = cmp(data, it.data)) === 0) { + break; + } + dir = upd[top] = compare === -1 ? "left" : "right"; + up[top++] = it; + it = it[dir]; + } + var l = it.left, r = it.right; + if (!l || !r) { + dir = !l ? "right" : "left"; + if (top !== 0) { + up[top - 1][upd[top - 1]] = it[dir]; + } else { + tree.__root = it[dir]; + } + } else { + var heir = l; + upd[top] = "left"; + up[top++] = it; + while (heir.right) { + upd[top] = "right"; + up[top++] = heir; + heir = heir.right; + } + it.data = heir.data; + up[top - 1][up[top - 1] === it ? "left" : "right"] = heir.left; + } + while (--top >= 0 && !done.done) { + up[top].balance += upd[top] === "left" ? -1 : +1; + if (abs(up[top].balance) === 1) { + break; + } else if (abs(up[top].balance) > 1) { + up[top] = removeAdjustBalance(up[top], upd[top], done); + if (top !== 0) { + up[top - 1][upd[top - 1]] = up[top]; + } else { + tree.__root = up[0]; + } + } + } + } + } + + + return Tree.extend({ + instance: { + + insert: function (data) { + insert(this, data, this.compare); + }, + + + remove: function (data) { + remove(this, data, this.compare); + }, + + __printNode: function (node, level) { + var str = []; + if (!node) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push(node.data + ":" + node.balance + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + } + + } + }); + }()); + + var AnderssonTree = (function () { + + var nil = {level: 0, data: null}; + + function makeNode(data, level) { + return { + data: data, + level: level, + left: nil, + right: nil + }; + } + + function skew(root) { + if (root.level !== 0 && root.left.level === root.level) { + var save = root.left; + root.left = save.right; + save.right = root; + root = save; + } + return root; + } + + function split(root) { + if (root.level !== 0 && root.right.right.level === root.level) { + var save = root.right; + root.right = save.left; + save.left = root; + root = save; + root.level++; + } + return root; + } + + function insert(root, data, compare) { + if (root === nil) { + root = makeNode(data, 1); + } + else { + var dir = compare(data, root.data) === -1 ? "left" : "right"; + root[dir] = insert(root[dir], data, compare); + root = skew(root); + root = split(root); + } + return root; + } + + var remove = function (root, data, compare) { + var rLeft, rRight; + if (root !== nil) { + var cmp = compare(data, root.data); + if (cmp === 0) { + rLeft = root.left, rRight = root.right; + if (rLeft !== nil && rRight !== nil) { + var heir = rLeft; + while (heir.right !== nil) { + heir = heir.right; + } + root.data = heir.data; + root.left = remove(rLeft, heir.data, compare); + } else { + root = root[rLeft === nil ? "right" : "left"]; + } + } else { + var dir = cmp === -1 ? "left" : "right"; + root[dir] = remove(root[dir], data, compare); + } + } + if (root !== nil) { + var rLevel = root.level; + var rLeftLevel = root.left.level, rRightLevel = root.right.level; + if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) { + if (rRightLevel > --root.level) { + root.right.level = root.level; + } + root = skew(root); + root = split(root); + } + } + return root; + }; + + return Tree.extend({ + + instance: { + + isEmpty: function () { + return this.__root === nil || this._super(arguments); + }, + + insert: function (data) { + if (!this.__root) { + this.__root = nil; + } + this.__root = insert(this.__root, data, this.compare); + }, + + remove: function (data) { + this.__root = remove(this.__root, data, this.compare); + }, - var enSg = moment.defineLocale('en-sg', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return enSg; + traverseWithCondition: function (node) { + var cont = true; + if (node !== nil) { + return this._super(arguments); + } + return cont; + }, -}))); + traverse: function (node) { + if (node !== nil) { + this._super(arguments); + } + }, -/***/ }), + contains: function () { + if (this.__root !== nil) { + return this._super(arguments); + } + return false; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + __printNode: function (node, level) { + var str = []; + if (!node || !node.data) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push(node.data + ":" + node.level + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + } -//! moment.js locale configuration -//! locale : Esperanto [eo] -//! author : Colin Dean : https://github.com/colindean -//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia -//! comment : miestasmia corrected the translation by colindean -//! comment : Vivakvo corrected the translation by colindean and miestasmia + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + }); + }()); - //! moment.js locale configuration + var BinaryTree = Tree.extend({ + instance: { + insert: function (data) { + if (!this.__root) { + this.__root = { + data: data, + parent: null, + left: null, + right: null + }; + return this.__root; + } + var compare = this.compare; + var root = this.__root; + while (root !== null) { + var cmp = compare(data, root.data); + if (cmp) { + var leaf = (cmp === -1) ? "left" : "right"; + var next = root[leaf]; + if (!next) { + return (root[leaf] = {data: data, parent: root, left: null, right: null}); + } else { + root = next; + } + } else { + return; + } + } + }, - var eo = moment.defineLocale('eo', { - months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( - '_' - ), - monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), - weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), - weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), - weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: '[la] D[-an de] MMMM, YYYY', - LLL: '[la] D[-an de] MMMM, YYYY HH:mm', - LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', - llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; + remove: function (data) { + if (this.__root !== null) { + var head = {right: this.__root}, it = head; + var p, f = null; + var dir = "right"; + while (it[dir] !== null) { + p = it; + it = it[dir]; + var cmp = this.compare(data, it.data); + if (!cmp) { + f = it; + } + dir = (cmp === -1 ? "left" : "right"); + } + if (f !== null) { + f.data = it.data; + p[p.right === it ? "right" : "left"] = it[it.left === null ? "right" : "left"]; + } + this.__root = head.right; + } + + } } - }, - calendar: { - sameDay: '[Hodiaŭ je] LT', - nextDay: '[Morgaŭ je] LT', - nextWeek: 'dddd[n je] LT', - lastDay: '[Hieraŭ je] LT', - lastWeek: '[pasintan] dddd[n je] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'post %s', - past: 'antaŭ %s', - s: 'kelkaj sekundoj', - ss: '%d sekundoj', - m: 'unu minuto', - mm: '%d minutoj', - h: 'unu horo', - hh: '%d horoj', - d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo - dd: '%d tagoj', - M: 'unu monato', - MM: '%d monatoj', - y: 'unu jaro', - yy: '%d jaroj', - }, - dayOfMonthOrdinalParse: /\d{1,2}a/, - ordinal: '%da', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + }); - return eo; + var RedBlackTree = (function () { + var RED = "RED", BLACK = "BLACK"; -}))); + var isRed = function (node) { + return node !== null && node.red; + }; + var makeNode = function (data) { + return { + data: data, + red: true, + left: null, + right: null + }; + }; -/***/ }), + var insert = function (root, data, compare) { + if (!root) { + return makeNode(data); -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + } else { + var cmp = compare(data, root.data); + if (cmp) { + var dir = cmp === -1 ? "left" : "right"; + var otherDir = dir === "left" ? "right" : "left"; + root[dir] = insert(root[dir], data, compare); + var node = root[dir]; -//! moment.js locale configuration -//! locale : Spanish (Dominican Republic) [es-do] + if (isRed(node)) { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + var sibling = root[otherDir]; + if (isRed(sibling)) { + /* Case 1 */ + root.red = true; + node.red = false; + sibling.red = false; + } else { - //! moment.js locale configuration + if (isRed(node[dir])) { - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( - '_' - ), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), - monthsParse = [ - /^ene/i, - /^feb/i, - /^mar/i, - /^abr/i, - /^may/i, - /^jun/i, - /^jul/i, - /^ago/i, - /^sep/i, - /^oct/i, - /^nov/i, - /^dic/i, - ], - monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + root = rotateSingle(root, otherDir); + } else if (isRed(node[otherDir])) { - var esDo = moment.defineLocale('es-do', { - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY h:mm A', - LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', - }, - calendar: { - sameDay: function () { - return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextDay: function () { - return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastDay: function () { - return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [pasado a la' + - (this.hours() !== 1 ? 's' : '') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: 'en %s', - past: 'hace %s', - s: 'unos segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'una hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un año', - yy: '%d años', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + root = rotateDouble(root, otherDir); + } + } - return esDo; + } + } + } + return root; + }; -}))); + var rotateSingle = function (root, dir) { + var otherDir = dir === "left" ? "right" : "left"; + var save = root[otherDir]; + root[otherDir] = save[dir]; + save[dir] = root; + root.red = true; + save.red = false; + return save; + }; + var rotateDouble = function (root, dir) { + var otherDir = dir === "left" ? "right" : "left"; + root[otherDir] = rotateSingle(root[otherDir], otherDir); + return rotateSingle(root, dir); + }; -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + var remove = function (root, data, done, compare) { + if (!root) { + done.done = true; + } else { + var dir; + if (compare(data, root.data) === 0) { + if (!root.left || !root.right) { + var save = root[!root.left ? "right" : "left"]; + /* Case 0 */ + if (isRed(root)) { + done.done = true; + } else if (isRed(save)) { + save.red = false; + done.done = true; + } + return save; + } + else { + var heir = root.right, p; + while (heir.left !== null) { + p = heir; + heir = heir.left; + } + if (p) { + p.left = null; + } + root.data = heir.data; + data = heir.data; + } + } + dir = compare(data, root.data) === -1 ? "left" : "right"; + root[dir] = remove(root[dir], data, done, compare); + if (!done.done) { + root = removeBalance(root, dir, done); + } + } + return root; + }; -//! moment.js locale configuration -//! locale : Spanish (United States) [es-us] -//! author : bustta : https://github.com/bustta -//! author : chrisrodz : https://github.com/chrisrodz + var removeBalance = function (root, dir, done) { + var notDir = dir === "left" ? "right" : "left"; + var p = root, s = p[notDir]; + if (isRed(s)) { + root = rotateSingle(root, dir); + s = p[notDir]; + } + if (s !== null) { + if (!isRed(s.left) && !isRed(s.right)) { + if (isRed(p)) { + done.done = true; + } + p.red = 0; + s.red = 1; + } else { + var save = p.red, newRoot = ( root === p ); + p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir); + p.red = save; + p.left.red = p.right.red = 0; + if (newRoot) { + root = p; + } else { + root[dir] = p; + } + done.done = true; + } + } + return root; + }; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + return Tree.extend({ + instance: { + insert: function (data) { + this.__root = insert(this.__root, data, this.compare); + this.__root.red = false; + }, - //! moment.js locale configuration + remove: function (data) { + var done = {done: false}; + var root = remove(this.__root, data, done, this.compare); + if (root !== null) { + root.red = 0; + } + this.__root = root; + return data; + }, - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( - '_' - ), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), - monthsParse = [ - /^ene/i, - /^feb/i, - /^mar/i, - /^abr/i, - /^may/i, - /^jun/i, - /^jul/i, - /^ago/i, - /^sep/i, - /^oct/i, - /^nov/i, - /^dic/i, - ], - monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; - var esUs = moment.defineLocale('es-us', { - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'MM/DD/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY h:mm A', - LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', - }, - calendar: { - sameDay: function () { - return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextDay: function () { - return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastDay: function () { - return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [pasado a la' + - (this.hours() !== 1 ? 's' : '') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: 'en %s', - past: 'hace %s', - s: 'unos segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'una hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un año', - yy: '%d años', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); + __printNode: function (node, level) { + var str = []; + if (!node) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push((node.red ? RED : BLACK) + ":" + node.data + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + } - return esUs; + } + }); -}))); + }()); -/***/ }), + return { + Tree: Tree, + AVLTree: AVLTree, + AnderssonTree: AnderssonTree, + BinaryTree: BinaryTree, + RedBlackTree: RedBlackTree, + IN_ORDER: Tree.IN_ORDER, + PRE_ORDER: Tree.PRE_ORDER, + POST_ORDER: Tree.POST_ORDER, + REVERSE_ORDER: Tree.REVERSE_ORDER -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + }; + } -//! moment.js locale configuration -//! locale : Spanish [es] -//! author : Julio Napurí : https://github.com/julionc + if (true) { + if ( true && module.exports) { + module.exports = defineLeafy(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")() + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js")) + ); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + } + } else {} - //! moment.js locale configuration +}).call(this); - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( - '_' - ), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), - monthsParse = [ - /^ene/i, - /^feb/i, - /^mar/i, - /^abr/i, - /^may/i, - /^jun/i, - /^jul/i, - /^ago/i, - /^sep/i, - /^oct/i, - /^nov/i, - /^dic/i, - ], - monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; - var es = moment.defineLocale('es', { - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY H:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', - }, - calendar: { - sameDay: function () { - return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextDay: function () { - return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastDay: function () { - return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [pasado a la' + - (this.hours() !== 1 ? 's' : '') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: 'en %s', - past: 'hace %s', - s: 'unos segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'una hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un año', - yy: '%d años', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - invalidDate: 'Fecha invalida', - }); - return es; -}))); -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/et.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/et.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Estonian [et] -//! author : Henry Kehlmann : https://github.com/madhenry -//! improvements : Illimar Tambek : https://github.com/ragulka +/***/ }), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //! moment.js locale configuration +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - ss: [number + 'sekundi', number + 'sekundit'], - m: ['ühe minuti', 'üks minut'], - mm: [number + ' minuti', number + ' minutit'], - h: ['ühe tunni', 'tund aega', 'üks tund'], - hh: [number + ' tunni', number + ' tundi'], - d: ['ühe päeva', 'üks päev'], - M: ['kuu aja', 'kuu aega', 'üks kuu'], - MM: [number + ' kuu', number + ' kuud'], - y: ['ühe aasta', 'aasta', 'üks aasta'], - yy: [number + ' aasta', number + ' aastat'], - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; - } +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); - var et = moment.defineLocale('et', { - months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( - '_' - ), - monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split( - '_' - ), - weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( - '_' - ), - weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[Täna,] LT', - nextDay: '[Homme,] LT', - nextWeek: '[Järgmine] dddd LT', - lastDay: '[Eile,] LT', - lastWeek: '[Eelmine] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s pärast', - past: '%s tagasi', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: '%d päeva', - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = DataView; - return et; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js"), + hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js"), + hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js"), + hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js"), + hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js"); -/***/ }), +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eu.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eu.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} -//! moment.js locale configuration -//! locale : Basque [eu] -//! author : Eneko Illarramendi : https://github.com/eillarra +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = Hash; - //! moment.js locale configuration - var eu = moment.defineLocale('eu', { - months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( - '_' - ), - monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( - '_' - ), - weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY[ko] MMMM[ren] D[a]', - LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l: 'YYYY-M-D', - ll: 'YYYY[ko] MMM D[a]', - lll: 'YYYY[ko] MMM D[a] HH:mm', - llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', - }, - calendar: { - sameDay: '[gaur] LT[etan]', - nextDay: '[bihar] LT[etan]', - nextWeek: 'dddd LT[etan]', - lastDay: '[atzo] LT[etan]', - lastWeek: '[aurreko] dddd LT[etan]', - sameElse: 'L', - }, - relativeTime: { - future: '%s barru', - past: 'duela %s', - s: 'segundo batzuk', - ss: '%d segundo', - m: 'minutu bat', - mm: '%d minutu', - h: 'ordu bat', - hh: '%d ordu', - d: 'egun bat', - dd: '%d egun', - M: 'hilabete bat', - MM: '%d hilabete', - y: 'urte bat', - yy: '%d urte', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ }), - return eu; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js"), + listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js"), + listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js"), + listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js"), + listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js"); +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; -/***/ }), + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fa.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fa.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; -//! moment.js locale configuration -//! locale : Persian [fa] -//! author : Ebrahim Byagowi : https://github.com/ebraminio +module.exports = ListCache; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰', - }, - numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0', - }; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var fa = moment.defineLocale('fa', { - months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( - '_' - ), - monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( - '_' - ), - weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( - '_' - ), - weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( - '_' - ), - weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar: { - sameDay: '[امروز ساعت] LT', - nextDay: '[فردا ساعت] LT', - nextWeek: 'dddd [ساعت] LT', - lastDay: '[دیروز ساعت] LT', - lastWeek: 'dddd [پیش] [ساعت] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'در %s', - past: '%s پیش', - s: 'چند ثانیه', - ss: '%d ثانیه', - m: 'یک دقیقه', - mm: '%d دقیقه', - h: 'یک ساعت', - hh: '%d ساعت', - d: 'یک روز', - dd: '%d روز', - M: 'یک ماه', - MM: '%d ماه', - y: 'یک سال', - yy: '%d سال', - }, - preparse: function (string) { - return string - .replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - dayOfMonthOrdinalParse: /\d{1,2}م/, - ordinal: '%dم', - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); - return fa; +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); -}))); +module.exports = Map; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Finnish [fi] -//! author : Tarmo Aidantausta : https://github.com/bleadof +var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js"), + mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js"), + mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js"), + mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js"), + mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - //! moment.js locale configuration + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( - ' ' - ), - numbersFuture = [ - 'nolla', - 'yhden', - 'kahden', - 'kolmen', - 'neljän', - 'viiden', - 'kuuden', - numbersPast[7], - numbersPast[8], - numbersPast[9], - ]; - function translate(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'ss': - return isFuture ? 'sekunnin' : 'sekuntia'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; - } - function verbalNumber(number, isFuture) { - return number < 10 - ? isFuture - ? numbersFuture[number] - : numbersPast[number] - : number; - } +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; - var fi = moment.defineLocale('fi', { - months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( - '_' - ), - monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( - '_' - ), - weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( - '_' - ), - weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD.MM.YYYY', - LL: 'Do MMMM[ta] YYYY', - LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l: 'D.M.YYYY', - ll: 'Do MMM YYYY', - lll: 'Do MMM YYYY, [klo] HH.mm', - llll: 'ddd, Do MMM YYYY, [klo] HH.mm', - }, - calendar: { - sameDay: '[tänään] [klo] LT', - nextDay: '[huomenna] [klo] LT', - nextWeek: 'dddd [klo] LT', - lastDay: '[eilen] [klo] LT', - lastWeek: '[viime] dddd[na] [klo] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s päästä', - past: '%s sitten', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = MapCache; - return fi; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fil.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fil.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); -//! moment.js locale configuration -//! locale : Filipino [fil] -//! author : Dan Hagman : https://github.com/hagmandan -//! author : Matthew Co : https://github.com/matthewdeeco +module.exports = Promise; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var fil = moment.defineLocale('fil', { - months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( - '_' - ), - monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( - '_' - ), - weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'MM/D/YYYY', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY HH:mm', - LLLL: 'dddd, MMMM DD, YYYY HH:mm', - }, - calendar: { - sameDay: 'LT [ngayong araw]', - nextDay: '[Bukas ng] LT', - nextWeek: 'LT [sa susunod na] dddd', - lastDay: 'LT [kahapon]', - lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L', - }, - relativeTime: { - future: 'sa loob ng %s', - past: '%s ang nakalipas', - s: 'ilang segundo', - ss: '%d segundo', - m: 'isang minuto', - mm: '%d minuto', - h: 'isang oras', - hh: '%d oras', - d: 'isang araw', - dd: '%d araw', - M: 'isang buwan', - MM: '%d buwan', - y: 'isang taon', - yy: '%d taon', - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: function (number) { - return number; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return fil; +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); -}))); +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +module.exports = Set; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Faroese [fo] -//! author : Ragnar Johannesen : https://github.com/ragnar123 -//! author : Kristian Sakarisson : https://github.com/sakarisson +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"), + setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js"), + setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; - //! moment.js locale configuration + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} - var fo = moment.defineLocale('fo', { - months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( - '_' - ), - weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D. MMMM, YYYY HH:mm', - }, - calendar: { - sameDay: '[Í dag kl.] LT', - nextDay: '[Í morgin kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[Í gjár kl.] LT', - lastWeek: '[síðstu] dddd [kl] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'um %s', - past: '%s síðani', - s: 'fá sekund', - ss: '%d sekundir', - m: 'ein minuttur', - mm: '%d minuttir', - h: 'ein tími', - hh: '%d tímar', - d: 'ein dagur', - dd: '%d dagar', - M: 'ein mánaður', - MM: '%d mánaðir', - y: 'eitt ár', - yy: '%d ár', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; - return fo; +module.exports = SetCache; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js"), + stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js"), + stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js"), + stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js"), + stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js"); + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +module.exports = Stack; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : French (Canada) [fr-ca] -//! author : Jonathan Abourbih : https://github.com/jonbca +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Built-in value references. */ +var Symbol = root.Symbol; - //! moment.js locale configuration +module.exports = Symbol; - var frCa = moment.defineLocale('fr-ca', { - months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( - '_' - ), - monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Aujourd’hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dans %s', - past: 'il y a %s', - s: 'quelques secondes', - ss: '%d secondes', - m: 'une minute', - mm: '%d minutes', - h: 'une heure', - hh: '%d heures', - d: 'un jour', - dd: '%d jours', - M: 'un mois', - MM: '%d mois', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal: function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - }); +/***/ }), - return frCa; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +module.exports = Uint8Array; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : French (Switzerland) [fr-ch] -//! author : Gaspard Bucher : https://github.com/gaspard +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); - //! moment.js locale configuration +module.exports = WeakMap; - var frCh = moment.defineLocale('fr-ch', { - months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( - '_' - ), - monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Aujourd’hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dans %s', - past: 'il y a %s', - s: 'quelques secondes', - ss: '%d secondes', - m: 'une minute', - mm: '%d minutes', - h: 'une heure', - hh: '%d heures', - d: 'un jour', - dd: '%d jours', - M: 'un mois', - MM: '%d mois', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal: function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return frCh; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js ***! + \*************************************************************************************************/ +/***/ ((module) => { -}))); +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = arrayFilter; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : French [fr] -//! author : John Fischer : https://github.com/jfroffice +var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; +} - //! moment.js locale configuration +module.exports = arrayIncludes; - var fr = moment.defineLocale('fr', { - months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( - '_' - ), - monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Aujourd’hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dans %s', - past: 'il y a %s', - s: 'quelques secondes', - ss: '%d secondes', - m: 'une minute', - mm: '%d minutes', - h: 'une heure', - hh: '%d heures', - d: 'un jour', - dd: '%d jours', - M: 'un mois', - MM: '%d mois', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|)/, - ordinal: function (number, period) { - switch (period) { - // TODO: Return 'e' when day of month > 1. Move this case inside - // block for masculine words below. - // See https://github.com/moment/moment/issues/3375 - case 'D': - return number + (number === 1 ? 'er' : ''); - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); +/***/ }), - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js ***! + \*******************************************************************************************************/ +/***/ ((module) => { - return fr; +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; -}))); + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +module.exports = arrayIncludesWith; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fy.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fy.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Frisian [fy] -//! author : Robin van der Vliet : https://github.com/robin0van0der0v +var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split( - '_' - ), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split( - '_' - ); +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; - var fy = moment.defineLocale('fy', { - months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - monthsParseExact: true, - weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( - '_' - ), - weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'oer %s', - past: '%s lyn', - s: 'in pear sekonden', - ss: '%d sekonden', - m: 'ien minút', - mm: '%d minuten', - h: 'ien oere', - hh: '%d oeren', - d: 'ien dei', - dd: '%d dagen', - M: 'ien moanne', - MM: '%d moannen', - y: 'ien jier', - yy: '%d jierren', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} - return fy; +module.exports = arrayLikeKeys; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js ***! + \**********************************************************************************************/ +/***/ ((module) => { + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ga.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ga.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js ***! + \***********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Irish or Irish Gaelic [ga] -//! author : André Silva : https://github.com/askpt +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} - //! moment.js locale configuration +module.exports = arrayPush; - var months = [ - 'Eanáir', - 'Feabhra', - 'Márta', - 'Aibreán', - 'Bealtaine', - 'Meitheamh', - 'Iúil', - 'Lúnasa', - 'Meán Fómhair', - 'Deireadh Fómhair', - 'Samhain', - 'Nollaig', - ], - monthsShort = [ - 'Ean', - 'Feabh', - 'Márt', - 'Aib', - 'Beal', - 'Meith', - 'Iúil', - 'Lún', - 'M.F.', - 'D.F.', - 'Samh', - 'Noll', - ], - weekdays = [ - 'Dé Domhnaigh', - 'Dé Luain', - 'Dé Máirt', - 'Dé Céadaoin', - 'Déardaoin', - 'Dé hAoine', - 'Dé Sathairn', - ], - weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], - weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; - var ga = moment.defineLocale('ga', { - months: months, - monthsShort: monthsShort, - monthsParseExact: true, - weekdays: weekdays, - weekdaysShort: weekdaysShort, - weekdaysMin: weekdaysMin, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Inniu ag] LT', - nextDay: '[Amárach ag] LT', - nextWeek: 'dddd [ag] LT', - lastDay: '[Inné ag] LT', - lastWeek: 'dddd [seo caite] [ag] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'i %s', - past: '%s ó shin', - s: 'cúpla soicind', - ss: '%d soicind', - m: 'nóiméad', - mm: '%d nóiméad', - h: 'uair an chloig', - hh: '%d uair an chloig', - d: 'lá', - dd: '%d lá', - M: 'mí', - MM: '%d míonna', - y: 'bliain', - yy: '%d bliain', - }, - dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, - ordinal: function (number) { - var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} - return ga; +module.exports = arraySome; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js"); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +module.exports = assocIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gd.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gd.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Scottish Gaelic [gd] -//! author : Jon Ashdown : https://github.com/jonashdown +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} - //! moment.js locale configuration +module.exports = baseFindIndex; - var months = [ - 'Am Faoilleach', - 'An Gearran', - 'Am Màrt', - 'An Giblean', - 'An Cèitean', - 'An t-Ògmhios', - 'An t-Iuchar', - 'An Lùnastal', - 'An t-Sultain', - 'An Dàmhair', - 'An t-Samhain', - 'An Dùbhlachd', - ], - monthsShort = [ - 'Faoi', - 'Gear', - 'Màrt', - 'Gibl', - 'Cèit', - 'Ògmh', - 'Iuch', - 'Lùn', - 'Sult', - 'Dàmh', - 'Samh', - 'Dùbh', - ], - weekdays = [ - 'Didòmhnaich', - 'Diluain', - 'Dimàirt', - 'Diciadain', - 'Diardaoin', - 'Dihaoine', - 'Disathairne', - ], - weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], - weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; - var gd = moment.defineLocale('gd', { - months: months, - monthsShort: monthsShort, - monthsParseExact: true, - weekdays: weekdays, - weekdaysShort: weekdaysShort, - weekdaysMin: weekdaysMin, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[An-diugh aig] LT', - nextDay: '[A-màireach aig] LT', - nextWeek: 'dddd [aig] LT', - lastDay: '[An-dè aig] LT', - lastWeek: 'dddd [seo chaidh] [aig] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'ann an %s', - past: 'bho chionn %s', - s: 'beagan diogan', - ss: '%d diogan', - m: 'mionaid', - mm: '%d mionaidean', - h: 'uair', - hh: '%d uairean', - d: 'latha', - dd: '%d latha', - M: 'mìos', - MM: '%d mìosan', - y: 'bliadhna', - yy: '%d bliadhna', - }, - dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, - ordinal: function (number) { - var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return gd; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +module.exports = baseGet; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gl.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gl.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Galician [gl] -//! author : Juan G. Hurtado : https://github.com/juanghurtado +var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} - //! moment.js locale configuration +module.exports = baseGetAllKeys; - var gl = moment.defineLocale('gl', { - months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( - '_' - ), - monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY H:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', - }, - calendar: { - sameDay: function () { - return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; - }, - nextDay: function () { - return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; - }, - nextWeek: function () { - return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; - }, - lastDay: function () { - return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; - }, - lastWeek: function () { - return ( - '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: function (str) { - if (str.indexOf('un') === 0) { - return 'n' + str; - } - return 'en ' + str; - }, - past: 'hai %s', - s: 'uns segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'unha hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un ano', - yy: '%d anos', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return gl; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js"); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js ***! + \***********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Konkani Devanagari script [gom-deva] -//! author : The Discoverer : https://github.com/WikiDiscoverer +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = baseHasIn; - //! moment.js locale configuration - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], - ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], - m: ['एका मिणटान', 'एक मिनूट'], - mm: [number + ' मिणटांनी', number + ' मिणटां'], - h: ['एका वरान', 'एक वर'], - hh: [number + ' वरांनी', number + ' वरां'], - d: ['एका दिसान', 'एक दीस'], - dd: [number + ' दिसांनी', number + ' दीस'], - M: ['एका म्हयन्यान', 'एक म्हयनो'], - MM: [number + ' म्हयन्यानी', number + ' म्हयने'], - y: ['एका वर्सान', 'एक वर्स'], - yy: [number + ' वर्सांनी', number + ' वर्सां'], - }; - return isFuture ? format[key][0] : format[key][1]; - } +/***/ }), - var gomDeva = moment.defineLocale('gom-deva', { - months: { - standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( - '_' - ), - format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( - '_' - ), - isFormat: /MMMM(\s)+D[oD]?/, - }, - monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), - weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), - weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'A h:mm [वाजतां]', - LTS: 'A h:mm:ss [वाजतां]', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY A h:mm [वाजतां]', - LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]', - llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', - }, - calendar: { - sameDay: '[आयज] LT', - nextDay: '[फाल्यां] LT', - nextWeek: '[फुडलो] dddd[,] LT', - lastDay: '[काल] LT', - lastWeek: '[फाटलो] dddd[,] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s', - past: '%s आदीं', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, - ordinal: function (number, period) { - switch (period) { - // the ordinal 'वेर' only applies to day of the month - case 'D': - return number + 'वेर'; - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - case 'w': - case 'W': - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राती') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळीं') { - return hour; - } else if (meridiem === 'दनपारां') { - return hour > 12 ? hour : hour + 12; - } else if (meridiem === 'सांजे') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'राती'; - } else if (hour < 12) { - return 'सकाळीं'; - } else if (hour < 16) { - return 'दनपारां'; - } else if (hour < 20) { - return 'सांजे'; - } else { - return 'राती'; - } - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return gomDeva; +var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js"), + baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js"), + strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js"); -}))); +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); +} + +module.exports = baseIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Konkani Latin script [gom-latn] -//! author : The Discoverer : https://github.com/WikiDiscoverer +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; - //! moment.js locale configuration +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['thoddea sekondamni', 'thodde sekond'], - ss: [number + ' sekondamni', number + ' sekond'], - m: ['eka mintan', 'ek minut'], - mm: [number + ' mintamni', number + ' mintam'], - h: ['eka voran', 'ek vor'], - hh: [number + ' voramni', number + ' voram'], - d: ['eka disan', 'ek dis'], - dd: [number + ' disamni', number + ' dis'], - M: ['eka mhoinean', 'ek mhoino'], - MM: [number + ' mhoineamni', number + ' mhoine'], - y: ['eka vorsan', 'ek voros'], - yy: [number + ' vorsamni', number + ' vorsam'], - }; - return isFuture ? format[key][0] : format[key][1]; - } +module.exports = baseIsArguments; - var gomLatn = moment.defineLocale('gom-latn', { - months: { - standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( - '_' - ), - format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( - '_' - ), - isFormat: /MMMM(\s)+D[oD]?/, - }, - monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), - weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), - weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'A h:mm [vazta]', - LTS: 'A h:mm:ss [vazta]', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY A h:mm [vazta]', - LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', - llll: 'ddd, D MMM YYYY, A h:mm [vazta]', - }, - calendar: { - sameDay: '[Aiz] LT', - nextDay: '[Faleam] LT', - nextWeek: '[Fuddlo] dddd[,] LT', - lastDay: '[Kal] LT', - lastWeek: '[Fattlo] dddd[,] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s', - past: '%s adim', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}(er)/, - ordinal: function (number, period) { - switch (period) { - // the ordinal 'er' only applies to day of the month - case 'D': - return number + 'er'; - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - case 'w': - case 'W': - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /rati|sokallim|donparam|sanje/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'rati') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'sokallim') { - return hour; - } else if (meridiem === 'donparam') { - return hour > 12 ? hour : hour + 12; - } else if (meridiem === 'sanje') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'rati'; - } else if (hour < 12) { - return 'sokallim'; - } else if (hour < 16) { - return 'donparam'; - } else if (hour < 20) { - return 'sanje'; - } else { - return 'rati'; - } - }, - }); - return gomLatn; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +module.exports = baseIsEqual; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gu.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gu.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Gujarati [gu] -//! author : Kaushik Thanki : https://github.com/Kaushik1987 +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js"), + equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; - //! moment.js locale configuration +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; - var symbolMap = { - '1': '૧', - '2': '૨', - '3': '૩', - '4': '૪', - '5': '૫', - '6': '૬', - '7': '૭', - '8': '૮', - '9': '૯', - '0': '૦', - }, - numberMap = { - '૧': '1', - '૨': '2', - '૩': '3', - '૪': '4', - '૫': '5', - '૬': '6', - '૭': '7', - '૮': '8', - '૯': '9', - '૦': '0', - }; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - var gu = moment.defineLocale('gu', { - months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( - '_' - ), - monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( - '_' - ), - weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), - weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), - longDateFormat: { - LT: 'A h:mm વાગ્યે', - LTS: 'A h:mm:ss વાગ્યે', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm વાગ્યે', - LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', - }, - calendar: { - sameDay: '[આજ] LT', - nextDay: '[કાલે] LT', - nextWeek: 'dddd, LT', - lastDay: '[ગઇકાલે] LT', - lastWeek: '[પાછલા] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s મા', - past: '%s પેહલા', - s: 'અમુક પળો', - ss: '%d સેકંડ', - m: 'એક મિનિટ', - mm: '%d મિનિટ', - h: 'એક કલાક', - hh: '%d કલાક', - d: 'એક દિવસ', - dd: '%d દિવસ', - M: 'એક મહિનો', - MM: '%d મહિનો', - y: 'એક વર્ષ', - yy: '%d વર્ષ', - }, - preparse: function (string) { - return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Gujarati notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. - meridiemParse: /રાત|બપોર|સવાર|સાંજ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'રાત') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'સવાર') { - return hour; - } else if (meridiem === 'બપોર') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'સાંજ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'રાત'; - } else if (hour < 10) { - return 'સવાર'; - } else if (hour < 17) { - return 'બપોર'; - } else if (hour < 20) { - return 'સાંજ'; - } else { - return 'રાત'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - return gu; +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); -}))); + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +module.exports = baseIsEqualDeep; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/he.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/he.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Hebrew [he] -//! author : Tomer Cohen : https://github.com/tomer -//! author : Moshe Simantov : https://github.com/DevelopmentIL -//! author : Tal Ater : https://github.com/TalAter +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; - //! moment.js locale configuration +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; - var he = moment.defineLocale('he', { - months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( - '_' - ), - monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split( - '_' - ), - weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [ב]MMMM YYYY', - LLL: 'D [ב]MMMM YYYY HH:mm', - LLLL: 'dddd, D [ב]MMMM YYYY HH:mm', - l: 'D/M/YYYY', - ll: 'D MMM YYYY', - lll: 'D MMM YYYY HH:mm', - llll: 'ddd, D MMM YYYY HH:mm', - }, - calendar: { - sameDay: '[היום ב־]LT', - nextDay: '[מחר ב־]LT', - nextWeek: 'dddd [בשעה] LT', - lastDay: '[אתמול ב־]LT', - lastWeek: '[ביום] dddd [האחרון בשעה] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'בעוד %s', - past: 'לפני %s', - s: 'מספר שניות', - ss: '%d שניות', - m: 'דקה', - mm: '%d דקות', - h: 'שעה', - hh: function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d: 'יום', - dd: function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M: 'חודש', - MM: function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y: 'שנה', - yy: function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - }, - }, - meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, - isPM: function (input) { - return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 5) { - return 'לפנות בוקר'; - } else if (hour < 10) { - return 'בבוקר'; - } else if (hour < 12) { - return isLower ? 'לפנה"צ' : 'לפני הצהריים'; - } else if (hour < 18) { - return isLower ? 'אחה"צ' : 'אחרי הצהריים'; - } else { - return 'בערב'; - } - }, - }); + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; - return he; + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} -}))); +module.exports = baseIsMatch; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js ***! + \***********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Hindi [hi] -//! author : Mayank Singhal : https://github.com/mayanksinghal +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = baseIsNaN; - //! moment.js locale configuration - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०', - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0', - }; +/***/ }), - var hi = moment.defineLocale('hi', { - months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( - '_' - ), - monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat: { - LT: 'A h:mm बजे', - LTS: 'A h:mm:ss बजे', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm बजे', - LLLL: 'dddd, D MMMM YYYY, A h:mm बजे', - }, - calendar: { - sameDay: '[आज] LT', - nextDay: '[कल] LT', - nextWeek: 'dddd, LT', - lastDay: '[कल] LT', - lastWeek: '[पिछले] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s में', - past: '%s पहले', - s: 'कुछ ही क्षण', - ss: '%d सेकंड', - m: 'एक मिनट', - mm: '%d मिनट', - h: 'एक घंटा', - hh: '%d घंटे', - d: 'एक दिन', - dd: '%d दिन', - M: 'एक महीने', - MM: '%d महीने', - y: 'एक वर्ष', - yy: '%d वर्ष', - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return hi; +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); -}))); +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; -/***/ }), +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; -//! moment.js locale configuration -//! locale : Croatian [hr] -//! author : Bojan Marković : https://github.com/bmarkovic +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); - //! moment.js locale configuration +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - if (number === 1) { - result += 'sekunda'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sekunde'; - } else { - result += 'sekundi'; - } - return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } +module.exports = baseIsNative; - var hr = moment.defineLocale('hr', { - months: { - format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( - '_' - ), - standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( - '_' - ), - }, - monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'Do MMMM YYYY', - LLL: 'Do MMMM YYYY H:mm', - LLLL: 'dddd, Do MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[jučer u] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[prošlu] [nedjelju] [u] LT'; - case 3: - return '[prošlu] [srijedu] [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'prije %s', - s: 'par sekundi', - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: 'dan', - dd: translate, - M: 'mjesec', - MM: translate, - y: 'godinu', - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return hr; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); -/***/ }), +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hu.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hu.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; -//! moment.js locale configuration -//! locale : Hungarian [hu] -//! author : Adam Brunner : https://github.com/adambrunner +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} - //! moment.js locale configuration +module.exports = baseIsTypedArray; - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split( - ' ' - ); - function translate(number, withoutSuffix, key, isFuture) { - var num = number; - switch (key) { - case 's': - return isFuture || withoutSuffix - ? 'néhány másodperc' - : 'néhány másodperce'; - case 'ss': - return num + (isFuture || withoutSuffix) - ? ' másodperc' - : ' másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; - } - function week(isFuture) { - return ( - (isFuture ? '' : '[múlt] ') + - '[' + - weekEndings[this.day()] + - '] LT[-kor]' - ); - } - var hu = moment.defineLocale('hu', { - months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( - '_' - ), - monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split( - '_' - ), - weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'YYYY.MM.DD.', - LL: 'YYYY. MMMM D.', - LLL: 'YYYY. MMMM D. H:mm', - LLLL: 'YYYY. MMMM D., dddd H:mm', - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar: { - sameDay: '[ma] LT[-kor]', - nextDay: '[holnap] LT[-kor]', - nextWeek: function () { - return week.call(this, true); - }, - lastDay: '[tegnap] LT[-kor]', - lastWeek: function () { - return week.call(this, false); - }, - sameElse: 'L', - }, - relativeTime: { - future: '%s múlva', - past: '%s', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return hu; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js"), + baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + property = __webpack_require__(/*! ./property */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js"); +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} -/***/ }), +module.exports = baseIteratee; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Armenian [hy-am] -//! author : Armendarabyan : https://github.com/armendarabyan +/***/ }), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //! moment.js locale configuration +var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js"), + nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js"); - var hyAm = moment.defineLocale('hy-am', { - months: { - format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( - '_' - ), - standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( - '_' - ), - }, - monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( - '_' - ), - weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY թ.', - LLL: 'D MMMM YYYY թ., HH:mm', - LLLL: 'dddd, D MMMM YYYY թ., HH:mm', - }, - calendar: { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L', - }, - relativeTime: { - future: '%s հետո', - past: '%s առաջ', - s: 'մի քանի վայրկյան', - ss: '%d վայրկյան', - m: 'րոպե', - mm: '%d րոպե', - h: 'ժամ', - hh: '%d ժամ', - d: 'օր', - dd: '%d օր', - M: 'ամիս', - MM: '%d ամիս', - y: 'տարի', - yy: '%d տարի', - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem: function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/** Used for built-in method references. */ +var objectProto = Object.prototype; - return hyAm; +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -}))); +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} +module.exports = baseKeys; -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/id.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/id.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ }), -//! moment.js locale configuration -//! locale : Indonesian [id] -//! author : Mohammad Satrio Utomo : https://github.com/tyok -//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js"), + getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"); - //! moment.js locale configuration +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} - var id = moment.defineLocale('id', { - months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), - weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar: { - sameDay: '[Hari ini pukul] LT', - nextDay: '[Besok pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kemarin pukul] LT', - lastWeek: 'dddd [lalu pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dalam %s', - past: '%s yang lalu', - s: 'beberapa detik', - ss: '%d detik', - m: 'semenit', - mm: '%d menit', - h: 'sejam', - hh: '%d jam', - d: 'sehari', - dd: '%d hari', - M: 'sebulan', - MM: '%d bulan', - y: 'setahun', - yy: '%d tahun', - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +module.exports = baseMatches; - return id; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"), + get = __webpack_require__(/*! ./get */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/is.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/is.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; -//! moment.js locale configuration -//! locale : Icelandic [is] -//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = baseMatchesProperty; - //! moment.js locale configuration - function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture - ? 'nokkrar sekúndur' - : 'nokkrum sekúndum'; - case 'ss': - if (plural(number)) { - return ( - result + - (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') - ); - } - return result + 'sekúnda'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return ( - result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') - ); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return ( - result + - (withoutSuffix || isFuture - ? 'klukkustundir' - : 'klukkustundum') - ); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } - } +/***/ }), - var is = moment.defineLocale('is', { - months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( - '_' - ), - weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY [kl.] H:mm', - LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', - }, - calendar: { - sameDay: '[í dag kl.] LT', - nextDay: '[á morgun kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[í gær kl.] LT', - lastWeek: '[síðasta] dddd [kl.] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'eftir %s', - past: 'fyrir %s síðan', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: 'klukkustund', - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js ***! + \**************************************************************************************************/ +/***/ ((module) => { - return is; +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} -}))); +module.exports = baseProperty; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js ***! \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Italian (Switzerland) [it-ch] -//! author : xfh : https://github.com/xfh +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} - //! moment.js locale configuration +module.exports = basePropertyDeep; - var itCh = moment.defineLocale('it-ch', { - months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( - '_' - ), - monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( - '_' - ), - weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: function (s) { - return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; - }, - past: '%s fa', - s: 'alcuni secondi', - ss: '%d secondi', - m: 'un minuto', - mm: '%d minuti', - h: "un'ora", - hh: '%d ore', - d: 'un giorno', - dd: '%d giorni', - M: 'un mese', - MM: '%d mesi', - y: 'un anno', - yy: '%d anni', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return itCh; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +module.exports = baseTimes; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Italian [it] -//! author : Lorenzo : https://github.com/aliem -//! author: Mattia Larentis: https://github.com/nostalgiaz -//! author: Marco : https://github.com/Manfre98 +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; - //! moment.js locale configuration +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; - var it = moment.defineLocale('it', { - months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( - '_' - ), - monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( - '_' - ), - weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: function () { - return ( - '[Oggi a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - nextDay: function () { - return ( - '[Domani a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - nextWeek: function () { - return ( - 'dddd [a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - lastDay: function () { - return ( - '[Ieri a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - lastWeek: function () { - switch (this.day()) { - case 0: - return ( - '[La scorsa] dddd [a' + - (this.hours() > 1 - ? 'lle ' - : this.hours() === 0 - ? ' ' - : "ll'") + - ']LT' - ); - default: - return ( - '[Lo scorso] dddd [a' + - (this.hours() > 1 - ? 'lle ' - : this.hours() === 0 - ? ' ' - : "ll'") + - ']LT' - ); - } - }, - sameElse: 'L', - }, - relativeTime: { - future: function (s) { - return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; - }, - past: '%s fa', - s: 'alcuni secondi', - ss: '%d secondi', - m: 'un minuto', - mm: '%d minuti', - h: "un'ora", - hh: '%d ore', - d: 'un giorno', - dd: '%d giorni', - M: 'un mese', - MM: '%d mesi', - y: 'un anno', - yy: '%d anni', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - return it; +module.exports = baseToString; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +module.exports = baseUnary; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ja.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ja.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Japanese [ja] -//! author : LI Long : https://github.com/baryon +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js"), + arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"), + createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - //! moment.js locale configuration +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; - var ja = moment.defineLocale('ja', { - eras: [ - { - since: '2019-05-01', - offset: 1, - name: '令和', - narrow: '㋿', - abbr: 'R', - }, - { - since: '1989-01-08', - until: '2019-04-30', - offset: 1, - name: '平成', - narrow: '㍻', - abbr: 'H', - }, - { - since: '1926-12-25', - until: '1989-01-07', - offset: 1, - name: '昭和', - narrow: '㍼', - abbr: 'S', - }, - { - since: '1912-07-30', - until: '1926-12-24', - offset: 1, - name: '大正', - narrow: '㍽', - abbr: 'T', - }, - { - since: '1873-01-01', - until: '1912-07-29', - offset: 6, - name: '明治', - narrow: '㍾', - abbr: 'M', - }, - { - since: '0001-01-01', - until: '1873-12-31', - offset: 1, - name: '西暦', - narrow: 'AD', - abbr: 'AD', - }, - { - since: '0000-12-31', - until: -Infinity, - offset: 1, - name: '紀元前', - narrow: 'BC', - abbr: 'BC', - }, - ], - eraYearOrdinalRegex: /(元|\d+)年/, - eraYearOrdinalParse: function (input, match) { - return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); - }, - months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort: '日_月_火_水_木_金_土'.split('_'), - weekdaysMin: '日_月_火_水_木_金_土'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日 dddd HH:mm', - l: 'YYYY/MM/DD', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日(ddd) HH:mm', - }, - meridiemParse: /午前|午後/i, - isPM: function (input) { - return input === '午後'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar: { - sameDay: '[今日] LT', - nextDay: '[明日] LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - return '[来週]dddd LT'; - } else { - return 'dddd LT'; - } - }, - lastDay: '[昨日] LT', - lastWeek: function (now) { - if (this.week() !== now.week()) { - return '[先週]dddd LT'; - } else { - return 'dddd LT'; - } - }, - sameElse: 'L', - }, - dayOfMonthOrdinalParse: /\d{1,2}日/, - ordinal: function (number, period) { - switch (period) { - case 'y': - return number === 1 ? '元年' : number + '年'; - case 'd': - case 'D': - case 'DDD': - return number + '日'; - default: - return number; - } - }, - relativeTime: { - future: '%s後', - past: '%s前', - s: '数秒', - ss: '%d秒', - m: '1分', - mm: '%d分', - h: '1時間', - hh: '%d時間', - d: '1日', - dd: '%d日', - M: '1ヶ月', - MM: '%dヶ月', - y: '1年', - yy: '%d年', - }, - }); + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; - return ja; + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} -}))); +module.exports = baseUniq; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/jv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/jv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Javanese [jv] -//! author : Rony Lantip : https://github.com/lantip -//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = cacheHas; - //! moment.js locale configuration - var jv = moment.defineLocale('jv', { - months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar: { - sameDay: '[Dinten puniko pukul] LT', - nextDay: '[Mbenjang pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kala wingi pukul] LT', - lastWeek: 'dddd [kepengker pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'wonten ing %s', - past: '%s ingkang kepengker', - s: 'sawetawis detik', - ss: '%d detik', - m: 'setunggal menit', - mm: '%d menit', - h: 'setunggal jam', - hh: '%d jam', - d: 'sedinten', - dd: '%d dinten', - M: 'sewulan', - MM: '%d wulan', - y: 'setaun', - yy: '%d taun', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ }), - return jv; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js"), + toString = __webpack_require__(/*! ./toString */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js"); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +module.exports = castPath; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ka.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ka.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Georgian [ka] -//! author : Irakli Janiashvili : https://github.com/IrakliJani +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; - //! moment.js locale configuration +module.exports = coreJsData; - var ka = moment.defineLocale('ka', { - months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( - '_' - ), - monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays: { - standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( - '_' - ), - format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( - '_' - ), - isFormat: /(წინა|შემდეგ)/, - }, - weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[დღეს] LT[-ზე]', - nextDay: '[ხვალ] LT[-ზე]', - lastDay: '[გუშინ] LT[-ზე]', - nextWeek: '[შემდეგ] dddd LT[-ზე]', - lastWeek: '[წინა] dddd LT-ზე', - sameElse: 'L', - }, - relativeTime: { - future: function (s) { - return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ( - $0, - $1, - $2 - ) { - return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; - }); - }, - past: function (s) { - if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { - return s.replace(/(ი|ე)$/, 'ის წინ'); - } - if (/წელი/.test(s)) { - return s.replace(/წელი$/, 'წლის წინ'); - } - return s; - }, - s: 'რამდენიმე წამი', - ss: '%d წამი', - m: 'წუთი', - mm: '%d წუთი', - h: 'საათი', - hh: '%d საათი', - d: 'დღე', - dd: '%d დღე', - M: 'თვე', - MM: '%d თვე', - y: 'წელი', - yy: '%d წელი', - }, - dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal: function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ( - number < 20 || - (number <= 100 && number % 20 === 0) || - number % 100 === 0 - ) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week: { - dow: 1, - doy: 7, - }, - }); - return ka; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); +}; + +module.exports = createSet; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Kazakh [kk] -//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; - //! moment.js locale configuration +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; - var suffixes = { - 0: '-ші', - 1: '-ші', - 2: '-ші', - 3: '-ші', - 4: '-ші', - 5: '-ші', - 6: '-шы', - 7: '-ші', - 8: '-ші', - 9: '-шы', - 10: '-шы', - 20: '-шы', - 30: '-шы', - 40: '-шы', - 50: '-ші', - 60: '-шы', - 70: '-ші', - 80: '-ші', - 90: '-шы', - 100: '-ші', - }; + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - var kk = moment.defineLocale('kk', { - months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( - '_' - ), - monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), - weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( - '_' - ), - weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), - weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Бүгін сағат] LT', - nextDay: '[Ертең сағат] LT', - nextWeek: 'dddd [сағат] LT', - lastDay: '[Кеше сағат] LT', - lastWeek: '[Өткен аптаның] dddd [сағат] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ішінде', - past: '%s бұрын', - s: 'бірнеше секунд', - ss: '%d секунд', - m: 'бір минут', - mm: '%d минут', - h: 'бір сағат', - hh: '%d сағат', - d: 'бір күн', - dd: '%d күн', - M: 'бір ай', - MM: '%d ай', - y: 'бір жыл', - yy: '%d жыл', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, - ordinal: function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + stack.set(array, other); + stack.set(other, array); - return kk; + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; -}))); + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); -/***/ }), + case mapTag: + var convert = mapToArray; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/km.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/km.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); -//! moment.js locale configuration -//! locale : Cambodian [km] -//! author : Kruy Vanna : https://github.com/kruyvanna + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; - //! moment.js locale configuration + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} - var symbolMap = { - '1': '១', - '2': '២', - '3': '៣', - '4': '៤', - '5': '៥', - '6': '៦', - '7': '៧', - '8': '៨', - '9': '៩', - '0': '០', - }, - numberMap = { - '១': '1', - '២': '2', - '៣': '3', - '៤': '4', - '៥': '5', - '៦': '6', - '៧': '7', - '៨': '8', - '៩': '9', - '០': '0', - }; +module.exports = equalByTag; - var km = moment.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( - '_' - ), - monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( - '_' - ), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), - weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - meridiemParse: /ព្រឹក|ល្ងាច/, - isPM: function (input) { - return input === 'ល្ងាច'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ព្រឹក'; - } else { - return 'ល្ងាច'; - } - }, - calendar: { - sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - ss: '%d វិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ', - }, - dayOfMonthOrdinalParse: /ទី\d{1,2}/, - ordinal: 'ទី%d', - preparse: function (string) { - return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return km; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js"); -/***/ }), +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used for built-in method references. */ +var objectProto = Object.prototype; -//! moment.js locale configuration -//! locale : Kannada [kn] -//! author : Rajeev Naik : https://github.com/rajeevnaikte +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; - //! moment.js locale configuration + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); - var symbolMap = { - '1': '೧', - '2': '೨', - '3': '೩', - '4': '೪', - '5': '೫', - '6': '೬', - '7': '೭', - '8': '೮', - '9': '೯', - '0': '೦', - }, - numberMap = { - '೧': '1', - '೨': '2', - '೩': '3', - '೪': '4', - '೫': '5', - '೬': '6', - '೭': '7', - '೮': '8', - '೯': '9', - '೦': '0', - }; + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; - var kn = moment.defineLocale('kn', { - months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( - '_' - ), - monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( - '_' - ), - weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), - weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm', - LLLL: 'dddd, D MMMM YYYY, A h:mm', - }, - calendar: { - sameDay: '[ಇಂದು] LT', - nextDay: '[ನಾಳೆ] LT', - nextWeek: 'dddd, LT', - lastDay: '[ನಿನ್ನೆ] LT', - lastWeek: '[ಕೊನೆಯ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ನಂತರ', - past: '%s ಹಿಂದೆ', - s: 'ಕೆಲವು ಕ್ಷಣಗಳು', - ss: '%d ಸೆಕೆಂಡುಗಳು', - m: 'ಒಂದು ನಿಮಿಷ', - mm: '%d ನಿಮಿಷ', - h: 'ಒಂದು ಗಂಟೆ', - hh: '%d ಗಂಟೆ', - d: 'ಒಂದು ದಿನ', - dd: '%d ದಿನ', - M: 'ಒಂದು ತಿಂಗಳು', - MM: '%d ತಿಂಗಳು', - y: 'ಒಂದು ವರ್ಷ', - yy: '%d ವರ್ಷ', - }, - preparse: function (string) { - return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ರಾತ್ರಿ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { - return hour; - } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ಸಂಜೆ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ರಾತ್ರಿ'; - } else if (hour < 10) { - return 'ಬೆಳಿಗ್ಗೆ'; - } else if (hour < 17) { - return 'ಮಧ್ಯಾಹ್ನ'; - } else if (hour < 20) { - return 'ಸಂಜೆ'; - } else { - return 'ರಾತ್ರಿ'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, - ordinal: function (number) { - return number + 'ನೇ'; - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; - return kn; + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} -}))); +module.exports = equalObjects; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ko.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ko.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js ***! + \************************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Korean [ko] -//! author : Kyungwook, Park : https://github.com/kyungw00k -//! author : Jeeeyul Lee +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = freeGlobal; - //! moment.js locale configuration - var ko = moment.defineLocale('ko', { - months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( - '_' - ), - weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort: '일_월_화_수_목_금_토'.split('_'), - weekdaysMin: '일_월_화_수_목_금_토'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'YYYY.MM.DD.', - LL: 'YYYY년 MMMM D일', - LLL: 'YYYY년 MMMM D일 A h:mm', - LLLL: 'YYYY년 MMMM D일 dddd A h:mm', - l: 'YYYY.MM.DD.', - ll: 'YYYY년 MMMM D일', - lll: 'YYYY년 MMMM D일 A h:mm', - llll: 'YYYY년 MMMM D일 dddd A h:mm', - }, - calendar: { - sameDay: '오늘 LT', - nextDay: '내일 LT', - nextWeek: 'dddd LT', - lastDay: '어제 LT', - lastWeek: '지난주 dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s 후', - past: '%s 전', - s: '몇 초', - ss: '%d초', - m: '1분', - mm: '%d분', - h: '한 시간', - hh: '%d시간', - d: '하루', - dd: '%d일', - M: '한 달', - MM: '%d달', - y: '일 년', - yy: '%d년', - }, - dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '일'; - case 'M': - return number + '월'; - case 'w': - case 'W': - return number + '주'; - default: - return number; - } - }, - meridiemParse: /오전|오후/, - isPM: function (token) { - return token === '오후'; - }, - meridiem: function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - }, - }); +/***/ }), - return ko; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js"); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +module.exports = getAllKeys; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ku.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ku.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Kurdish [ku] -//! author : Shahram Mebashar : https://github.com/ShahramMebashar +var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} - //! moment.js locale configuration +module.exports = getMapData; - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠', - }, - numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0', - }, - months = [ - 'کانونی دووەم', - 'شوبات', - 'ئازار', - 'نیسان', - 'ئایار', - 'حوزەیران', - 'تەمموز', - 'ئاب', - 'ئەیلوول', - 'تشرینی یەكەم', - 'تشرینی دووەم', - 'كانونی یەکەم', - ]; - var ku = moment.defineLocale('ku', { - months: months, - monthsShort: months, - weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split( - '_' - ), - weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split( - '_' - ), - weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - meridiemParse: /ئێواره‌|به‌یانی/, - isPM: function (input) { - return /ئێواره‌/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'به‌یانی'; - } else { - return 'ئێواره‌'; - } - }, - calendar: { - sameDay: '[ئه‌مرۆ كاتژمێر] LT', - nextDay: '[به‌یانی كاتژمێر] LT', - nextWeek: 'dddd [كاتژمێر] LT', - lastDay: '[دوێنێ كاتژمێر] LT', - lastWeek: 'dddd [كاتژمێر] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'له‌ %s', - past: '%s', - s: 'چه‌ند چركه‌یه‌ك', - ss: 'چركه‌ %d', - m: 'یه‌ك خوله‌ك', - mm: '%d خوله‌ك', - h: 'یه‌ك كاتژمێر', - hh: '%d كاتژمێر', - d: 'یه‌ك ڕۆژ', - dd: '%d ڕۆژ', - M: 'یه‌ك مانگ', - MM: '%d مانگ', - y: 'یه‌ك ساڵ', - yy: '%d ساڵ', - }, - preparse: function (string) { - return string - .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); +/***/ }), - return ku; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js"); +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; -/***/ }), + while (length--) { + var key = result[length], + value = object[key]; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ky.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ky.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} -//! moment.js locale configuration -//! locale : Kyrgyz [ky] -//! author : Chyngyz Arystan uulu : https://github.com/chyngyz +module.exports = getMatchData; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var suffixes = { - 0: '-чү', - 1: '-чи', - 2: '-чи', - 3: '-чү', - 4: '-чү', - 5: '-чи', - 6: '-чы', - 7: '-чи', - 8: '-чи', - 9: '-чу', - 10: '-чу', - 20: '-чы', - 30: '-чу', - 40: '-чы', - 50: '-чү', - 60: '-чы', - 70: '-чи', - 80: '-чи', - 90: '-чу', - 100: '-чү', - }; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var ky = moment.defineLocale('ky', { - months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( - '_' - ), - monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( - '_' - ), - weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( - '_' - ), - weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), - weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Бүгүн саат] LT', - nextDay: '[Эртең саат] LT', - nextWeek: 'dddd [саат] LT', - lastDay: '[Кечээ саат] LT', - lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ичинде', - past: '%s мурун', - s: 'бирнече секунд', - ss: '%d секунд', - m: 'бир мүнөт', - mm: '%d мүнөт', - h: 'бир саат', - hh: '%d саат', - d: 'бир күн', - dd: '%d күн', - M: 'бир ай', - MM: '%d ай', - y: 'бир жыл', - yy: '%d жыл', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, - ordinal: function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js"), + getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js"); - return ky; +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} -}))); +module.exports = getNative; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lb.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lb.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Luxembourgish [lb] -//! author : mweimerskirch : https://github.com/mweimerskirch -//! author : David Raison : https://github.com/kwisatz +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eng Minutt', 'enger Minutt'], - h: ['eng Stonn', 'enger Stonn'], - d: ['een Dag', 'engem Dag'], - M: ['ee Mount', 'engem Mount'], - y: ['ee Joer', 'engem Joer'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; - } - function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; - } - /** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, - firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } - } +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - var lb = moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( - '_' - ), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - }, - }, - relativeTime: { - future: processFutureTime, - past: processPastTime, - s: 'e puer Sekonnen', - ss: '%d Sekonnen', - m: processRelativeTime, - mm: '%d Minutten', - h: processRelativeTime, - hh: '%d Stonnen', - d: processRelativeTime, - dd: '%d Deeg', - M: processRelativeTime, - MM: '%d Méint', - y: processRelativeTime, - yy: '%d Joer', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - return lb; +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; -}))); + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Lao [lo] -//! author : Ryan Hart : https://github.com/ryanhart2 +var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; - var lo = moment.defineLocale('lo', { - months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( - '_' - ), - monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( - '_' - ), - weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'ວັນdddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, - isPM: function (input) { - return input === 'ຕອນແລງ'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ຕອນເຊົ້າ'; - } else { - return 'ຕອນແລງ'; - } - }, - calendar: { - sameDay: '[ມື້ນີ້ເວລາ] LT', - nextDay: '[ມື້ອື່ນເວລາ] LT', - nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', - lastDay: '[ມື້ວານນີ້ເວລາ] LT', - lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'ອີກ %s', - past: '%sຜ່ານມາ', - s: 'ບໍ່ເທົ່າໃດວິນາທີ', - ss: '%d ວິນາທີ', - m: '1 ນາທີ', - mm: '%d ນາທີ', - h: '1 ຊົ່ວໂມງ', - hh: '%d ຊົ່ວໂມງ', - d: '1 ມື້', - dd: '%d ມື້', - M: '1 ເດືອນ', - MM: '%d ເດືອນ', - y: '1 ປີ', - yy: '%d ປີ', - }, - dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, - ordinal: function (number) { - return 'ທີ່' + number; - }, - }); +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; - return lo; +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; -}))); +module.exports = getSymbols; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lt.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lt.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Lithuanian [lt] -//! author : Mindaugas Mozūras : https://github.com/mmozuras +var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js"), + Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js"), + baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; - //! moment.js locale configuration +var dataViewTag = '[object DataView]'; - var units = { - ss: 'sekundė_sekundžių_sekundes', - m: 'minutė_minutės_minutę', - mm: 'minutės_minučių_minutes', - h: 'valanda_valandos_valandą', - hh: 'valandos_valandų_valandas', - d: 'diena_dienos_dieną', - dd: 'dienos_dienų_dienas', - M: 'mėnuo_mėnesio_mėnesį', - MM: 'mėnesiai_mėnesių_mėnesius', - y: 'metai_metų_metus', - yy: 'metai_metų_metus', - }; - function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } - } - function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix - ? forms(key)[0] - : isFuture - ? forms(key)[1] - : forms(key)[2]; - } - function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); - } - function forms(key) { - return units[key].split('_'); - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return ( - result + translateSingular(number, withoutSuffix, key[0], isFuture) - ); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } - } - var lt = moment.defineLocale('lt', { - months: { - format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( - '_' - ), - standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( - '_' - ), - isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, - }, - monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays: { - format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( - '_' - ), - standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( - '_' - ), - isFormat: /dddd HH:mm/, - }, - weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY [m.] MMMM D [d.]', - LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l: 'YYYY-MM-DD', - ll: 'YYYY [m.] MMMM D [d.]', - lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', - }, - calendar: { - sameDay: '[Šiandien] LT', - nextDay: '[Rytoj] LT', - nextWeek: 'dddd LT', - lastDay: '[Vakar] LT', - lastWeek: '[Praėjusį] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: 'po %s', - past: 'prieš %s', - s: translateSeconds, - ss: translate, - m: translateSingular, - mm: translate, - h: translateSingular, - hh: translate, - d: translateSingular, - dd: translate, - M: translateSingular, - MM: translate, - y: translateSingular, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}-oji/, - ordinal: function (number) { - return number + '-oji'; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); - return lt; +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; -}))); +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +module.exports = getTag; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Latvian [lv] -//! author : Kristaps Karlsons : https://github.com/skakri -//! author : Jānis Elmeris : https://github.com/JanisE +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = getValue; - //! moment.js locale configuration - var units = { - ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), - m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), - mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), - h: 'stundas_stundām_stunda_stundas'.split('_'), - hh: 'stundas_stundām_stunda_stundas'.split('_'), - d: 'dienas_dienām_diena_dienas'.split('_'), - dd: 'dienas_dienām_diena_dienas'.split('_'), - M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - y: 'gada_gadiem_gads_gadi'.split('_'), - yy: 'gada_gadiem_gads_gadi'.split('_'), - }; - /** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ - function format(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; - } - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); - } - function relativeTimeWithSingular(number, withoutSuffix, key) { - return format(units[key], number, withoutSuffix); - } - function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; - } +/***/ }), - var lv = moment.defineLocale('lv', { - months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( - '_' - ), - weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY.', - LL: 'YYYY. [gada] D. MMMM', - LLL: 'YYYY. [gada] D. MMMM, HH:mm', - LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', - }, - calendar: { - sameDay: '[Šodien pulksten] LT', - nextDay: '[Rīt pulksten] LT', - nextWeek: 'dddd [pulksten] LT', - lastDay: '[Vakar pulksten] LT', - lastWeek: '[Pagājušā] dddd [pulksten] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'pēc %s', - past: 'pirms %s', - s: relativeSeconds, - ss: relativeTimeWithPlural, - m: relativeTimeWithSingular, - mm: relativeTimeWithPlural, - h: relativeTimeWithSingular, - hh: relativeTimeWithPlural, - d: relativeTimeWithSingular, - dd: relativeTimeWithPlural, - M: relativeTimeWithSingular, - MM: relativeTimeWithPlural, - y: relativeTimeWithSingular, - yy: relativeTimeWithPlural, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return lv; +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); -}))); +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +module.exports = hasPath; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/me.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/me.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Montenegrin [me] -//! author : Miodrag Nikač : https://github.com/miodragnikac +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} - //! moment.js locale configuration +module.exports = hashClear; - var translator = { - words: { - //Different grammatical cases - ss: ['sekund', 'sekunda', 'sekundi'], - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'], - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 - ? wordKey[0] - : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return ( - number + - ' ' + - translator.correctGrammaticalCase(number, wordKey) - ); - } - }, - }; - var me = moment.defineLocale('me', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', +/***/ }), - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[juče u] LT', - lastWeek: function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT', - ]; - return lastWeekDays[this.day()]; - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'prije %s', - s: 'nekoliko sekundi', - ss: translator.translate, - m: translator.translate, - mm: translator.translate, - h: translator.translate, - hh: translator.translate, - d: 'dan', - dd: translator.translate, - M: 'mjesec', - MM: translator.translate, - y: 'godinu', - yy: translator.translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js ***! + \************************************************************************************************/ +/***/ ((module) => { - return me; +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} -}))); +module.exports = hashDelete; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Maori [mi] -//! author : John Corrigan : https://github.com/johnideal +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - //! moment.js locale configuration +/** Used for built-in method references. */ +var objectProto = Object.prototype; - var mi = moment.defineLocale('mi', { - months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split( - '_' - ), - monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( - '_' - ), - monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, - weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), - weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [i] HH:mm', - LLLL: 'dddd, D MMMM YYYY [i] HH:mm', - }, - calendar: { - sameDay: '[i teie mahana, i] LT', - nextDay: '[apopo i] LT', - nextWeek: 'dddd [i] LT', - lastDay: '[inanahi i] LT', - lastWeek: 'dddd [whakamutunga i] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'i roto i %s', - past: '%s i mua', - s: 'te hēkona ruarua', - ss: '%d hēkona', - m: 'he meneti', - mm: '%d meneti', - h: 'te haora', - hh: '%d haora', - d: 'he ra', - dd: '%d ra', - M: 'he marama', - MM: '%d marama', - y: 'he tau', - yy: '%d tau', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - return mi; +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} -}))); +module.exports = hashGet; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Macedonian [mk] -//! author : Borislav Mickov : https://github.com/B0k0 -//! author : Sashko Todorov : https://github.com/bkyceh +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); - //! moment.js locale configuration +/** Used for built-in method references. */ +var objectProto = Object.prototype; - var mk = moment.defineLocale('mk', { - months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( - '_' - ), - monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( - '_' - ), - weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'D.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY H:mm', - LLLL: 'dddd, D MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[Денес во] LT', - nextDay: '[Утре во] LT', - nextWeek: '[Во] dddd [во] LT', - lastDay: '[Вчера во] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Изминатиот] dddd [во] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'за %s', - past: 'пред %s', - s: 'неколку секунди', - ss: '%d секунди', - m: 'една минута', - mm: '%d минути', - h: 'еден час', - hh: '%d часа', - d: 'еден ден', - dd: '%d дена', - M: 'еден месец', - MM: '%d месеци', - y: 'една година', - yy: '%d години', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal: function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - return mk; +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} -}))); +module.exports = hashHas; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ml.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ml.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Malayalam [ml] -//! author : Floyd Pink : https://github.com/floydpink +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - //! moment.js locale configuration +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} - var ml = moment.defineLocale('ml', { - months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( - '_' - ), - monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( - '_' - ), - weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat: { - LT: 'A h:mm -നു', - LTS: 'A h:mm:ss -നു', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm -നു', - LLLL: 'dddd, D MMMM YYYY, A h:mm -നു', - }, - calendar: { - sameDay: '[ഇന്ന്] LT', - nextDay: '[നാളെ] LT', - nextWeek: 'dddd, LT', - lastDay: '[ഇന്നലെ] LT', - lastWeek: '[കഴിഞ്ഞ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s കഴിഞ്ഞ്', - past: '%s മുൻപ്', - s: 'അൽപ നിമിഷങ്ങൾ', - ss: '%d സെക്കൻഡ്', - m: 'ഒരു മിനിറ്റ്', - mm: '%d മിനിറ്റ്', - h: 'ഒരു മണിക്കൂർ', - hh: '%d മണിക്കൂർ', - d: 'ഒരു ദിവസം', - dd: '%d ദിവസം', - M: 'ഒരു മാസം', - MM: '%d മാസം', - y: 'ഒരു വർഷം', - yy: '%d വർഷം', - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - (meridiem === 'രാത്രി' && hour >= 4) || - meridiem === 'ഉച്ച കഴിഞ്ഞ്' || - meridiem === 'വൈകുന്നേരം' - ) { - return hour + 12; - } else { - return hour; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - }, - }); +module.exports = hashSet; - return ml; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js ***! + \*********************************************************************************************/ +/***/ ((module) => { + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Mongolian [mn] -//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7 +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; - //! moment.js locale configuration +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} - function translate(number, withoutSuffix, key, isFuture) { - switch (key) { - case 's': - return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын'; - case 'ss': - return number + (withoutSuffix ? ' секунд' : ' секундын'); - case 'm': - case 'mm': - return number + (withoutSuffix ? ' минут' : ' минутын'); - case 'h': - case 'hh': - return number + (withoutSuffix ? ' цаг' : ' цагийн'); - case 'd': - case 'dd': - return number + (withoutSuffix ? ' өдөр' : ' өдрийн'); - case 'M': - case 'MM': - return number + (withoutSuffix ? ' сар' : ' сарын'); - case 'y': - case 'yy': - return number + (withoutSuffix ? ' жил' : ' жилийн'); - default: - return number; - } - } +module.exports = isKey; - var mn = moment.defineLocale('mn', { - months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( - '_' - ), - monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), - weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), - weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY оны MMMMын D', - LLL: 'YYYY оны MMMMын D HH:mm', - LLLL: 'dddd, YYYY оны MMMMын D HH:mm', - }, - meridiemParse: /ҮӨ|ҮХ/i, - isPM: function (input) { - return input === 'ҮХ'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ҮӨ'; - } else { - return 'ҮХ'; - } - }, - calendar: { - sameDay: '[Өнөөдөр] LT', - nextDay: '[Маргааш] LT', - nextWeek: '[Ирэх] dddd LT', - lastDay: '[Өчигдөр] LT', - lastWeek: '[Өнгөрсөн] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s дараа', - past: '%s өмнө', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2} өдөр/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + ' өдөр'; - default: - return number; - } - }, - }); - return mn; +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} -}))); +module.exports = isKeyable; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Marathi [mr] -//! author : Harshad Kale : https://github.com/kalehv -//! author : Vivek Athalye : https://github.com/vnathalye +var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); - //! moment.js locale configuration +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०', - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0', - }; +module.exports = isMasked; - function relativeTimeMr(number, withoutSuffix, string, isFuture) { - var output = ''; - if (withoutSuffix) { - switch (string) { - case 's': - output = 'काही सेकंद'; - break; - case 'ss': - output = '%d सेकंद'; - break; - case 'm': - output = 'एक मिनिट'; - break; - case 'mm': - output = '%d मिनिटे'; - break; - case 'h': - output = 'एक तास'; - break; - case 'hh': - output = '%d तास'; - break; - case 'd': - output = 'एक दिवस'; - break; - case 'dd': - output = '%d दिवस'; - break; - case 'M': - output = 'एक महिना'; - break; - case 'MM': - output = '%d महिने'; - break; - case 'y': - output = 'एक वर्ष'; - break; - case 'yy': - output = '%d वर्षे'; - break; - } - } else { - switch (string) { - case 's': - output = 'काही सेकंदां'; - break; - case 'ss': - output = '%d सेकंदां'; - break; - case 'm': - output = 'एका मिनिटा'; - break; - case 'mm': - output = '%d मिनिटां'; - break; - case 'h': - output = 'एका तासा'; - break; - case 'hh': - output = '%d तासां'; - break; - case 'd': - output = 'एका दिवसा'; - break; - case 'dd': - output = '%d दिवसां'; - break; - case 'M': - output = 'एका महिन्या'; - break; - case 'MM': - output = '%d महिन्यां'; - break; - case 'y': - output = 'एका वर्षा'; - break; - case 'yy': - output = '%d वर्षां'; - break; - } - } - return output.replace(/%d/i, number); - } - var mr = moment.defineLocale('mr', { - months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( - '_' - ), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat: { - LT: 'A h:mm वाजता', - LTS: 'A h:mm:ss वाजता', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm वाजता', - LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता', - }, - calendar: { - sameDay: '[आज] LT', - nextDay: '[उद्या] LT', - nextWeek: 'dddd, LT', - lastDay: '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%sमध्ये', - past: '%sपूर्वी', - s: relativeTimeMr, - ss: relativeTimeMr, - m: relativeTimeMr, - mm: relativeTimeMr, - h: relativeTimeMr, - hh: relativeTimeMr, - d: relativeTimeMr, - dd: relativeTimeMr, - M: relativeTimeMr, - MM: relativeTimeMr, - y: relativeTimeMr, - yy: relativeTimeMr, - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { - return hour; - } else if ( - meridiem === 'दुपारी' || - meridiem === 'सायंकाळी' || - meridiem === 'रात्री' - ) { - return hour >= 12 ? hour : hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour >= 0 && hour < 6) { - return 'पहाटे'; - } else if (hour < 12) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ }), - return mr; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js ***! + \*************************************************************************************************/ +/***/ ((module) => { -}))); +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Malay [ms-my] -//! note : DEPRECATED, the correct one is [ms] -//! author : Weldan Jamili : https://github.com/weldan +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} - //! moment.js locale configuration +module.exports = isStrictComparable; - var msMy = moment.defineLocale('ms-my', { - months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar: { - sameDay: '[Hari ini pukul] LT', - nextDay: '[Esok pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kelmarin pukul] LT', - lastWeek: 'dddd [lepas pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dalam %s', - past: '%s yang lepas', - s: 'beberapa saat', - ss: '%d saat', - m: 'seminit', - mm: '%d minit', - h: 'sejam', - hh: '%d jam', - d: 'sehari', - dd: '%d hari', - M: 'sebulan', - MM: '%d bulan', - y: 'setahun', - yy: '%d tahun', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return msMy; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js ***! + \****************************************************************************************************/ +/***/ ((module) => { + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Malay [ms] -//! author : Weldan Jamili : https://github.com/weldan +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var arrayProto = Array.prototype; - //! moment.js locale configuration +/** Built-in value references. */ +var splice = arrayProto.splice; - var ms = moment.defineLocale('ms', { - months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar: { - sameDay: '[Hari ini pukul] LT', - nextDay: '[Esok pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kelmarin pukul] LT', - lastWeek: 'dddd [lepas pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dalam %s', - past: '%s yang lepas', - s: 'beberapa saat', - ss: '%d saat', - m: 'seminit', - mm: '%d minit', - h: 'sejam', - hh: '%d jam', - d: 'sehari', - dd: '%d hari', - M: 'sebulan', - MM: '%d bulan', - y: 'setahun', - yy: '%d tahun', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - return ms; + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} -}))); +module.exports = listCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mt.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mt.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Maltese (Malta) [mt] -//! author : Alessandro Maruccia : https://github.com/alesma +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - //! moment.js locale configuration + return index < 0 ? undefined : data[index][1]; +} - var mt = moment.defineLocale('mt', { - months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( - '_' - ), - monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), - weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( - '_' - ), - weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), - weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Illum fil-]LT', - nextDay: '[Għada fil-]LT', - nextWeek: 'dddd [fil-]LT', - lastDay: '[Il-bieraħ fil-]LT', - lastWeek: 'dddd [li għadda] [fil-]LT', - sameElse: 'L', - }, - relativeTime: { - future: 'f’ %s', - past: '%s ilu', - s: 'ftit sekondi', - ss: '%d sekondi', - m: 'minuta', - mm: '%d minuti', - h: 'siegħa', - hh: '%d siegħat', - d: 'ġurnata', - dd: '%d ġranet', - M: 'xahar', - MM: '%d xhur', - y: 'sena', - yy: '%d sni', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = listCacheGet; - return mt; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/my.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/my.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} -//! moment.js locale configuration -//! locale : Burmese [my] -//! author : Squar team, mysquar.com -//! author : David Rossellat : https://github.com/gholadr -//! author : Tin Aung Lin : https://github.com/thanyawzinmin +module.exports = listCacheHas; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var symbolMap = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀', - }, - numberMap = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0', - }; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var my = moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( - '_' - ), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( - '_' - ), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L', - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - ss: '%d စက္ကန့်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်', - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); - return my; + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} -}))); +module.exports = listCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nb.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nb.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Norwegian Bokmål [nb] -//! authors : Espen Hovlandsdal : https://github.com/rexxars -//! Sigurd Gartmann : https://github.com/sigurdga -//! Stephen Ramthun : https://github.com/stephenramthun +var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js"), + ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} - //! moment.js locale configuration +module.exports = mapCacheClear; - var nb = moment.defineLocale('nb', { - months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( - '_' - ), - monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), - weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY [kl.] HH:mm', - LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', - }, - calendar: { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: '%s siden', - s: 'noen sekunder', - ss: '%d sekunder', - m: 'ett minutt', - mm: '%d minutter', - h: 'en time', - hh: '%d timer', - d: 'en dag', - dd: '%d dager', - M: 'en måned', - MM: '%d måneder', - y: 'ett år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return nb; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ne.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ne.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Nepalese [ne] -//! author : suvash : https://github.com/suvash +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} - //! moment.js locale configuration +module.exports = mapCacheGet; - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०', - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0', - }; - var ne = moment.defineLocale('ne', { - months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( - '_' - ), - monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( - '_' - ), - weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'Aको h:mm बजे', - LTS: 'Aको h:mm:ss बजे', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, Aको h:mm बजे', - LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे', - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /राति|बिहान|दिउँसो|साँझ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राति') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 3) { - return 'राति'; - } else if (hour < 12) { - return 'बिहान'; - } else if (hour < 16) { - return 'दिउँसो'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राति'; - } - }, - calendar: { - sameDay: '[आज] LT', - nextDay: '[भोलि] LT', - nextWeek: '[आउँदो] dddd[,] LT', - lastDay: '[हिजो] LT', - lastWeek: '[गएको] dddd[,] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%sमा', - past: '%s अगाडि', - s: 'केही क्षण', - ss: '%d सेकेण्ड', - m: 'एक मिनेट', - mm: '%d मिनेट', - h: 'एक घण्टा', - hh: '%d घण्टा', - d: 'एक दिन', - dd: '%d दिन', - M: 'एक महिना', - MM: '%d महिना', - y: 'एक बर्ष', - yy: '%d बर्ष', - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; - return ne; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} -}))); +module.exports = mapCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Dutch (Belgium) [nl-be] -//! author : Joris Röling : https://github.com/jorisroling -//! author : Jacob Middag : https://github.com/middagj - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js ***! + \************************************************************************************************/ +/***/ ((module) => { - //! moment.js locale configuration +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); - var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( - '_' - ), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( - '_' - ), - monthsParse = [ - /^jan/i, - /^feb/i, - /^maart|mrt.?$/i, - /^apr/i, - /^mei$/i, - /^jun[i.]?$/i, - /^jul[i.]?$/i, - /^aug/i, - /^sep/i, - /^okt/i, - /^nov/i, - /^dec/i, - ], - monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} - var nlBe = moment.defineLocale('nl-be', { - months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, +module.exports = mapToArray; - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, +/***/ }), - weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( - '_' - ), - weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'over %s', - past: '%s geleden', - s: 'een paar seconden', - ss: '%d seconden', - m: 'één minuut', - mm: '%d minuten', - h: 'één uur', - hh: '%d uur', - d: 'één dag', - dd: '%d dagen', - M: 'één maand', - MM: '%d maanden', - y: 'één jaar', - yy: '%d jaar', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js ***! + \*************************************************************************************************************/ +/***/ ((module) => { - return nlBe; +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} -}))); +module.exports = matchesStrictComparable; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Dutch [nl] -//! author : Joris Röling : https://github.com/jorisroling -//! author : Jacob Middag : https://github.com/middagj +var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; - //! moment.js locale configuration +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); - var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( - '_' - ), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( - '_' - ), - monthsParse = [ - /^jan/i, - /^feb/i, - /^maart|mrt.?$/i, - /^apr/i, - /^mei$/i, - /^jun[i.]?$/i, - /^jul[i.]?$/i, - /^aug/i, - /^sep/i, - /^okt/i, - /^nov/i, - /^dec/i, - ], - monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + var cache = result.cache; + return result; +} - var nl = moment.defineLocale('nl', { - months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, +module.exports = memoizeCapped; - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, +/***/ }), - weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( - '_' - ), - weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'over %s', - past: '%s geleden', - s: 'een paar seconden', - ss: '%d seconden', - m: 'één minuut', - mm: '%d minuten', - h: 'één uur', - hh: '%d uur', - d: 'één dag', - dd: '%d dagen', - M: 'één maand', - MM: '%d maanden', - y: 'één jaar', - yy: '%d jaar', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return nl; +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"); -}))); +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +module.exports = nativeCreate; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Nynorsk [nn] -//! authors : https://github.com/mechuwind -//! Stephen Ramthun : https://github.com/stephenramthun +var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); - //! moment.js locale configuration +module.exports = nativeKeys; - var nn = moment.defineLocale('nn', { - months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( - '_' - ), - monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), - weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY [kl.] H:mm', - LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', - }, - calendar: { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: '%s sidan', - s: 'nokre sekund', - ss: '%d sekund', - m: 'eit minutt', - mm: '%d minutt', - h: 'ein time', - hh: '%d timar', - d: 'ein dag', - dd: '%d dagar', - M: 'ein månad', - MM: '%d månader', - y: 'eit år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return nn; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js ***! + \**********************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); + +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js ***! - \*******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js ***! + \****************************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Occitan, lengadocian dialecte [oc-lnc] -//! author : Quentin PAGÈS : https://github.com/Quenty31 +/** Used for built-in method references. */ +var objectProto = Object.prototype; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - //! moment.js locale configuration +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} - var ocLnc = moment.defineLocale('oc-lnc', { - months: { - standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( - '_' - ), - format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( - '_' - ), - isFormat: /D[oD]?(\s)+MMMM/, - }, - monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( - '_' - ), - weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), - weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM [de] YYYY', - ll: 'D MMM YYYY', - LLL: 'D MMMM [de] YYYY [a] H:mm', - lll: 'D MMM YYYY, H:mm', - LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', - llll: 'ddd D MMM YYYY, H:mm', - }, - calendar: { - sameDay: '[uèi a] LT', - nextDay: '[deman a] LT', - nextWeek: 'dddd [a] LT', - lastDay: '[ièr a] LT', - lastWeek: 'dddd [passat a] LT', - sameElse: 'L', - }, - relativeTime: { - future: "d'aquí %s", - past: 'fa %s', - s: 'unas segondas', - ss: '%d segondas', - m: 'una minuta', - mm: '%d minutas', - h: 'una ora', - hh: '%d oras', - d: 'un jorn', - dd: '%d jorns', - M: 'un mes', - MM: '%d meses', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal: function (number, period) { - var output = - number === 1 - ? 'r' - : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, - }, - }); +module.exports = objectToString; - return ocLnc; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js ***! + \*********************************************************************************************/ +/***/ ((module) => { + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +module.exports = overArg; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Punjabi (India) [pa-in] -//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - //! moment.js locale configuration +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); - var symbolMap = { - '1': '੧', - '2': '੨', - '3': '੩', - '4': '੪', - '5': '੫', - '6': '੬', - '7': '੭', - '8': '੮', - '9': '੯', - '0': '੦', - }, - numberMap = { - '੧': '1', - '੨': '2', - '੩': '3', - '੪': '4', - '੫': '5', - '੬': '6', - '੭': '7', - '੮': '8', - '੯': '9', - '੦': '0', - }; +module.exports = root; - var paIn = moment.defineLocale('pa-in', { - // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. - months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( - '_' - ), - monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( - '_' - ), - weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( - '_' - ), - weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - longDateFormat: { - LT: 'A h:mm ਵਜੇ', - LTS: 'A h:mm:ss ਵਜੇ', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm ਵਜੇ', - LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ', - }, - calendar: { - sameDay: '[ਅਜ] LT', - nextDay: '[ਕਲ] LT', - nextWeek: '[ਅਗਲਾ] dddd, LT', - lastDay: '[ਕਲ] LT', - lastWeek: '[ਪਿਛਲੇ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ਵਿੱਚ', - past: '%s ਪਿਛਲੇ', - s: 'ਕੁਝ ਸਕਿੰਟ', - ss: '%d ਸਕਿੰਟ', - m: 'ਇਕ ਮਿੰਟ', - mm: '%d ਮਿੰਟ', - h: 'ਇੱਕ ਘੰਟਾ', - hh: '%d ਘੰਟੇ', - d: 'ਇੱਕ ਦਿਨ', - dd: '%d ਦਿਨ', - M: 'ਇੱਕ ਮਹੀਨਾ', - MM: '%d ਮਹੀਨੇ', - y: 'ਇੱਕ ਸਾਲ', - yy: '%d ਸਾਲ', - }, - preparse: function (string) { - return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Punjabi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. - meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ਰਾਤ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ਸਵੇਰ') { - return hour; - } else if (meridiem === 'ਦੁਪਹਿਰ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ਸ਼ਾਮ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ਰਾਤ'; - } else if (hour < 10) { - return 'ਸਵੇਰ'; - } else if (hour < 17) { - return 'ਦੁਪਹਿਰ'; - } else if (hour < 20) { - return 'ਸ਼ਾਮ'; - } else { - return 'ਰਾਤ'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); - return paIn; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js ***! + \*************************************************************************************************/ +/***/ ((module) => { + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +module.exports = setCacheAdd; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pl.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pl.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js ***! + \*************************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Polish [pl] -//! author : Rafal Hirsz : https://github.com/evoL +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = setCacheHas; - //! moment.js locale configuration - var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( - '_' - ), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( - '_' - ); - function plural(n) { - return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; - } - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - return result + (plural(number) ? 'sekundy' : 'sekund'); - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); - } - } +/***/ }), - var pl = moment.defineLocale('pl', { - months: function (momentToFormat, format) { - if (!momentToFormat) { - return monthsNominative; - } else if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return ( - '(' + - monthsSubjective[momentToFormat.month()] + - '|' + - monthsNominative[momentToFormat.month()] + - ')' - ); - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split( - '_' - ), - weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), - weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[W niedzielę o] LT'; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js ***! + \************************************************************************************************/ +/***/ ((module) => { - case 2: - return '[We wtorek o] LT'; +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); - case 3: - return '[W środę o] LT'; + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} - case 6: - return '[W sobotę o] LT'; +module.exports = setToArray; - default: - return '[W] dddd [o] LT'; - } - }, - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: '%s temu', - s: 'kilka sekund', - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: '1 dzień', - dd: '%d dni', - M: 'miesiąc', - MM: translate, - y: 'rok', - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return pl; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"); + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +module.exports = stackClear; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js ***! + \*************************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Portuguese (Brazil) [pt-br] -//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + this.size = data.size; + return result; +} - //! moment.js locale configuration +module.exports = stackDelete; - var ptBr = moment.defineLocale('pt-br', { - months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( - '_' - ), - monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( - '_' - ), - weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), - weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', - }, - calendar: { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return this.day() === 0 || this.day() === 6 - ? '[Último] dddd [às] LT' // Saturday + Sunday - : '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L', - }, - relativeTime: { - future: 'em %s', - past: 'há %s', - s: 'poucos segundos', - ss: '%d segundos', - m: 'um minuto', - mm: '%d minutos', - h: 'uma hora', - hh: '%d horas', - d: 'um dia', - dd: '%d dias', - M: 'um mês', - MM: '%d meses', - y: 'um ano', - yy: '%d anos', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - }); - return ptBr; +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js ***! + \**********************************************************************************************/ +/***/ ((module) => { + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +module.exports = stackGet; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js ***! + \**********************************************************************************************/ +/***/ ((module) => { + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} -}))); +module.exports = stackHas; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Portuguese [pt] -//! author : Jefferson : https://github.com/jalex79 - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //! moment.js locale configuration +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); - var pt = moment.defineLocale('pt', { - months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( - '_' - ), - monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( - '_' - ), - weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY HH:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', - }, - calendar: { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return this.day() === 0 || this.day() === 6 - ? '[Último] dddd [às] LT' // Saturday + Sunday - : '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L', - }, - relativeTime: { - future: 'em %s', - past: 'há %s', - s: 'segundos', - ss: '%d segundos', - m: 'um minuto', - mm: '%d minutos', - h: 'uma hora', - hh: '%d horas', - d: 'um dia', - dd: '%d dias', - M: 'um mês', - MM: '%d meses', - y: 'um ano', - yy: '%d anos', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - return pt; +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} -}))); +module.exports = stackSet; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ro.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ro.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Romanian [ro] -//! author : Vlad Gurdiga : https://github.com/gurdiga -//! author : Valentin Agachi : https://github.com/avaly -//! author : Emanuel Cepoi : https://github.com/cepem - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ ((module) => { - //! moment.js locale configuration +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: 'secunde', - mm: 'minute', - hh: 'ore', - dd: 'zile', - MM: 'luni', - yy: 'ani', - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; + while (++index < length) { + if (array[index] === value) { + return index; } + } + return -1; +} - var ro = moment.defineLocale('ro', { - months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( - '_' - ), - monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY H:mm', - LLLL: 'dddd, D MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'peste %s', - past: '%s în urmă', - s: 'câteva secunde', - ss: relativeTimeWithPlural, - m: 'un minut', - mm: relativeTimeWithPlural, - h: 'o oră', - hh: relativeTimeWithPlural, - d: 'o zi', - dd: relativeTimeWithPlural, - M: 'o lună', - MM: relativeTimeWithPlural, - y: 'un an', - yy: relativeTimeWithPlural, - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - - return ro; - -}))); +module.exports = strictIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ru.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ru.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Russian [ru] -//! author : Viktorminator : https://github.com/Viktorminator -//! author : Menelion Elensúle : https://github.com/Oire -//! author : Коренберг Марк : https://github.com/socketpair +var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - //! moment.js locale configuration +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 - ? forms[0] - : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - hh: 'час_часа_часов', - dd: 'день_дня_дней', - MM: 'месяц_месяца_месяцев', - yy: 'год_года_лет', - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } else { - return number + ' ' + plural(format[key], +number); - } - } - var monthsParse = [ - /^янв/i, - /^фев/i, - /^мар/i, - /^апр/i, - /^ма[йя]/i, - /^июн/i, - /^июл/i, - /^авг/i, - /^сен/i, - /^окт/i, - /^ноя/i, - /^дек/i, - ]; +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); - // http://new.gramota.ru/spravka/rules/139-prop : § 103 - // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 - // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 - var ru = moment.defineLocale('ru', { - months: { - format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( - '_' - ), - standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( - '_' - ), - }, - monthsShort: { - // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку? - format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( - '_' - ), - standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( - '_' - ), - }, - weekdays: { - standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( - '_' - ), - format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( - '_' - ), - isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/, - }, - weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, +module.exports = stringToPath; - // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки - monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, - // копия предыдущего - monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, +/***/ }), - // полные названия с падежами - monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // Выражение, которое соответствует только сокращённым формам - monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY г.', - LLL: 'D MMMM YYYY г., H:mm', - LLLL: 'dddd, D MMMM YYYY г., H:mm', - }, - calendar: { - sameDay: '[Сегодня, в] LT', - nextDay: '[Завтра, в] LT', - lastDay: '[Вчера, в] LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В следующее] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В следующий] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В следующую] dddd, [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd, [в] LT'; - } else { - return '[В] dddd, [в] LT'; - } - } - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd, [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd, [в] LT'; - } else { - return '[В] dddd, [в] LT'; - } - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'через %s', - past: '%s назад', - s: 'несколько секунд', - ss: relativeTimeWithPlural, - m: relativeTimeWithPlural, - mm: relativeTimeWithPlural, - h: 'час', - hh: relativeTimeWithPlural, - d: 'день', - dd: relativeTimeWithPlural, - M: 'месяц', - MM: relativeTimeWithPlural, - y: 'год', - yy: relativeTimeWithPlural, - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM: function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); - return ru; +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; -}))); +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = toKey; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sd.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sd.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Sindhi [sd] -//! author : Narain Sagar : https://github.com/narainsagar +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var funcProto = Function.prototype; - //! moment.js locale configuration +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - var months = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر', - ], - days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} - var sd = moment.defineLocale('sd', { - months: months, - monthsShort: months, - weekdays: days, - weekdaysShort: days, - weekdaysMin: days, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd، D MMMM YYYY HH:mm', - }, - meridiemParse: /صبح|شام/, - isPM: function (input) { - return 'شام' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; - } - return 'شام'; - }, - calendar: { - sameDay: '[اڄ] LT', - nextDay: '[سڀاڻي] LT', - nextWeek: 'dddd [اڳين هفتي تي] LT', - lastDay: '[ڪالهه] LT', - lastWeek: '[گزريل هفتي] dddd [تي] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s پوء', - past: '%s اڳ', - s: 'چند سيڪنڊ', - ss: '%d سيڪنڊ', - m: 'هڪ منٽ', - mm: '%d منٽ', - h: 'هڪ ڪلاڪ', - hh: '%d ڪلاڪ', - d: 'هڪ ڏينهن', - dd: '%d ڏينهن', - M: 'هڪ مهينو', - MM: '%d مهينا', - y: 'هڪ سال', - yy: '%d سال', - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = toSource; - return sd; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js ***! + \***************************************************************************************/ +/***/ ((module) => { -/***/ }), +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/se.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/se.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +module.exports = eq; -//! moment.js locale configuration -//! locale : Northern Sami [se] -//! authors : Bård Rolstad Henriksen : https://github.com/karamell -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js ***! + \****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var se = moment.defineLocale('se', { - months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( - '_' - ), - monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split( - '_' - ), - weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( - '_' - ), - weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), - weekdaysMin: 's_v_m_g_d_b_L'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'MMMM D. [b.] YYYY', - LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', - LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', - }, - calendar: { - sameDay: '[otne ti] LT', - nextDay: '[ihttin ti] LT', - nextWeek: 'dddd [ti] LT', - lastDay: '[ikte ti] LT', - lastWeek: '[ovddit] dddd [ti] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s geažes', - past: 'maŋit %s', - s: 'moadde sekunddat', - ss: '%d sekunddat', - m: 'okta minuhta', - mm: '%d minuhtat', - h: 'okta diimmu', - hh: '%d diimmut', - d: 'okta beaivi', - dd: '%d beaivvit', - M: 'okta mánnu', - MM: '%d mánut', - y: 'okta jahki', - yy: '%d jagit', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); - return se; +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} -}))); +module.exports = get; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/si.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/si.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Sinhalese [si] -//! author : Sampath Sitinamaluwa : https://github.com/sampathsris +var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} - //! moment.js locale configuration +module.exports = hasIn; - /*jshint -W100*/ - var si = moment.defineLocale('si', { - months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( - '_' - ), - monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( - '_' - ), - weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( - '_' - ), - weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), - weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'a h:mm', - LTS: 'a h:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY MMMM D', - LLL: 'YYYY MMMM D, a h:mm', - LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', - }, - calendar: { - sameDay: '[අද] LT[ට]', - nextDay: '[හෙට] LT[ට]', - nextWeek: 'dddd LT[ට]', - lastDay: '[ඊයේ] LT[ට]', - lastWeek: '[පසුගිය] dddd LT[ට]', - sameElse: 'L', - }, - relativeTime: { - future: '%sකින්', - past: '%sකට පෙර', - s: 'තත්පර කිහිපය', - ss: 'තත්පර %d', - m: 'මිනිත්තුව', - mm: 'මිනිත්තු %d', - h: 'පැය', - hh: 'පැය %d', - d: 'දිනය', - dd: 'දින %d', - M: 'මාසය', - MM: 'මාස %d', - y: 'වසර', - yy: 'වසර %d', - }, - dayOfMonthOrdinalParse: /\d{1,2} වැනි/, - ordinal: function (number) { - return number + ' වැනි'; - }, - meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, - isPM: function (input) { - return input === 'ප.ව.' || input === 'පස් වරු'; - }, - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } - }, - }); - return si; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js ***! + \*********************************************************************************************/ +/***/ ((module) => { + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +module.exports = identity; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Slovak [sk] -//! author : Martin Minka : https://github.com/k2s -//! based on work of petrbela : https://github.com/petrbela +var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( - '_' - ), - monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); - function plural(n) { - return n > 1 && n < 5; - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; - case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'sekundy' : 'sekúnd'); - } else { - return result + 'sekundami'; - } - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - case 'd': // a day / in a day / a day ago - return withoutSuffix || isFuture ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - case 'M': // a month / in a month / a month ago - return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - case 'y': // a year / in a year / a year ago - return withoutSuffix || isFuture ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - } - } +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; - var sk = moment.defineLocale('sk', { - months: months, - monthsShort: monthsShort, - weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'pred %s', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; - return sk; +module.exports = isArguments; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js ***! + \********************************************************************************************/ +/***/ ((module) => { + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sl.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sl.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Slovenian [sl] -//! author : Robert Sedovšek : https://github.com/sedovsek +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} - //! moment.js locale configuration +module.exports = isArrayLike; - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture - ? 'nekaj sekund' - : 'nekaj sekundami'; - case 'ss': - if (number === 1) { - result += withoutSuffix ? 'sekundo' : 'sekundi'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah'; - } else { - result += 'sekund'; - } - return result; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; - } - } - var sl = moment.defineLocale('sl', { - months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danes ob] LT', - nextDay: '[jutri ob] LT', +/***/ }), - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay: '[včeraj ob] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'čez %s', - past: 'pred %s', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js ***! + \*********************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { - return sl; +/* module decorator */ module = __webpack_require__.nmd(module); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"), + stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js"); -}))); +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sq.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sq.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Albanian [sq] -//! author : Flakërim Ismani : https://github.com/flakerimi -//! author : Menelion Elensúle : https://github.com/Oire -//! author : Oerd Cukalla : https://github.com/oerd +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; - //! moment.js locale configuration +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} - var sq = moment.defineLocale('sq', { - months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( - '_' - ), - monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( - '_' - ), - weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), - weekdaysParseExact: true, - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; - }, - meridiem: function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Sot në] LT', - nextDay: '[Nesër në] LT', - nextWeek: 'dddd [në] LT', - lastDay: '[Dje në] LT', - lastWeek: 'dddd [e kaluar në] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'në %s', - past: '%s më parë', - s: 'disa sekonda', - ss: '%d sekonda', - m: 'një minutë', - mm: '%d minuta', - h: 'një orë', - hh: '%d orë', - d: 'një ditë', - dd: '%d ditë', - M: 'një muaj', - MM: '%d muaj', - y: 'një vit', - yy: '%d vite', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = isFunction; - return sq; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js ***! + \*********************************************************************************************/ +/***/ ((module) => { + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js ***! - \********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js ***! + \*********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Serbian Cyrillic [sr-cyrl] -//! author : Milan Janačković : https://github.com/milan-j +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = isObject; - //! moment.js locale configuration - var translator = { - words: { - //Different grammatical cases - ss: ['секунда', 'секунде', 'секунди'], - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'], - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 - ? wordKey[0] - : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return ( - number + - ' ' + - translator.correctGrammaticalCase(number, wordKey) - ); - } - }, - }; +/***/ }), - var srCyrl = moment.defineLocale('sr-cyrl', { - months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( - '_' - ), - monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), - weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), - weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay: '[јуче у] LT', - lastWeek: function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT', - ]; - return lastWeekDays[this.day()]; - }, - sameElse: 'L', - }, - relativeTime: { - future: 'за %s', - past: 'пре %s', - s: 'неколико секунди', - ss: translator.translate, - m: translator.translate, - mm: translator.translate, - h: translator.translate, - hh: translator.translate, - d: 'дан', - dd: translator.translate, - M: 'месец', - MM: translator.translate, - y: 'годину', - yy: translator.translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js ***! + \*************************************************************************************************/ +/***/ ((module) => { - return srCyrl; +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} -}))); +module.exports = isObjectLike; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Serbian [sr] -//! author : Milan Janačković : https://github.com/milan-j +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; - //! moment.js locale configuration +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} - var translator = { - words: { - //Different grammatical cases - ss: ['sekunda', 'sekunde', 'sekundi'], - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'], - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 - ? wordKey[0] - : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return ( - number + - ' ' + - translator.correctGrammaticalCase(number, wordKey) - ); - } - }, - }; +module.exports = isSymbol; - var sr = moment.defineLocale('sr', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[juče u] LT', - lastWeek: function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT', - ]; - return lastWeekDays[this.day()]; - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'pre %s', - s: 'nekoliko sekundi', - ss: translator.translate, - m: translator.translate, - mm: translator.translate, - h: translator.translate, - hh: translator.translate, - d: 'dan', - dd: translator.translate, - M: 'mesec', - MM: translator.translate, - y: 'godinu', - yy: translator.translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return sr; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js"); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +module.exports = isTypedArray; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ss.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ss.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : siSwati [ss] -//! author : Nicolai Davies : https://github.com/nicolaidavies +var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js"), + baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} - //! moment.js locale configuration +module.exports = keys; - var ss = moment.defineLocale('ss', { - months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( - '_' - ), - monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), - weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( - '_' - ), - weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), - weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Namuhla nga] LT', - nextDay: '[Kusasa nga] LT', - nextWeek: 'dddd [nga] LT', - lastDay: '[Itolo nga] LT', - lastWeek: 'dddd [leliphelile] [nga] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'nga %s', - past: 'wenteka nga %s', - s: 'emizuzwana lomcane', - ss: '%d mzuzwana', - m: 'umzuzu', - mm: '%d emizuzu', - h: 'lihora', - hh: '%d emahora', - d: 'lilanga', - dd: '%d emalanga', - M: 'inyanga', - MM: '%d tinyanga', - y: 'umnyaka', - yy: '%d iminyaka', - }, - meridiemParse: /ekuseni|emini|entsambama|ebusuku/, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'ekuseni'; - } else if (hours < 15) { - return 'emini'; - } else if (hours < 19) { - return 'entsambama'; - } else { - return 'ebusuku'; - } - }, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ekuseni') { - return hour; - } else if (meridiem === 'emini') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { - if (hour === 0) { - return 0; - } - return hour + 12; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: '%d', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return ss; +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} -}))); +// Expose `MapCache`. +memoize.Cache = MapCache; + +module.exports = memoize; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js ***! + \*****************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Swedish [sv] -//! author : Jens Alm : https://github.com/ulmus +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = noop; - //! moment.js locale configuration - var sv = moment.defineLocale('sv', { - months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [kl.] HH:mm', - LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', - lll: 'D MMM YYYY HH:mm', - llll: 'ddd D MMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: 'för %s sedan', - s: 'några sekunder', - ss: '%d sekunder', - m: 'en minut', - mm: '%d minuter', - h: 'en timme', - hh: '%d timmar', - d: 'en dag', - dd: '%d dagar', - M: 'en månad', - MM: '%d månader', - y: 'ett år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? ':e' - : b === 1 - ? ':a' - : b === 2 - ? ':a' - : b === 3 - ? ':e' - : ':e'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return sv; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js"), + basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sw.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sw.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Swahili [sw] -//! author : Fahad Kassim : https://github.com/fadsel +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = stubArray; - //! moment.js locale configuration - var sw = moment.defineLocale('sw', { - months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), - weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( - '_' - ), - weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), - weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[leo saa] LT', - nextDay: '[kesho saa] LT', - nextWeek: '[wiki ijayo] dddd [saat] LT', - lastDay: '[jana] LT', - lastWeek: '[wiki iliyopita] dddd [saat] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s baadaye', - past: 'tokea %s', - s: 'hivi punde', - ss: 'sekunde %d', - m: 'dakika moja', - mm: 'dakika %d', - h: 'saa limoja', - hh: 'masaa %d', - d: 'siku moja', - dd: 'siku %d', - M: 'mwezi mmoja', - MM: 'miezi %d', - y: 'mwaka mmoja', - yy: 'miaka %d', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ }), - return sw; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -}))); +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = stubFalse; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ta.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ta.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tamil [ta] -//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 +var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} - //! moment.js locale configuration +module.exports = toString; - var symbolMap = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦', - }, - numberMap = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0', - }; - var ta = moment.defineLocale('ta', { - months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( - '_' - ), - monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( - '_' - ), - weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( - '_' - ), - weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( - '_' - ), - weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, HH:mm', - LLLL: 'dddd, D MMMM YYYY, HH:mm', - }, - calendar: { - sameDay: '[இன்று] LT', - nextDay: '[நாளை] LT', - nextWeek: 'dddd, LT', - lastDay: '[நேற்று] LT', - lastWeek: '[கடந்த வாரம்] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s இல்', - past: '%s முன்', - s: 'ஒரு சில விநாடிகள்', - ss: '%d விநாடிகள்', - m: 'ஒரு நிமிடம்', - mm: '%d நிமிடங்கள்', - h: 'ஒரு மணி நேரம்', - hh: '%d மணி நேரம்', - d: 'ஒரு நாள்', - dd: '%d நாட்கள்', - M: 'ஒரு மாதம்', - MM: '%d மாதங்கள்', - y: 'ஒரு வருடம்', - yy: '%d ஆண்டுகள்', - }, - dayOfMonthOrdinalParse: /\d{1,2}வது/, - ordinal: function (number) { - return number + 'வது'; - }, - preparse: function (string) { - return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem: function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } - }, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ }), - return ta; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js"), + baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js"); + +/** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ +function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : []; +} + +module.exports = uniqBy; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/te.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/te.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js ***! + \*************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Telugu [te] -//! author : Krishna Chaitanya Thota : https://github.com/kcthota +(function(){ + var crypt = __webpack_require__(/*! crypt */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js"), + utf8 = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js").utf8, + isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js"), + bin = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js").bin, + + // The core + md5 = function (message, options) { + // Convert to byte array + if (message.constructor == String) + if (options && options.encoding === 'binary') + message = bin.stringToBytes(message); + else + message = utf8.stringToBytes(message); + else if (isBuffer(message)) + message = Array.prototype.slice.call(message, 0); + else if (!Array.isArray(message) && message.constructor !== Uint8Array) + message = message.toString(); + // else, assume byte array already + + var m = crypt.bytesToWords(message), + l = message.length * 8, + a = 1732584193, + b = -271733879, + c = -1732584194, + d = 271733878; + + // Swap endian + for (var i = 0; i < m.length; i++) { + m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | + ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; + } + + // Padding + m[l >>> 5] |= 0x80 << (l % 32); + m[(((l + 64) >>> 9) << 4) + 14] = l; + + // Method shortcuts + var FF = md5._ff, + GG = md5._gg, + HH = md5._hh, + II = md5._ii; + + for (var i = 0; i < m.length; i += 16) { + + var aa = a, + bb = b, + cc = c, + dd = d; + + a = FF(a, b, c, d, m[i+ 0], 7, -680876936); + d = FF(d, a, b, c, m[i+ 1], 12, -389564586); + c = FF(c, d, a, b, m[i+ 2], 17, 606105819); + b = FF(b, c, d, a, m[i+ 3], 22, -1044525330); + a = FF(a, b, c, d, m[i+ 4], 7, -176418897); + d = FF(d, a, b, c, m[i+ 5], 12, 1200080426); + c = FF(c, d, a, b, m[i+ 6], 17, -1473231341); + b = FF(b, c, d, a, m[i+ 7], 22, -45705983); + a = FF(a, b, c, d, m[i+ 8], 7, 1770035416); + d = FF(d, a, b, c, m[i+ 9], 12, -1958414417); + c = FF(c, d, a, b, m[i+10], 17, -42063); + b = FF(b, c, d, a, m[i+11], 22, -1990404162); + a = FF(a, b, c, d, m[i+12], 7, 1804603682); + d = FF(d, a, b, c, m[i+13], 12, -40341101); + c = FF(c, d, a, b, m[i+14], 17, -1502002290); + b = FF(b, c, d, a, m[i+15], 22, 1236535329); + + a = GG(a, b, c, d, m[i+ 1], 5, -165796510); + d = GG(d, a, b, c, m[i+ 6], 9, -1069501632); + c = GG(c, d, a, b, m[i+11], 14, 643717713); + b = GG(b, c, d, a, m[i+ 0], 20, -373897302); + a = GG(a, b, c, d, m[i+ 5], 5, -701558691); + d = GG(d, a, b, c, m[i+10], 9, 38016083); + c = GG(c, d, a, b, m[i+15], 14, -660478335); + b = GG(b, c, d, a, m[i+ 4], 20, -405537848); + a = GG(a, b, c, d, m[i+ 9], 5, 568446438); + d = GG(d, a, b, c, m[i+14], 9, -1019803690); + c = GG(c, d, a, b, m[i+ 3], 14, -187363961); + b = GG(b, c, d, a, m[i+ 8], 20, 1163531501); + a = GG(a, b, c, d, m[i+13], 5, -1444681467); + d = GG(d, a, b, c, m[i+ 2], 9, -51403784); + c = GG(c, d, a, b, m[i+ 7], 14, 1735328473); + b = GG(b, c, d, a, m[i+12], 20, -1926607734); + + a = HH(a, b, c, d, m[i+ 5], 4, -378558); + d = HH(d, a, b, c, m[i+ 8], 11, -2022574463); + c = HH(c, d, a, b, m[i+11], 16, 1839030562); + b = HH(b, c, d, a, m[i+14], 23, -35309556); + a = HH(a, b, c, d, m[i+ 1], 4, -1530992060); + d = HH(d, a, b, c, m[i+ 4], 11, 1272893353); + c = HH(c, d, a, b, m[i+ 7], 16, -155497632); + b = HH(b, c, d, a, m[i+10], 23, -1094730640); + a = HH(a, b, c, d, m[i+13], 4, 681279174); + d = HH(d, a, b, c, m[i+ 0], 11, -358537222); + c = HH(c, d, a, b, m[i+ 3], 16, -722521979); + b = HH(b, c, d, a, m[i+ 6], 23, 76029189); + a = HH(a, b, c, d, m[i+ 9], 4, -640364487); + d = HH(d, a, b, c, m[i+12], 11, -421815835); + c = HH(c, d, a, b, m[i+15], 16, 530742520); + b = HH(b, c, d, a, m[i+ 2], 23, -995338651); + + a = II(a, b, c, d, m[i+ 0], 6, -198630844); + d = II(d, a, b, c, m[i+ 7], 10, 1126891415); + c = II(c, d, a, b, m[i+14], 15, -1416354905); + b = II(b, c, d, a, m[i+ 5], 21, -57434055); + a = II(a, b, c, d, m[i+12], 6, 1700485571); + d = II(d, a, b, c, m[i+ 3], 10, -1894986606); + c = II(c, d, a, b, m[i+10], 15, -1051523); + b = II(b, c, d, a, m[i+ 1], 21, -2054922799); + a = II(a, b, c, d, m[i+ 8], 6, 1873313359); + d = II(d, a, b, c, m[i+15], 10, -30611744); + c = II(c, d, a, b, m[i+ 6], 15, -1560198380); + b = II(b, c, d, a, m[i+13], 21, 1309151649); + a = II(a, b, c, d, m[i+ 4], 6, -145523070); + d = II(d, a, b, c, m[i+11], 10, -1120210379); + c = II(c, d, a, b, m[i+ 2], 15, 718787259); + b = II(b, c, d, a, m[i+ 9], 21, -343485551); + + a = (a + aa) >>> 0; + b = (b + bb) >>> 0; + c = (c + cc) >>> 0; + d = (d + dd) >>> 0; + } + + return crypt.endian([a, b, c, d]); + }; + + // Auxiliary functions + md5._ff = function (a, b, c, d, x, s, t) { + var n = a + (b & c | ~b & d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._gg = function (a, b, c, d, x, s, t) { + var n = a + (b & d | c & ~d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._hh = function (a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._ii = function (a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + + // Package private blocksize + md5._blocksize = 16; + md5._digestsize = 16; + + module.exports = function (message, options) { + if (message === undefined || message === null) + throw new Error('Illegal argument ' + message); + + var digestbytes = crypt.wordsToBytes(md5(message, options)); + return options && options.asBytes ? digestbytes : + options && options.asString ? bin.bytesToString(digestbytes) : + crypt.bytesToHex(digestbytes); + }; + +})(); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var te = moment.defineLocale('te', { - months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( - '_' - ), - monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( - '_' - ), - weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), - weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm', - LLLL: 'dddd, D MMMM YYYY, A h:mm', - }, - calendar: { - sameDay: '[నేడు] LT', - nextDay: '[రేపు] LT', - nextWeek: 'dddd, LT', - lastDay: '[నిన్న] LT', - lastWeek: '[గత] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s లో', - past: '%s క్రితం', - s: 'కొన్ని క్షణాలు', - ss: '%d సెకన్లు', - m: 'ఒక నిమిషం', - mm: '%d నిమిషాలు', - h: 'ఒక గంట', - hh: '%d గంటలు', - d: 'ఒక రోజు', - dd: '%d రోజులు', - M: 'ఒక నెల', - MM: '%d నెలలు', - y: 'ఒక సంవత్సరం', - yy: '%d సంవత్సరాలు', - }, - dayOfMonthOrdinalParse: /\d{1,2}వ/, - ordinal: '%dవ', - meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'రాత్రి') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ఉదయం') { - return hour; - } else if (meridiem === 'మధ్యాహ్నం') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'సాయంత్రం') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'రాత్రి'; - } else if (hour < 10) { - return 'ఉదయం'; - } else if (hour < 17) { - return 'మధ్యాహ్నం'; - } else if (hour < 20) { - return 'సాయంత్రం'; - } else { - return 'రాత్రి'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return te; +const _ = __webpack_require__(/*! underscore */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs"); -}))); +const NO_LMP_DATE_MODIFIER = 4; +module.exports = function(settings) { + const taskSchedules = settings && settings.tasks && settings.tasks.schedules; + const lib = { + /** + * @function + * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this. + * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display. + * To this end - Utils.isTimely becomes a pass-through in nootils@4.x + * @returns True + */ + isTimely: () => true, -/***/ }), + addDate: function(date, days) { + let result; + if (date) { + result = new Date(date.getTime()); + } else { + result = lib.now(); + } + result.setDate(result.getDate() + days); + result.setHours(0, 0, 0, 0); + return result; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tet.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tet.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + getLmpDate: function(doc) { + const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER; + return lib.addDate(new Date(doc.reported_date), weeks * -7); + }, -//! moment.js locale configuration -//! locale : Tetun Dili (East Timor) [tet] -//! author : Joshua Brooks : https://github.com/joshbrooks -//! author : Onorio De J. Afonso : https://github.com/marobo -//! author : Sonia Simoes : https://github.com/soniasimoes + // TODO getSchedule() can be removed when tasks.json support is dropped + getSchedule: function(name) { + return _.findWhere(taskSchedules, { name: name }); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + getMostRecentTimestamp: function(reports, form, fields) { + const report = lib.getMostRecentReport(reports, form, fields); + return report && report.reported_date; + }, - //! moment.js locale configuration + getMostRecentReport: function(reports, form, fields) { + let result = null; + reports.forEach(function(report) { + if (report.form === form && + !report.deleted && + (!result || (report.reported_date > result.reported_date)) && + (!fields || (report.fields && lib.fieldsMatch(report, fields)))) { + result = report; + } + }); + return result; + }, - var tet = moment.defineLocale('tet', { - months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( - '_' - ), - monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), - weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), - weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Ohin iha] LT', - nextDay: '[Aban iha] LT', - nextWeek: 'dddd [iha] LT', - lastDay: '[Horiseik iha] LT', - lastWeek: 'dddd [semana kotuk] [iha] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'iha %s', - past: '%s liuba', - s: 'segundu balun', - ss: 'segundu %d', - m: 'minutu ida', - mm: 'minutu %d', - h: 'oras ida', - hh: 'oras %d', - d: 'loron ida', - dd: 'loron %d', - M: 'fulan ida', - MM: 'fulan %d', - y: 'tinan ida', - yy: 'tinan %d', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + isFormSubmittedInWindow: function(reports, form, start, end, count) { + let result = false; + reports.forEach(function(report) { + if (!result && report.form === form) { + if (report.reported_date >= start && report.reported_date <= end) { + if (!count || + (count && report.fields && report.fields.follow_up_count > count)) { + result = true; + } + } + } + }); + return result; + }, - return tet; + isFirstReportNewer: function(firstReport, secondReport) { + if (firstReport && firstReport.reported_date) { + if (secondReport && secondReport.reported_date) { + return firstReport.reported_date > secondReport.reported_date; + } + return true; + } + return null; + }, -}))); + isDateValid: function(date) { + return !isNaN(date.getTime()); + }, + + /** + * @function + * @name getField + * + * Gets the value of specified field path. + * @param {Object} report - The report object. + * @param {string} field - Period separated json path assuming report.fields as + * the root node e.g 'dob' (equivalent to report.fields.dob) + * or 'screening.test_result' equivalent to report.fields.screening.test_result + */ + getField: function(report, field) { + return _.propertyOf(report.fields)(field.split('.')); + }, + + fieldsMatch: function(report, fieldValues) { + return Object.keys(fieldValues).every(function(field) { + return lib.getField(report, field) === fieldValues[field]; + }); + }, + + MS_IN_DAY: 24*60*60*1000, // 1 day in ms + + now: function() { return new Date(); }, + }; + + return lib; +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tg.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tg.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js ***! + \*****************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tajik [tg] -//! author : Orif N. Jr. : https://github.com/orif-jr +module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var suffixes = { - 0: '-ум', - 1: '-ум', - 2: '-юм', - 3: '-юм', - 4: '-ум', - 5: '-ум', - 6: '-ум', - 7: '-ум', - 8: '-ум', - 9: '-ум', - 10: '-ум', - 12: '-ум', - 13: '-ум', - 20: '-ум', - 30: '-юм', - 40: '-ум', - 50: '-ум', - 60: '-ум', - 70: '-ум', - 80: '-ум', - 90: '-ум', - 100: '-ум', - }; +"use strict"; - var tg = moment.defineLocale('tg', { - months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( - '_' - ), - monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( - '_' - ), - weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), - weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Имрӯз соати] LT', - nextDay: '[Пагоҳ соати] LT', - lastDay: '[Дирӯз соати] LT', - nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', - lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'баъди %s', - past: '%s пеш', - s: 'якчанд сония', - m: 'як дақиқа', - mm: '%d дақиқа', - h: 'як соат', - hh: '%d соат', - d: 'як рӯз', - dd: '%d рӯз', - M: 'як моҳ', - MM: '%d моҳ', - y: 'як сол', - yy: '%d сол', - }, - meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'шаб') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'субҳ') { - return hour; - } else if (meridiem === 'рӯз') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'бегоҳ') { - return hour + 12; - } +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + declare = extd.declare, + AVLTree = extd.AVLTree, + LinkedList = extd.LinkedList, + isPromise = extd.isPromiseLike, + EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter; + + +var FactHash = declare({ + instance: { + constructor: function () { + this.memory = {}; + this.memoryValues = new LinkedList(); }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'шаб'; - } else if (hour < 11) { - return 'субҳ'; - } else if (hour < 16) { - return 'рӯз'; - } else if (hour < 19) { - return 'бегоҳ'; - } else { - return 'шаб'; + + clear: function () { + this.memoryValues.clear(); + this.memory = {}; + }, + + + remove: function (v) { + var hashCode = v.hashCode, + memory = this.memory, + ret = memory[hashCode]; + if (ret) { + this.memoryValues.remove(ret); + delete memory[hashCode]; } + return ret; }, - dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/, - ordinal: function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); + + insert: function (insert) { + var hashCode = insert.hashCode; + if (hashCode in this.memory) { + throw new Error("Activation already in agenda " + insert.rule.name + " agenda"); + } + this.memoryValues.push((this.memory[hashCode] = insert)); + } + } +}); + + +var DEFAULT_AGENDA_GROUP = "main"; +module.exports = declare(EventEmitter, { + + instance: { + constructor: function (flow, conflictResolution) { + this.agendaGroups = {}; + this.agendaGroupStack = [DEFAULT_AGENDA_GROUP]; + this.rules = {}; + this.flow = flow; + this.comparator = conflictResolution; + this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP); }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 1th is the first week of the year. + + addAgendaGroup: function (groupName) { + if (!extd.has(this.agendaGroups, groupName)) { + this.agendaGroups[groupName] = new AVLTree({compare: this.comparator}); + } }, - }); - return tg; + getAgendaGroup: function (groupName) { + return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP]; + }, -}))); + setFocus: function (agendaGroup) { + if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) { + this.agendaGroupStack.push(agendaGroup); + this.emit("focused", agendaGroup); + } + return this; + }, + getFocused: function () { + var ags = this.agendaGroupStack; + return ags[ags.length - 1]; + }, -/***/ }), + getFocusedAgenda: function () { + return this.agendaGroups[this.getFocused()]; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/th.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/th.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + register: function (node) { + var agendaGroup = node.rule.agendaGroup; + this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()}; + if (agendaGroup) { + this.addAgendaGroup(agendaGroup); + } + }, -//! moment.js locale configuration -//! locale : Thai [th] -//! author : Kridsada Thanabulpong : https://github.com/sirn + isEmpty: function () { + var agendaGroupStack = this.agendaGroupStack, changed = false; + while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) { + agendaGroupStack.pop(); + changed = true; + } + if (changed) { + this.emit("focused", this.getFocused()); + } + return this.getFocusedAgenda().isEmpty(); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + fireNext: function () { + var agendaGroupStack = this.agendaGroupStack, ret = false; + while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) { + agendaGroupStack.pop(); + } + if (!this.getFocusedAgenda().isEmpty()) { + var activation = this.pop(); + this.emit("fire", activation.rule.name, activation.match.factHash); + var fired = activation.rule.fire(this.flow, activation.match); + if (isPromise(fired)) { + ret = fired.then(function () { + //return true if an activation fired + return true; + }); + } else { + ret = true; + } + } + //return false if activation not fired + return ret; + }, - //! moment.js locale configuration + pop: function () { + var tree = this.getFocusedAgenda(), root = tree.__root; + while (root.right) { + root = root.right; + } + var v = root.data; + tree.remove(v); + var rule = this.rules[v.name]; + rule.tree.remove(v); + rule.factTable.remove(v); + return v; + }, - var th = moment.defineLocale('th', { - months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( - '_' - ), - monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY เวลา H:mm', - LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', + peek: function () { + var tree = this.getFocusedAgenda(), root = tree.__root; + while (root.right) { + root = root.right; + } + return root.data; }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; + + modify: function (node, context) { + this.retract(node, context); + this.insert(node, context); }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; + + retract: function (node, retract) { + var rule = this.rules[node.name]; + retract.rule = node; + var activation = rule.factTable.remove(retract); + if (activation) { + this.getAgendaGroup(node.rule.agendaGroup).remove(activation); + rule.tree.remove(activation); } }, - calendar: { - sameDay: '[วันนี้ เวลา] LT', - nextDay: '[พรุ่งนี้ เวลา] LT', - nextWeek: 'dddd[หน้า เวลา] LT', - lastDay: '[เมื่อวานนี้ เวลา] LT', - lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'อีก %s', - past: '%sที่แล้ว', - s: 'ไม่กี่วินาที', - ss: '%d วินาที', - m: '1 นาที', - mm: '%d นาที', - h: '1 ชั่วโมง', - hh: '%d ชั่วโมง', - d: '1 วัน', - dd: '%d วัน', - M: '1 เดือน', - MM: '%d เดือน', - y: '1 ปี', - yy: '%d ปี', + + insert: function (node, insert) { + var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup; + rule.tree.insert(insert); + this.getAgendaGroup(agendaGroup).insert(insert); + if (nodeRule.autoFocus) { + this.setFocus(agendaGroup); + } + + rule.factTable.insert(insert); }, - }); - return th; + dispose: function () { + for (var i in this.agendaGroups) { + this.agendaGroups[i].clear(); + } + var rules = this.rules; + for (i in rules) { + if (i in rules) { + rules[i].tree.clear(); + rules[i].factTable.clear(); -}))); + } + } + this.rules = {}; + } + } +}); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js": +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js ***! + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js ***! \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tagalog (Philippines) [tl-ph] -//! author : Dan Hagman : https://github.com/hagmandan +"use strict"; +/*jshint evil:true*/ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + isString = extd.isString; - //! moment.js locale configuration +exports.modifiers = ["assert", "modify", "retract", "emit", "halt", "focus", "getFacts"]; - var tlPh = moment.defineLocale('tl-ph', { - months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( - '_' - ), - monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( - '_' - ), - weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'MM/D/YYYY', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY HH:mm', - LLLL: 'dddd, MMMM DD, YYYY HH:mm', - }, - calendar: { - sameDay: 'LT [ngayong araw]', - nextDay: '[Bukas ng] LT', - nextWeek: 'LT [sa susunod na] dddd', - lastDay: 'LT [kahapon]', - lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L', - }, - relativeTime: { - future: 'sa loob ng %s', - past: '%s ang nakalipas', - s: 'ilang segundo', - ss: '%d segundo', - m: 'isang minuto', - mm: '%d minuto', - h: 'isang oras', - hh: '%d oras', - d: 'isang araw', - dd: '%d araw', - M: 'isang buwan', - MM: '%d buwan', - y: 'isang taon', - yy: '%d taon', - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: function (number) { - return number; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, +var createFunction = function (body, defined, scope, scopeNames, definedNames) { + var declares = []; + forEach(definedNames, function (i) { + if (body.indexOf(i) !== -1) { + declares.push("var " + i + "= defined." + i + ";"); + } }); - return tlPh; + forEach(scopeNames, function (i) { + if (body.indexOf(i) !== -1) { + declares.push("var " + i + "= scope." + i + ";"); + } + }); + body = ["((function(){", declares.join(""), "\n\treturn ", body, "\n})())"].join(""); + try { + return eval(body); + } catch (e) { + throw new Error("Invalid action : " + body + "\n" + e.message); + } +}; -}))); +var createDefined = (function () { + + var _createDefined = function (action, defined, scope) { + if (isString(action)) { + var declares = []; + extd(defined).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= defined." + i + ";"); + } + }); + + extd(scope).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= function(){var prop = scope." + i + "; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};"); + } + }); + if (declares.length) { + declares.unshift("var __objToStr__ = Object.prototype.toString;"); + } + action = [declares.join(""), "return ", action, ";"].join(""); + action = new Function("defined", "scope", action)(defined, scope); + } + var ret = action.hasOwnProperty("constructor") && "function" === typeof action.constructor ? action.constructor : function (opts) { + opts = opts || {}; + for (var i in opts) { + if (i in action) { + this[i] = opts[i]; + } + } + }; + var proto = ret.prototype; + for (var i in action) { + proto[i] = action[i]; + } + return ret; + + }; + + return function (options, defined, scope) { + return _createDefined(options.properties, defined, scope); + }; +})(); +exports.createFunction = createFunction; +exports.createDefined = createDefined; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Klingon [tlh] -//! author : Dominika Kruk : https://github.com/amaranthrose +"use strict"; +/*jshint evil:true*/ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + constraintMatcher = __webpack_require__(/*! ../constraintMatcher.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + indexOf = extd.indexOf, + forEach = extd.forEach, + removeDuplicates = extd.removeDuplicates, + map = extd.map, + obj = extd.hash, + keys = obj.keys, + merge = extd.merge, + rules = __webpack_require__(/*! ../rule */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + common = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js"), + modifiers = common.modifiers, + createDefined = common.createDefined, + createFunction = common.createFunction; - //! moment.js locale configuration - var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); +/** + * @private + * Parses an action from a rule definition + * @param {String} action the body of the action to execute + * @param {Array} identifiers array of identifiers collected + * @param {Object} defined an object of defined + * @param scope + * @return {Object} + */ +var parseAction = function (action, identifiers, defined, scope) { + var declares = []; + forEach(identifiers, function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= facts." + i + ";"); + } + }); + extd(defined).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= defined." + i + ";"); + } + }); - function translateFuture(output) { - var time = output; - time = - output.indexOf('jaj') !== -1 - ? time.slice(0, -3) + 'leS' - : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'waQ' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'nem' - : time + ' pIq'; - return time; + extd(scope).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= scope." + i + ";"); + } + }); + extd(modifiers).forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("if(!" + i + "){ var " + i + "= flow." + i + ";}"); + } + }); + var params = ["facts", 'flow']; + if (/next\(.*\)/.test(action)) { + params.push("next"); } - - function translatePast(output) { - var time = output; - time = - output.indexOf('jaj') !== -1 - ? time.slice(0, -3) + 'Hu’' - : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'wen' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'ben' - : time + ' ret'; - return time; + action = declares.join("") + action; + try { + return new Function("defined, scope", "return " + new Function(params.join(","), action).toString())(defined, scope); + } catch (e) { + throw new Error("Invalid action : " + action + "\n" + e.message); } +}; - function translate(number, withoutSuffix, string, isFuture) { - var numberNoun = numberAsNoun(number); - switch (string) { - case 'ss': - return numberNoun + ' lup'; - case 'mm': - return numberNoun + ' tup'; - case 'hh': - return numberNoun + ' rep'; - case 'dd': - return numberNoun + ' jaj'; - case 'MM': - return numberNoun + ' jar'; - case 'yy': - return numberNoun + ' DIS'; +var createRuleFromObject = (function () { + var __resolveRule = function (rule, identifiers, conditions, defined, name) { + var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3]; + if (extd.isHash(constraint)) { + refs = constraint; + constraint = null; + } + if (definedClass && !!(definedClass = defined[definedClass])) { + condition.push(definedClass); + } else { + throw new Error("Invalid class " + rule[0] + " for rule " + name); + } + condition.push(alias, constraint, refs); + conditions.push(condition); + identifiers.push(alias); + if (constraint) { + forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) { + identifiers.push(i); + }); + } + if (extd.isObject(refs)) { + for (var j in refs) { + var ident = refs[j]; + if (indexOf(identifiers, ident) === -1) { + identifiers.push(ident); + } + } + } + }; + + function parseRule(rule, conditions, identifiers, defined, name) { + if (rule.length) { + var r0 = rule[0]; + if (r0 === "not" || r0 === "exists") { + var temp = []; + rule.shift(); + __resolveRule(rule, identifiers, temp, defined, name); + var cond = temp[0]; + cond.unshift(r0); + conditions.push(cond); + } else if (r0 === "or") { + var conds = [r0]; + rule.shift(); + forEach(rule, function (cond) { + parseRule(cond, conds, identifiers, defined, name); + }); + conditions.push(conds); + } else { + __resolveRule(rule, identifiers, conditions, defined, name); + identifiers = removeDuplicates(identifiers); + } } + } - function numberAsNoun(number) { - var hundred = Math.floor((number % 1000) / 100), - ten = Math.floor((number % 100) / 10), - one = number % 10, - word = ''; - if (hundred > 0) { - word += numbersNouns[hundred] + 'vatlh'; + return function (obj, defined, scope) { + var name = obj.name; + if (extd.isEmpty(obj)) { + throw new Error("Rule is empty"); } - if (ten > 0) { - word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; + var options = obj.options || {}; + options.scope = scope; + var constraints = obj.constraints || [], l = constraints.length; + if (!l) { + constraints = ["true"]; } - if (one > 0) { - word += (word !== '' ? ' ' : '') + numbersNouns[one]; + var action = obj.action; + if (extd.isUndefined(action)) { + throw new Error("No action was defined for rule " + name); } - return word === '' ? 'pagh' : word; + var conditions = [], identifiers = []; + forEach(constraints, function (rule) { + parseRule(rule, conditions, identifiers, defined, name); + }); + return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope)); + }; +})(); + +exports.parse = function (src, file) { + //parse flow from file + return parser.parseRuleSet(src, file); + +}; +exports.compile = function (flowObj, options, cb, Container) { + if (extd.isFunction(options)) { + cb = options; + options = {}; + } else { + options = options || {}; + } + var name = flowObj.name || options.name; + //if !name throw an error + if (!name) { + throw new Error("Name must be present in JSON or options"); } + var flow = new Container(name); + var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {}); + if (typeof Buffer !== "undefined") { + defined.Buffer = Buffer; + } + var scope = merge({console: console}, options.scope); + //add the anything added to the scope as a property + forEach(flowObj.scope, function (s) { + scope[s.name] = true; + }); + //add any defined classes in the parsed flowObj to defined + forEach(flowObj.define, function (d) { + defined[d.name] = createDefined(d, defined, scope); + }); - var tlh = moment.defineLocale('tlh', { - months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split( - '_' - ), - monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( - '_' - ), - weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( - '_' - ), - weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( - '_' - ), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[DaHjaj] LT', - nextDay: '[wa’leS] LT', - nextWeek: 'LLL', - lastDay: '[wa’Hu’] LT', - lastWeek: 'LLL', - sameElse: 'L', - }, - relativeTime: { - future: translateFuture, - past: translatePast, - s: 'puS lup', - ss: translate, - m: 'wa’ tup', - mm: translate, - h: 'wa’ rep', - hh: translate, - d: 'wa’ jaj', - dd: translate, - M: 'wa’ jar', - MM: translate, - y: 'wa’ DIS', - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, + //expose any defined classes to the flow. + extd(defined).forEach(function (cls, name) { + flow.addDefined(name, cls); }); - return tlh; + var scopeNames = extd(flowObj.scope).pluck("name").union(extd(scope).keys().value()).value(); + var definedNames = map(keys(defined), function (s) { + return s; + }); + forEach(flowObj.scope, function (s) { + scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames); + }); + var rules = flowObj.rules; + if (rules.length) { + forEach(rules, function (rule) { + flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope)); + }); + } + if (cb) { + cb.call(flow, flow); + } + return flow; +}; + +exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js").transpile; + + -}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Turkish [tr] -//! authors : Erhan Gundogan : https://github.com/erhangundogan, -//! Burak Yiğit Kaya: https://github.com/BYK +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + indexOf = extd.indexOf, + merge = extd.merge, + isString = extd.isString, + modifiers = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js").modifiers, + constraintMatcher = __webpack_require__(/*! ../constraintMatcher */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +function definedToJs(options) { + /*jshint evil:true*/ + options = isString(options) ? new Function("return " + options + ";")() : options; + var ret = ["(function(){"], value; - //! moment.js locale configuration + if (options.hasOwnProperty("constructor") && "function" === typeof options.constructor) { + ret.push("var Defined = " + options.constructor.toString() + ";"); + } else { + ret.push("var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};"); + } + ret.push("var proto = Defined.prototype;"); + for (var key in options) { + if (options.hasOwnProperty(key)) { + value = options[key]; + ret.push("proto." + key + " = " + (extd.isFunction(value) ? value.toString() : extd.format("%j", value)) + ";"); + } + } + ret.push("return Defined;"); + ret.push("}())"); + return ret.join(""); - var suffixes = { - 1: "'inci", - 5: "'inci", - 8: "'inci", - 70: "'inci", - 80: "'inci", - 2: "'nci", - 7: "'nci", - 20: "'nci", - 50: "'nci", - 3: "'üncü", - 4: "'üncü", - 100: "'üncü", - 6: "'ncı", - 9: "'uncu", - 10: "'uncu", - 30: "'uncu", - 60: "'ıncı", - 90: "'ıncı", - }; +} - var tr = moment.defineLocale('tr', { - months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( - '_' - ), - monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( - '_' - ), - weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'öö' : 'ÖÖ'; - } else { - return isLower ? 'ös' : 'ÖS'; +function actionToJs(action, identifiers, defined, scope) { + var declares = [], usedVars = {}; + forEach(identifiers, function (i) { + if (action.indexOf(i) !== -1) { + usedVars[i] = true; + declares.push("var " + i + "= facts." + i + ";"); + } + }); + extd(defined).keys().forEach(function (i) { + if (action.indexOf(i) !== -1 && !usedVars[i]) { + usedVars[i] = true; + declares.push("var " + i + "= defined." + i + ";"); + } + }); + + extd(scope).keys().forEach(function (i) { + if (action.indexOf(i) !== -1 && !usedVars[i]) { + usedVars[i] = true; + declares.push("var " + i + "= scope." + i + ";"); + } + }); + extd(modifiers).forEach(function (i) { + if (action.indexOf(i) !== -1 && !usedVars[i]) { + declares.push("var " + i + "= flow." + i + ";"); + } + }); + var params = ["facts", 'flow']; + if (/next\(.*\)/.test(action)) { + params.push("next"); + } + action = declares.join("") + action; + try { + return ["function(", params.join(","), "){", action, "}"].join(""); + } catch (e) { + throw new Error("Invalid action : " + action + "\n" + e.message); + } +} + +function parseConstraintModifier(constraint, ret) { + if (constraint.length && extd.isString(constraint[0])) { + var modifier = constraint[0].match(" *(from)"); + if (modifier) { + modifier = modifier[0]; + switch (modifier) { + case "from": + ret.push(', "', constraint.shift(), '"'); + break; + default: + throw new Error("Unrecognized modifier " + modifier); } - }, - meridiemParse: /öö|ÖÖ|ös|ÖS/, - isPM: function (input) { - return input === 'ös' || input === 'ÖS'; - }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[bugün saat] LT', - nextDay: '[yarın saat] LT', - nextWeek: '[gelecek] dddd [saat] LT', - lastDay: '[dün] LT', - lastWeek: '[geçen] dddd [saat] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s sonra', - past: '%s önce', - s: 'birkaç saniye', - ss: '%d saniye', - m: 'bir dakika', - mm: '%d dakika', - h: 'bir saat', - hh: '%d saat', - d: 'bir gün', - dd: '%d gün', - M: 'bir ay', - MM: '%d ay', - y: 'bir yıl', - yy: '%d yıl', - }, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'Do': - case 'DD': - return number; - default: - if (number === 0) { - // special case for zero - return number + "'ıncı"; - } - var a = number % 10, - b = (number % 100) - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); + } + } +} + +function parseConstraintHash(constraint, ret, identifiers) { + if (constraint.length && extd.isHash(constraint[0])) { + //ret of options + var refs = constraint.shift(); + extd(refs).values().forEach(function (ident) { + if (indexOf(identifiers, ident) === -1) { + identifiers.push(ident); } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, + }); + ret.push(',' + extd.format('%j', [refs])); + } +} + +function constraintsToJs(constraint, identifiers) { + constraint = constraint.slice(0); + var ret = []; + if (constraint[0] === "or") { + ret.push('["' + constraint.shift() + '"'); + ret.push(extd.map(constraint,function (c) { + return constraintsToJs(c, identifiers); + }).join(",") + "]"); + return ret; + } else if (constraint[0] === "not" || constraint[0] === "exists") { + ret.push('"', constraint.shift(), '", '); + } + identifiers.push(constraint[1]); + ret.push(constraint[0], ', "' + constraint[1].replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + '"'); + constraint.splice(0, 2); + if (constraint.length) { + //constraint + var c = constraint.shift(); + if (extd.isString(c) && c) { + ret.push(',"' + c.replace(/\\/g, "\\\\").replace(/"/g, "\\\""), '"'); + forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) { + identifiers.push(i); + }); + } else { + ret.push(',"true"'); + constraint.unshift(c); + } + } + parseConstraintModifier(constraint, ret); + parseConstraintHash(constraint, ret, identifiers); + return '[' + ret.join("") + ']'; +} + +exports.transpile = function (flowObj, options) { + options = options || {}; + var ret = []; + ret.push("(function(){"); + ret.push("return function(options){"); + ret.push("options = options || {};"); + ret.push("var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};"); + ret.push("var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}"); + var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {}); + if (typeof Buffer !== "undefined") { + defined.Buffer = Buffer; + } + var scope = merge({console: console}, options.scope); + ret.push(["return nools.flow('", options.name, "', function(){"].join("")); + //add any defined classes in the parsed flowObj to defined + ret.push(extd(flowObj.define || []).map(function (defined) { + var name = defined.name; + defined[name] = {}; + return ["var", name, "= defined." + name, "= this.addDefined('" + name + "',", definedToJs(defined.properties) + ");"].join(" "); + }).value().join("\n")); + ret.push(extd(flowObj.scope || []).map(function (s) { + var name = s.name; + scope[name] = {}; + return ["var", name, "= scope." + name, "= ", s.body, ";"].join(" "); + }).value().join("\n")); + ret.push("scope.console = console;\n"); + + + ret.push(extd(flowObj.rules || []).map(function (rule) { + var identifiers = [], ret = ["this.rule('", rule.name.replace(/'/g, "\\'"), "'"], options = extd.merge(rule.options || {}, {scope: "scope"}); + ret.push(",", extd.format("%j", [options]).replace(/(:"scope")/, ":scope")); + if (rule.constraints && !extd.isEmpty(rule.constraints)) { + ret.push(", ["); + ret.push(extd(rule.constraints).map(function (c) { + return constraintsToJs(c, identifiers); + }).value().join(",")); + ret.push("]"); + } + ret.push(",", actionToJs(rule.action, identifiers, defined, scope)); + ret.push(");"); + return ret.join(""); + }).value().join("")); + ret.push("});"); + ret.push("};"); + ret.push("}());"); + return ret.join(""); +}; + + + + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +var map = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js").map; + +function salience(a, b) { + return a.rule.priority - b.rule.priority; +} + +function bucketCounter(a, b) { + return a.counter - b.counter; +} + +function factRecency(a, b) { + /*jshint noempty: false*/ + + var i = 0; + var aMatchRecency = a.match.recency, + bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1; + while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) { + } + var ret = aMatchRecency[i] - bMatchRecency[i]; + if (!ret) { + ret = aLength - bLength; + } + return ret; +} + +function activationRecency(a, b) { + return a.recency - b.recency; +} + +var strategies = { + salience: salience, + bucketCounter: bucketCounter, + factRecency: factRecency, + activationRecency: activationRecency +}; + +exports.strategies = strategies; +exports.strategy = function (strats) { + strats = map(strats, function (s) { + return strategies[s]; }); + var stratsLength = strats.length; - return tr; + return function (a, b) { + var i = -1, ret = 0; + var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode); + if (!equal) { + while (++i < stratsLength && !ret) { + ret = strats[i](a, b); + } + ret = ret > 0 ? 1 : -1; + } + return ret; + }; +}; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -/***/ }), +"use strict"; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Talossan [tzl] -//! author : Robin van der Vliet : https://github.com/robin0van0der0v -//! author : Iustì Canun +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + deepEqual = extd.deepEqual, + merge = extd.merge, + instanceOf = extd.instanceOf, + filter = extd.filter, + declare = extd.declare, + constraintMatcher; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var id = 0; +var Constraint = declare({ - //! moment.js locale configuration + type: null, - // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. - // This is currently too difficult (maybe even impossible) to add. - var tzl = moment.defineLocale('tzl', { - months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( - '_' - ), - monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM [dallas] YYYY', - LLL: 'D. MMMM [dallas] YYYY HH.mm', - LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', - }, - meridiemParse: /d\'o|d\'a/i, - isPM: function (input) { - return "d'o" === input.toLowerCase(); - }, - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? "d'o" : "D'O"; - } else { - return isLower ? "d'a" : "D'A"; + instance: { + constructor: function (constraint) { + if (!constraintMatcher) { + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"); } + this.id = id++; + this.constraint = constraint; + extd.bindAll(this, ["assert"]); }, - calendar: { - sameDay: '[oxhi à] LT', - nextDay: '[demà à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[ieiri à] LT', - lastWeek: '[sür el] dddd [lasteu à] LT', - sameElse: 'L', + "assert": function () { + throw new Error("not implemented"); }, - relativeTime: { - future: 'osprei %s', - past: 'ja%s', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, + + getIndexableProperties: function () { + return []; }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && extd.deepEqual(this.constraint, constraint.constraint); }, - }); - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['viensas secunds', "'iensas secunds"], - ss: [number + ' secunds', '' + number + ' secunds'], - m: ["'n míut", "'iens míut"], - mm: [number + ' míuts', '' + number + ' míuts'], - h: ["'n þora", "'iensa þora"], - hh: [number + ' þoras', '' + number + ' þoras'], - d: ["'n ziua", "'iensa ziua"], - dd: [number + ' ziuas', '' + number + ' ziuas'], - M: ["'n mes", "'iens mes"], - MM: [number + ' mesen', '' + number + ' mesen'], - y: ["'n ar", "'iens ar"], - yy: [number + ' ars', '' + number + ' ars'], - }; - return isFuture - ? format[key][0] - : withoutSuffix - ? format[key][0] - : format[key][1]; + getters: { + variables: function () { + return [this.get("alias")]; + } + } + + } +}); - return tzl; +Constraint.extend({ + instance: { -}))); + type: "object", + constructor: function (type) { + this._super([type]); + }, -/***/ }), + "assert": function (param) { + return param instanceof this.constraint || param.constructor === this.constraint; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.constraint === constraint.constraint; + } + } +}).as(exports, "ObjectConstraint"); -//! moment.js locale configuration -//! locale : Central Atlas Tamazight Latin [tzm-latn] -//! author : Abdel Said : https://github.com/abdelsaid +var EqualityConstraint = Constraint.extend({ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + instance: { - //! moment.js locale configuration + type: "equality", - var tzmLatn = moment.defineLocale('tzm-latn', { - months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( - '_' - ), - monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( - '_' - ), - weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dadkh s yan %s', - past: 'yan %s', - s: 'imik', - ss: '%d imik', - m: 'minuḍ', - mm: '%d minuḍ', - h: 'saɛa', - hh: '%d tassaɛin', - d: 'ass', - dd: '%d ossan', - M: 'ayowr', - MM: '%d iyyirn', - y: 'asgas', - yy: '%d isgasn', + constructor: function (constraint, options) { + this._super([constraint]); + options = options || {}; + this.pattern = options.pattern; + this._matcher = constraintMatcher.getMatcher(constraint, options, true); }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. + + "assert": function (values) { + return this._matcher(values); + } + } +}).as(exports, "EqualityConstraint"); + +EqualityConstraint.extend({instance: {type: "inequality"}}).as(exports, "InequalityConstraint"); +EqualityConstraint.extend({instance: {type: "comparison"}}).as(exports, "ComparisonConstraint"); + +Constraint.extend({ + + instance: { + + type: "equality", + + constructor: function () { + this._super([ + [true] + ]); }, - }); - return tzmLatn; + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias"); + }, -}))); + "assert": function () { + return true; + } + } +}).as(exports, "TrueConstraint"); -/***/ }), +var ReferenceConstraint = Constraint.extend({ -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + instance: { -//! moment.js locale configuration -//! locale : Central Atlas Tamazight [tzm] -//! author : Abdel Said : https://github.com/abdelsaid + type: "reference", -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + constructor: function (constraint, options) { + this.cache = {}; + this._super([constraint]); + options = options || {}; + this.values = []; + this.pattern = options.pattern; + this._options = options; + this._matcher = constraintMatcher.getMatcher(constraint, options, false); + }, - //! moment.js locale configuration + "assert": function (fact, fh) { + try { + return this._matcher(fact, fh); + } catch (e) { + throw new Error("Error with evaluating pattern " + this.pattern + " " + e.message); + } - var tzm = moment.defineLocale('tzm', { - months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( - '_' - ), - monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( - '_' - ), - weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', }, - calendar: { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L', + + merge: function (that) { + var ret = this; + if (that instanceof ReferenceConstraint) { + ret = new this._static([this.constraint, that.constraint, "and"], merge({}, this._options, this._options)); + ret._alias = this._alias || that._alias; + ret.vars = this.vars.concat(that.vars); + } + return ret; }, - relativeTime: { - future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past: 'ⵢⴰⵏ %s', - s: 'ⵉⵎⵉⴽ', - ss: '%d ⵉⵎⵉⴽ', - m: 'ⵎⵉⵏⵓⴺ', - mm: '%d ⵎⵉⵏⵓⴺ', - h: 'ⵙⴰⵄⴰ', - hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d: 'ⴰⵙⵙ', - dd: '%d oⵙⵙⴰⵏ', - M: 'ⴰⵢoⵓⵔ', - MM: '%d ⵉⵢⵢⵉⵔⵏ', - y: 'ⴰⵙⴳⴰⵙ', - yy: '%d ⵉⵙⴳⴰⵙⵏ', + + equal: function (constraint) { + return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint); }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. + + + getters: { + variables: function () { + return this.vars; + }, + + alias: function () { + return this._alias; + } }, - }); - return tzm; + setters: { + alias: function (alias) { + this._alias = alias; + this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) { + return v !== alias; + }); + } + } + } -}))); +}).as(exports, "ReferenceConstraint"); -/***/ }), +ReferenceConstraint.extend({ + instance: { + type: "reference_equality", + op: "eq", + getIndexableProperties: function () { + return constraintMatcher.getIndexableProperties(this.constraint); + } + } +}).as(exports, "ReferenceEqualityConstraint") + .extend({instance: {type: "reference_inequality", op: "neq"}}).as(exports, "ReferenceInequalityConstraint") + .extend({instance: {type: "reference_gt", op: "gt"}}).as(exports, "ReferenceGTConstraint") + .extend({instance: {type: "reference_gte", op: "gte"}}).as(exports, "ReferenceGTEConstraint") + .extend({instance: {type: "reference_lt", op: "lt"}}).as(exports, "ReferenceLTConstraint") + .extend({instance: {type: "reference_lte", op: "lte"}}).as(exports, "ReferenceLTEConstraint"); -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js language configuration -//! locale : Uyghur (China) [ug-cn] -//! author: boyaq : https://github.com/boyaq +Constraint.extend({ + instance: { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + type: "hash", - //! moment.js language configuration + constructor: function (hash) { + this._super([hash]); + }, - var ugCn = moment.defineLocale('ug-cn', { - months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( - '_' - ), - monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( - '_' - ), - weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split( - '_' - ), - weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), - weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', - LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', + equal: function (constraint) { + return extd.instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && extd.deepEqual(this.constraint, constraint.constraint); }, - meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - meridiem === 'يېرىم كېچە' || - meridiem === 'سەھەر' || - meridiem === 'چۈشتىن بۇرۇن' - ) { - return hour; - } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') { - return hour + 12; - } else { - return hour >= 11 ? hour : hour + 12; - } + + "assert": function () { + return true; }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return 'يېرىم كېچە'; - } else if (hm < 900) { - return 'سەھەر'; - } else if (hm < 1130) { - return 'چۈشتىن بۇرۇن'; - } else if (hm < 1230) { - return 'چۈش'; - } else if (hm < 1800) { - return 'چۈشتىن كېيىن'; - } else { - return 'كەچ'; + + getters: { + variables: function () { + return this.constraint; } + } + + } +}).as(exports, "HashConstraint"); + +Constraint.extend({ + instance: { + constructor: function (constraints, options) { + this.type = "from"; + this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true); + extd.bindAll(this, ["assert"]); }, - calendar: { - sameDay: '[بۈگۈن سائەت] LT', - nextDay: '[ئەتە سائەت] LT', - nextWeek: '[كېلەركى] dddd [سائەت] LT', - lastDay: '[تۆنۈگۈن] LT', - lastWeek: '[ئالدىنقى] dddd [سائەت] LT', - sameElse: 'L', + + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && deepEqual(this.constraints, constraint.constraints); }, - relativeTime: { - future: '%s كېيىن', - past: '%s بۇرۇن', - s: 'نەچچە سېكونت', - ss: '%d سېكونت', - m: 'بىر مىنۇت', - mm: '%d مىنۇت', - h: 'بىر سائەت', - hh: '%d سائەت', - d: 'بىر كۈن', - dd: '%d كۈن', - M: 'بىر ئاي', - MM: '%d ئاي', - y: 'بىر يىل', - yy: '%d يىل', + + "assert": function (fact, fh) { + return this.constraints(fact, fh); }, - dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '-كۈنى'; - case 'w': - case 'W': - return number + '-ھەپتە'; - default: - return number; + getters: { + variables: function () { + return this.constraint; } + } + + } +}).as(exports, "FromConstraint"); + +Constraint.extend({ + instance: { + constructor: function (func, options) { + this.type = "custom"; + this.fn = func; + this.options = options; + extd.bindAll(this, ["assert"]); }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 1st is the first week of the year. + + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.fn === constraint.constraint; }, - }); - return ugCn; + "assert": function (fact, fh) { + return this.fn(fact, fh); + } + } +}).as(exports, "CustomConstraint"); + -}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Ukrainian [uk] -//! author : zemlanin : https://github.com/zemlanin -//! Author : Menelion Elensúle : https://github.com/Oire +"use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isArray = extd.isArray, + forEach = extd.forEach, + some = extd.some, + indexOf = extd.indexOf, + isNumber = extd.isNumber, + removeDups = extd.removeDuplicates, + atoms = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"); - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 - ? forms[0] - : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; +function getProps(val) { + return extd(val).map(function mapper(val) { + return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(".") : val; + }).flatten().filter(function (v) { + return !!v; + }); +} + +var definedFuncs = { + indexOf: extd.indexOf, + now: function () { + return new Date(); + }, + + Date: function (y, m, d, h, min, s, ms) { + var date = new Date(); + if (isNumber(y)) { + date.setYear(y); + } + if (isNumber(m)) { + date.setMonth(m); + } + if (isNumber(d)) { + date.setDate(d); + } + if (isNumber(h)) { + date.setHours(h); + } + if (isNumber(min)) { + date.setMinutes(min); + } + if (isNumber(s)) { + date.setSeconds(s); + } + if (isNumber(ms)) { + date.setMilliseconds(ms); + } + return date; + }, + + lengthOf: function (arr, length) { + return arr.length === length; + }, + + isTrue: function (val) { + return val === true; + }, + + isFalse: function (val) { + return val === false; + }, + + isNotNull: function (actual) { + return actual !== null; + }, + + dateCmp: function (dt1, dt2) { + return extd.compare(dt1, dt2); } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', - mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', - hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', - dd: 'день_дні_днів', - MM: 'місяць_місяці_місяців', - yy: 'рік_роки_років', - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; + +}; + +forEach(["years", "days", "months", "hours", "minutes", "seconds"], function (k) { + definedFuncs[k + "FromNow"] = extd[k + "FromNow"]; + definedFuncs[k + "Ago"] = extd[k + "Ago"]; +}); + + +forEach(["isArray", "isNumber", "isHash", "isObject", "isDate", "isBoolean", "isString", "isRegExp", "isNull", "isEmpty", + "isUndefined", "isDefined", "isUndefinedOrNull", "isPromiseLike", "isFunction", "deepEqual"], function (k) { + var m = extd[k]; + definedFuncs[k] = function () { + return m.apply(extd, arguments); + }; +}); + + +var lang = { + + equal: function (c1, c2) { + var ret = false; + if (c1 === c2) { + ret = true; } else { - return number + ' ' + plural(format[key], +number); + if (c1[2] === c2[2]) { + if (indexOf(["string", "number", "boolean", "regexp", "identifier", "null"], c1[2]) !== -1) { + ret = c1[0] === c2[0]; + } else if (c1[2] === "unary" || c1[2] === "logicalNot") { + ret = this.equal(c1[0], c2[0]); + } else { + ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]); + } + } } - } - function weekdaysCaseReplace(m, format) { - var weekdays = { - nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( - '_' - ), - accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( - '_' - ), - genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( - '_' - ), - }, - nounCase; + return ret; + }, - if (m === true) { - return weekdays['nominative'] - .slice(1, 7) - .concat(weekdays['nominative'].slice(0, 1)); + __getProperties: function (rule) { + var ret = []; + if (rule) { + var rule2 = rule[2]; + if (!rule2) { + return ret; + } + if (rule2 !== "prop" && + rule2 !== "identifier" && + rule2 !== "string" && + rule2 !== "number" && + rule2 !== "boolean" && + rule2 !== "regexp" && + rule2 !== "unary" && + rule2 !== "unary") { + ret[0] = this.__getProperties(rule[0]); + ret[1] = this.__getProperties(rule[1]); + } else if (rule2 === "identifier") { + //at the bottom + ret = [rule[0]]; + } else { + ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0])); + } } - if (!m) { - return weekdays['nominative']; + return ret; + }, + + getIndexableProperties: function (rule) { + if (rule[2] === "composite") { + return this.getIndexableProperties(rule[0]); + } else if (/^(\w+(\['[^']*'])*) *([!=]==?|[<>]=?) (\w+(\['[^']*'])*)$/.test(this.parse(rule))) { + return getProps(this.__getProperties(rule)).flatten().value(); + } else { + return []; } + }, - nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) - ? 'accusative' - : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) - ? 'genitive' - : 'nominative'; - return weekdays[nounCase][m.day()]; - } - function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; - } + getIdentifiers: function (rule) { + var ret = []; + var rule2 = rule[2]; - var uk = moment.defineLocale('uk', { - months: { - format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( - '_' - ), - standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( - '_' - ), - }, - monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( - '_' - ), - weekdays: weekdaysCaseReplace, - weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY р.', - LLL: 'D MMMM YYYY р., HH:mm', - LLLL: 'dddd, D MMMM YYYY р., HH:mm', - }, - calendar: { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); + if (rule2 === "identifier") { + //its an identifier so stop + return [rule[0]]; + } else if (rule2 === "function") { + ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1])); + } else if (rule2 !== "string" && + rule2 !== "number" && + rule2 !== "boolean" && + rule2 !== "regexp" && + rule2 !== "unary" && + rule2 !== "unary") { + //its an expression so keep going + if (rule2 === "prop") { + ret = ret.concat(this.getIdentifiers(rule[0])); + if (rule[1]) { + var propChain = rule[1]; + //go through the member variables and collect any identifiers that may be in functions + while (isArray(propChain)) { + if (propChain[2] === "function") { + ret = ret.concat(this.getIdentifiers(propChain[1])); + break; + } else { + propChain = propChain[1]; + } + } } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'за %s', - past: '%s тому', - s: 'декілька секунд', - ss: relativeTimeWithPlural, - m: relativeTimeWithPlural, - mm: relativeTimeWithPlural, - h: 'годину', - hh: relativeTimeWithPlural, - d: 'день', - dd: relativeTimeWithPlural, - M: 'місяць', - MM: relativeTimeWithPlural, - y: 'рік', - yy: relativeTimeWithPlural, - }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; + } else { - return 'вечора'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; + if (rule[0]) { + ret = ret.concat(this.getIdentifiers(rule[0])); + } + if (rule[1]) { + ret = ret.concat(this.getIdentifiers(rule[1])); + } } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - - return uk; + } + //remove dups and return + return removeDups(ret); + }, -}))); + toConstraints: function (rule, options) { + var ret = [], + alias = options.alias, + scope = options.scope || {}; + var rule2 = rule[2]; -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ur.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ur.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + if (rule2 === "and") { + ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options)); + } else if ( + rule2 === "composite" || + rule2 === "or" || + rule2 === "lt" || + rule2 === "gt" || + rule2 === "lte" || + rule2 === "gte" || + rule2 === "like" || + rule2 === "notLike" || + rule2 === "eq" || + rule2 === "neq" || + rule2 === "seq" || + rule2 === "sneq" || + rule2 === "in" || + rule2 === "notIn" || + rule2 === "prop" || + rule2 === "propLookup" || + rule2 === "function" || + rule2 === "logicalNot") { + var isReference = some(this.getIdentifiers(rule), function (i) { + return i !== alias && !(i in definedFuncs) && !(i in scope); + }); + switch (rule2) { + case "eq": + ret.push(new atoms[isReference ? "ReferenceEqualityConstraint" : "EqualityConstraint"](rule, options)); + break; + case "seq": + ret.push(new atoms[isReference ? "ReferenceEqualityConstraint" : "EqualityConstraint"](rule, options)); + break; + case "neq": + ret.push(new atoms[isReference ? "ReferenceInequalityConstraint" : "InequalityConstraint"](rule, options)); + break; + case "sneq": + ret.push(new atoms[isReference ? "ReferenceInequalityConstraint" : "InequalityConstraint"](rule, options)); + break; + case "gt": + ret.push(new atoms[isReference ? "ReferenceGTConstraint" : "ComparisonConstraint"](rule, options)); + break; + case "gte": + ret.push(new atoms[isReference ? "ReferenceGTEConstraint" : "ComparisonConstraint"](rule, options)); + break; + case "lt": + ret.push(new atoms[isReference ? "ReferenceLTConstraint" : "ComparisonConstraint"](rule, options)); + break; + case "lte": + ret.push(new atoms[isReference ? "ReferenceLTEConstraint" : "ComparisonConstraint"](rule, options)); + break; + default: + ret.push(new atoms[isReference ? "ReferenceConstraint" : "ComparisonConstraint"](rule, options)); + } -//! moment.js locale configuration -//! locale : Urdu [ur] -//! author : Sawood Alam : https://github.com/ibnesayeed -//! author : Zack : https://github.com/ZackVision + } + return ret; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration + parse: function (rule) { + return this[rule[2]](rule[0], rule[1]); + }, - var months = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر', - ], - days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; + composite: function (lhs) { + return this.parse(lhs); + }, - var ur = moment.defineLocale('ur', { - months: months, - monthsShort: months, - weekdays: days, - weekdaysShort: days, - weekdaysMin: days, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd، D MMMM YYYY HH:mm', - }, - meridiemParse: /صبح|شام/, - isPM: function (input) { - return 'شام' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; - } - return 'شام'; - }, - calendar: { - sameDay: '[آج بوقت] LT', - nextDay: '[کل بوقت] LT', - nextWeek: 'dddd [بوقت] LT', - lastDay: '[گذشتہ روز بوقت] LT', - lastWeek: '[گذشتہ] dddd [بوقت] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s بعد', - past: '%s قبل', - s: 'چند سیکنڈ', - ss: '%d سیکنڈ', - m: 'ایک منٹ', - mm: '%d منٹ', - h: 'ایک گھنٹہ', - hh: '%d گھنٹے', - d: 'ایک دن', - dd: '%d دن', - M: 'ایک ماہ', - MM: '%d ماہ', - y: 'ایک سال', - yy: '%d سال', - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + and: function (lhs, rhs) { + return ["(", this.parse(lhs), "&&", this.parse(rhs), ")"].join(" "); + }, - return ur; + or: function (lhs, rhs) { + return ["(", this.parse(lhs), "||", this.parse(rhs), ")"].join(" "); + }, -}))); + prop: function (name, prop) { + if (prop[2] === "function") { + return [this.parse(name), this.parse(prop)].join("."); + } else { + return [this.parse(name), "['", this.parse(prop), "']"].join(""); + } + }, + propLookup: function (name, prop) { + if (prop[2] === "function") { + return [this.parse(name), this.parse(prop)].join("."); + } else { + return [this.parse(name), "[", this.parse(prop), "]"].join(""); + } + }, -/***/ }), + unary: function (lhs) { + return -1 * this.parse(lhs); + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js ***! - \********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + plus: function (lhs, rhs) { + return [this.parse(lhs), "+", this.parse(rhs)].join(" "); + }, + minus: function (lhs, rhs) { + return [this.parse(lhs), "-", this.parse(rhs)].join(" "); + }, -//! moment.js locale configuration -//! locale : Uzbek Latin [uz-latn] -//! author : Rasulbek Mirzayev : github.com/Rasulbeeek + mult: function (lhs, rhs) { + return [this.parse(lhs), "*", this.parse(rhs)].join(" "); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + div: function (lhs, rhs) { + return [this.parse(lhs), "/", this.parse(rhs)].join(" "); + }, - //! moment.js locale configuration + mod: function (lhs, rhs) { + return [this.parse(lhs), "%", this.parse(rhs)].join(" "); + }, - var uzLatn = moment.defineLocale('uz-latn', { - months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( - '_' - ), - monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), - weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( - '_' - ), - weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), - weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'D MMMM YYYY, dddd HH:mm', - }, - calendar: { - sameDay: '[Bugun soat] LT [da]', - nextDay: '[Ertaga] LT [da]', - nextWeek: 'dddd [kuni soat] LT [da]', - lastDay: '[Kecha soat] LT [da]', - lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", - sameElse: 'L', - }, - relativeTime: { - future: 'Yaqin %s ichida', - past: 'Bir necha %s oldin', - s: 'soniya', - ss: '%d soniya', - m: 'bir daqiqa', - mm: '%d daqiqa', - h: 'bir soat', - hh: '%d soat', - d: 'bir kun', - dd: '%d kun', - M: 'bir oy', - MM: '%d oy', - y: 'bir yil', - yy: '%d yil', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + lt: function (lhs, rhs) { + return [this.parse(lhs), "<", this.parse(rhs)].join(" "); + }, + gt: function (lhs, rhs) { + return [this.parse(lhs), ">", this.parse(rhs)].join(" "); + }, + lte: function (lhs, rhs) { + return [this.parse(lhs), "<=", this.parse(rhs)].join(" "); + }, + gte: function (lhs, rhs) { + return [this.parse(lhs), ">=", this.parse(rhs)].join(" "); + }, + like: function (lhs, rhs) { + return [this.parse(rhs), ".test(", this.parse(lhs), ")"].join(""); + }, + notLike: function (lhs, rhs) { + return ["!", this.parse(rhs), ".test(", this.parse(lhs), ")"].join(""); + }, + eq: function (lhs, rhs) { + return [this.parse(lhs), "==", this.parse(rhs)].join(" "); + }, - return uzLatn; + seq: function (lhs, rhs) { + return [this.parse(lhs), "===", this.parse(rhs)].join(" "); + }, -}))); + neq: function (lhs, rhs) { + return [this.parse(lhs), "!=", this.parse(rhs)].join(" "); + }, + sneq: function (lhs, rhs) { + return [this.parse(lhs), "!==", this.parse(rhs)].join(" "); + }, -/***/ }), + "in": function (lhs, rhs) { + return ["(indexOf(", this.parse(rhs), ",", this.parse(lhs), ")) != -1"].join(""); + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + "notIn": function (lhs, rhs) { + return ["(indexOf(", this.parse(rhs), ",", this.parse(lhs), ")) == -1"].join(""); + }, -//! moment.js locale configuration -//! locale : Uzbek [uz] -//! author : Sardor Muminov : https://github.com/muminoff + "arguments": function (lhs, rhs) { + var ret = []; + if (lhs) { + ret.push(this.parse(lhs)); + } + if (rhs) { + ret.push(this.parse(rhs)); + } + return ret.join(","); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + "array": function (lhs) { + var args = []; + if (lhs) { + args = this.parse(lhs); + if (isArray(args)) { + return args; + } else { + return ["[", args, "]"].join(""); + } + } + return ["[", args.join(","), "]"].join(""); + }, - //! moment.js locale configuration + "function": function (lhs, rhs) { + var args = this.parse(rhs); + return [this.parse(lhs), "(", args, ")"].join(""); + }, - var uz = moment.defineLocale('uz', { - months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( - '_' - ), - monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'D MMMM YYYY, dddd HH:mm', - }, - calendar: { - sameDay: '[Бугун соат] LT [да]', - nextDay: '[Эртага] LT [да]', - nextWeek: 'dddd [куни соат] LT [да]', - lastDay: '[Кеча соат] LT [да]', - lastWeek: '[Утган] dddd [куни соат] LT [да]', - sameElse: 'L', - }, - relativeTime: { - future: 'Якин %s ичида', - past: 'Бир неча %s олдин', - s: 'фурсат', - ss: '%d фурсат', - m: 'бир дакика', - mm: '%d дакика', - h: 'бир соат', - hh: '%d соат', - d: 'бир кун', - dd: '%d кун', - M: 'бир ой', - MM: '%d ой', - y: 'бир йил', - yy: '%d йил', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 4th is the first week of the year. - }, - }); + "string": function (lhs) { + return "'" + lhs + "'"; + }, - return uz; + "number": function (lhs) { + return lhs; + }, -}))); + "boolean": function (lhs) { + return lhs; + }, + regexp: function (lhs) { + return lhs; + }, -/***/ }), + identifier: function (lhs) { + return lhs; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/vi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/vi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + "null": function () { + return "null"; + }, -//! moment.js locale configuration -//! locale : Vietnamese [vi] -//! author : Bang Nguyen : https://github.com/bangnk -//! author : Chien Kira : https://github.com/chienkira + logicalNot: function (lhs) { + return ["!(", this.parse(lhs), ")"].join(""); + } +}; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var matcherCount = 0; +var toJs = exports.toJs = function (rule, scope, alias, equality, wrap) { + /*jshint evil:true*/ + var js = lang.parse(rule); + scope = scope || {}; + var vars = lang.getIdentifiers(rule); + var closureVars = ["var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;"], funcVars = []; + extd(vars).filter(function (v) { + var ret = ["var ", v, " = "]; + if (definedFuncs.hasOwnProperty(v)) { + ret.push("definedFuncs['", v, "']"); + } else if (scope.hasOwnProperty(v)) { + ret.push("scope['", v, "']"); + } else { + return true; + } + ret.push(";"); + closureVars.push(ret.join("")); + return false; + }).forEach(function (v) { + var ret = ["var ", v, " = "]; + if (equality || v !== alias) { + ret.push("fact." + v); + } else if (v === alias) { + ret.push("hash.", v, ""); + } + ret.push(";"); + funcVars.push(ret.join("")); + }); + var closureBody = closureVars.join("") + "return function matcher" + (matcherCount++) + (!equality ? "(fact, hash){" : "(fact){") + funcVars.join("") + " return " + (wrap ? wrap(js) : js) + ";}"; + var f = new Function("definedFuncs, scope", closureBody)(definedFuncs, scope); + //console.log(f.toString()); + return f; +}; - //! moment.js locale configuration +exports.getMatcher = function (rule, options, equality) { + options = options || {}; + return toJs(rule, options.scope, options.alias, equality, function (src) { + return "!!(" + src + ")"; + }); +}; - var vi = moment.defineLocale('vi', { - months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( - '_' - ), - monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( - '_' - ), - weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysParseExact: true, - meridiemParse: /sa|ch/i, - isPM: function (input) { - return /^ch$/i.test(input); - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'sa' : 'SA'; - } else { - return isLower ? 'ch' : 'CH'; - } - }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM [năm] YYYY', - LLL: 'D MMMM [năm] YYYY HH:mm', - LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', - l: 'DD/M/YYYY', - ll: 'D MMM YYYY', - lll: 'D MMM YYYY HH:mm', - llll: 'ddd, D MMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần trước lúc] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s tới', - past: '%s trước', - s: 'vài giây', - ss: '%d giây', - m: 'một phút', - mm: '%d phút', - h: 'một giờ', - hh: '%d giờ', - d: 'một ngày', - dd: '%d ngày', - M: 'một tháng', - MM: '%d tháng', - y: 'một năm', - yy: '%d năm', - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: function (number) { - return number; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, +exports.getSourceMatcher = function (rule, options, equality) { + options = options || {}; + return toJs(rule, options.scope, options.alias, equality, function (src) { + return src; }); +}; - return vi; +exports.toConstraints = function (constraint, options) { + if (typeof constraint === 'function') { + return [new atoms.CustomConstraint(constraint, options)]; + } + //constraint.split("&&") + return lang.toConstraints(constraint, options); +}; -}))); +exports.equal = function (c1, c2) { + return lang.equal(c1, c2); +}; +exports.getIdentifiers = function (constraint) { + return lang.getIdentifiers(constraint); +}; -/***/ }), +exports.getIndexableProperties = function (constraint) { + return lang.getIndexableProperties(constraint); +}; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ }), -//! moment.js locale configuration -//! locale : Pseudo [x-pseudo] -//! author : Andrew Hood : https://github.com/andrewhood125 +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +"use strict"; +/* module decorator */ module = __webpack_require__.nmd(module); - //! moment.js locale configuration +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isBoolean = extd.isBoolean, + declare = extd.declare, + indexOf = extd.indexOf, + pPush = Array.prototype.push; - var xPseudo = moment.defineLocale('x-pseudo', { - months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split( - '_' - ), - monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( - '_' - ), - weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), - weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[T~ódá~ý át] LT', - nextDay: '[T~ómó~rró~w át] LT', - nextWeek: 'dddd [át] LT', - lastDay: '[Ý~ést~érdá~ý át] LT', - lastWeek: '[L~ást] dddd [át] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'í~ñ %s', - past: '%s á~gó', - s: 'á ~féw ~sécó~ñds', - ss: '%d s~écóñ~ds', - m: 'á ~míñ~úté', - mm: '%d m~íñú~tés', - h: 'á~ñ hó~úr', - hh: '%d h~óúrs', - d: 'á ~dáý', - dd: '%d d~áýs', - M: 'á ~móñ~th', - MM: '%d m~óñt~hs', - y: 'á ~ýéár', - yy: '%d ý~éárs', - }, - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +function createContextHash(paths, hashCode) { + var ret = "", + i = -1, + l = paths.length; + while (++i < l) { + ret += paths[i].id + ":"; + } + ret += hashCode; + return ret; +} - return xPseudo; +function merge(h1, h2, aliases) { + var i = -1, l = aliases.length, alias; + while (++i < l) { + alias = aliases[i]; + h1[alias] = h2[alias]; + } +} -}))); +function unionRecency(arr, arr1, arr2) { + pPush.apply(arr, arr1); + var i = -1, l = arr2.length, val, j = arr.length; + while (++i < l) { + val = arr2[i]; + if (indexOf(arr, val) === -1) { + arr[j++] = val; + } + } +} +var Match = declare({ + instance: { -/***/ }), + isMatch: true, + hashCode: "", + facts: null, + factIds: null, + factHash: null, + recency: null, + aliases: null, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/yo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/yo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + constructor: function () { + this.facts = []; + this.factIds = []; + this.factHash = {}; + this.recency = []; + this.aliases = []; + }, -//! moment.js locale configuration -//! locale : Yoruba Nigeria [yo] -//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe + addFact: function (assertable) { + pPush.call(this.facts, assertable); + pPush.call(this.recency, assertable.recency); + pPush.call(this.factIds, assertable.id); + this.hashCode = this.factIds.join(":"); + return this; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + merge: function (mr) { + var ret = new Match(); + ret.isMatch = mr.isMatch; + pPush.apply(ret.facts, this.facts); + pPush.apply(ret.facts, mr.facts); + pPush.apply(ret.aliases, this.aliases); + pPush.apply(ret.aliases, mr.aliases); + ret.hashCode = this.hashCode + ":" + mr.hashCode; + merge(ret.factHash, this.factHash, this.aliases); + merge(ret.factHash, mr.factHash, mr.aliases); + unionRecency(ret.recency, this.recency, mr.recency); + return ret; + } + } +}); - //! moment.js locale configuration +var Context = declare({ + instance: { + match: null, + factHash: null, + aliases: null, + fact: null, + hashCode: null, + paths: null, + pathsHash: null, - var yo = moment.defineLocale('yo', { - months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( - '_' - ), - monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), - weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), - weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), - weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', + constructor: function (fact, paths, mr) { + this.fact = fact; + if (mr) { + this.match = mr; + } else { + this.match = new Match().addFact(fact); + } + this.factHash = this.match.factHash; + this.aliases = this.match.aliases; + this.hashCode = this.match.hashCode; + if (paths) { + this.paths = paths; + this.pathsHash = createContextHash(paths, this.hashCode); + } else { + this.pathsHash = this.hashCode; + } }, - calendar: { - sameDay: '[Ònì ni] LT', - nextDay: '[Ọ̀la ni] LT', - nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", - lastDay: '[Àna ni] LT', - lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - sameElse: 'L', + + "set": function (key, value) { + this.factHash[key] = value; + this.aliases.push(key); + return this; }, - relativeTime: { - future: 'ní %s', - past: '%s kọjá', - s: 'ìsẹjú aayá die', - ss: 'aayá %d', - m: 'ìsẹjú kan', - mm: 'ìsẹjú %d', - h: 'wákati kan', - hh: 'wákati %d', - d: 'ọjọ́ kan', - dd: 'ọjọ́ %d', - M: 'osù kan', - MM: 'osù %d', - y: 'ọdún kan', - yy: 'ọdún %d', + + isMatch: function (isMatch) { + if (isBoolean(isMatch)) { + this.match.isMatch = isMatch; + } else { + return this.match.isMatch; + } + return this; }, - dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, - ordinal: 'ọjọ́ %d', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + mergeMatch: function (merge) { + var match = this.match = this.match.merge(merge); + this.factHash = match.factHash; + this.hashCode = match.hashCode; + this.aliases = match.aliases; + return this; }, - }); - return yo; + clone: function (fact, paths, match) { + return new Context(fact || this.fact, paths || this.path, match || this.match); + } + } +}).as(module); + -}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Chinese (China) [zh-cn] -//! author : suupic : https://github.com/suupic -//! author : Zeno Zeng : https://github.com/zenozeng -//! author : uu109 : https://github.com/uu109 +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + Promise = extd.Promise, + nextTick = __webpack_require__(/*! ./nextTick */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js"), + isPromiseLike = extd.isPromiseLike; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +Promise.extend({ + instance: { - //! moment.js locale configuration + looping: false, - var zhCn = moment.defineLocale('zh-cn', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日Ah点mm分', - LLLL: 'YYYY年M月D日ddddAh点mm分', - l: 'YYYY/M/D', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', + constructor: function (flow, matchUntilHalt) { + this._super([]); + this.flow = flow; + this.agenda = flow.agenda; + this.rootNode = flow.rootNode; + this.matchUntilHalt = !!(matchUntilHalt); + extd.bindAll(this, ["onAlter", "callNext"]); }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; + + halt: function () { + this.__halted = true; + if (!this.looping) { + this.callback(); } }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; + + onAlter: function () { + this.flowAltered = true; + if (!this.looping && this.matchUntilHalt && !this.__halted) { + this.callNext(); } }, - calendar: { - sameDay: '[今天]LT', - nextDay: '[明天]LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - return '[下]dddLT'; - } else { - return '[本]dddLT'; - } - }, - lastDay: '[昨天]LT', - lastWeek: function (now) { - if (this.week() !== now.week()) { - return '[上]dddLT'; - } else { - return '[本]dddLT'; + + setup: function () { + var flow = this.flow; + this.rootNode.resetCounter(); + flow.on("assert", this.onAlter); + flow.on("modify", this.onAlter); + flow.on("retract", this.onAlter); + }, + + tearDown: function () { + var flow = this.flow; + flow.removeListener("assert", this.onAlter); + flow.removeListener("modify", this.onAlter); + flow.removeListener("retract", this.onAlter); + }, + + __handleAsyncNext: function (next) { + var self = this, agenda = self.agenda; + return next.then(function () { + self.looping = false; + if (!agenda.isEmpty()) { + if (self.flowAltered) { + self.rootNode.incrementCounter(); + self.flowAltered = false; + } + if (!self.__halted) { + self.callNext(); + } else { + self.callback(); + } + } else if (!self.matchUntilHalt || self.__halted) { + self.callback(); } - }, - sameElse: 'L', + self = null; + }, this.errback); }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; + + __handleSyncNext: function (next) { + this.looping = false; + if (!this.agenda.isEmpty()) { + if (this.flowAltered) { + this.rootNode.incrementCounter(); + this.flowAltered = false; + } } + if (next && !this.__halted) { + nextTick(this.callNext); + } else if (!this.matchUntilHalt || this.__halted) { + this.callback(); + } + return next; }, - relativeTime: { - future: '%s后', - past: '%s前', - s: '几秒', - ss: '%d 秒', - m: '1 分钟', - mm: '%d 分钟', - h: '1 小时', - hh: '%d 小时', - d: '1 天', - dd: '%d 天', - M: '1 个月', - MM: '%d 个月', - y: '1 年', - yy: '%d 年', - }, - week: { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + callback: function () { + this.tearDown(); + this._super(arguments); }, - }); - return zhCn; -}))); + callNext: function () { + this.looping = true; + var next = this.agenda.fireNext(); + return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next); + }, + execute: function () { + this.setup(); + this.callNext(); + return this; + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Chinese (Hong Kong) [zh-hk] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris -//! author : Konstantin : https://github.com/skfd -//! author : Anthony : https://github.com/anthonylau +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var arr = __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js"), + unique = arr.unique, + indexOf = arr.indexOf, + map = arr.map, + pSlice = Array.prototype.slice, + pSplice = Array.prototype.splice; - //! moment.js locale configuration +function plucked(prop) { + var exec = prop.match(/(\w+)\(\)$/); + if (exec) { + prop = exec[1]; + return function (item) { + return item[prop](); + }; + } else { + return function (item) { + return item[prop]; + }; + } +} - var zhHk = moment.defineLocale('zh-hk', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日dddd HH:mm', - l: 'YYYY/M/D', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1200) { - return '上午'; - } else if (hm === 1200) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; +function plucker(prop) { + prop = prop.split("."); + if (prop.length === 1) { + return plucked(prop[0]); + } else { + var pluckers = map(prop, function (prop) { + return plucked(prop); + }); + var l = pluckers.length; + return function (item) { + var i = -1, res = item; + while (++i < l) { + res = pluckers[i](res); } - }, - calendar: { - sameDay: '[今天]LT', - nextDay: '[明天]LT', - nextWeek: '[下]ddddLT', - lastDay: '[昨天]LT', - lastWeek: '[上]ddddLT', - sameElse: 'L', - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '週'; - default: - return number; + return res; + }; + } +} + +function intersection(a, b) { + a = pSlice.call(a); + var aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) === -1) { + pSplice.call(a, i--, 1); + l--; + } + } + return a; +} + +function inPlaceIntersection(a, b) { + var aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) === -1) { + pSplice.call(a, i--, 1); + l--; + } + } + return a; +} + +function inPlaceDifference(a, b) { + var aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) !== -1) { + pSplice.call(a, i--, 1); + l--; + } + } + return a; +} + +function diffArr(arr1, arr2) { + var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found; + if (l2 > l1) { + ret = arr1.slice(); + while (++i < l2) { + a = arr2[i]; + j = -1; + l1 = ret.length; + while (++j < l1) { + if (ret[j] === a) { + ret.splice(j, 1); + break; + } } - }, - relativeTime: { - future: '%s後', - past: '%s前', - s: '幾秒', - ss: '%d 秒', - m: '1 分鐘', - mm: '%d 分鐘', - h: '1 小時', - hh: '%d 小時', - d: '1 天', - dd: '%d 天', - M: '1 個月', - MM: '%d 個月', - y: '1 年', - yy: '%d 年', - }, - }); + } + } else { + while (++i < l1) { + a = arr1[i]; + j = -1; + found = false; + while (++j < l2) { + if (arr2[j] === a) { + found = true; + break; + } + } + if (!found) { + ret.push(a); + } + } + } + return ret; +} - return zhHk; +function diffHash(h1, h2) { + var ret = {}; + for (var i in h1) { + if (!hasOwnProperty.call(h2, i)) { + ret[i] = h1[i]; + } + } + return ret; +} + + +function union(arr1, arr2) { + return unique(arr1.concat(arr2)); +} + +module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")() + .register(__webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js")) + .register(arr) + .register(__webpack_require__(/*! object-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js")) + .register(__webpack_require__(/*! promise-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js")) + .register(__webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register("intersection", intersection) + .register("inPlaceIntersection", inPlaceIntersection) + .register("inPlaceDifference", inPlaceDifference) + .register("diffArr", diffArr) + .register("diffHash", diffHash) + .register("unionArr", union) + .register("plucker", plucker) + .register("HashTable", __webpack_require__(/*! ht */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js")) + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! leafy */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js")) + .register("LinkedList", __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js")); -}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Chinese (Macau) [zh-mo] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris -//! author : Tan Yuanhong : https://github.com/le0tan +"use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + bind = extd.bind, + declare = extd.declare, + nodes = __webpack_require__(/*! ./nodes */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js"), + EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter, + wm = __webpack_require__(/*! ./workingMemory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js"), + WorkingMemory = wm.WorkingMemory, + ExecutionStragegy = __webpack_require__(/*! ./executionStrategy */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js"), + AgendaTree = __webpack_require__(/*! ./agenda */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js"); - //! moment.js locale configuration +module.exports = declare(EventEmitter, { - var zhMo = moment.defineLocale('zh-mo', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日dddd HH:mm', - l: 'D/M/YYYY', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', + instance: { + + name: null, + + executionStrategy: null, + + constructor: function (name, conflictResolutionStrategy) { + this.env = null; + this.name = name; + this.__rules = {}; + this.conflictResolutionStrategy = conflictResolutionStrategy; + this.workingMemory = new WorkingMemory(); + this.agenda = new AgendaTree(this, conflictResolutionStrategy); + this.agenda.on("fire", bind(this, "emit", "fire")); + this.agenda.on("focused", bind(this, "emit", "focused")); + this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda); + extd.bindAll(this, "halt", "assert", "retract", "modify", "focus", + "emit", "getFacts", "getFact"); }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; + + getFacts: function (Type) { + var ret; + if (Type) { + ret = this.workingMemory.getFactsByType(Type); + } else { + ret = this.workingMemory.getFacts(); } + return ret; }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; + + getFact: function (Type) { + var ret; + if (Type) { + ret = this.workingMemory.getFactsByType(Type); } else { - return '晚上'; + ret = this.workingMemory.getFacts(); } + return ret && ret[0]; }, - calendar: { - sameDay: '[今天] LT', - nextDay: '[明天] LT', - nextWeek: '[下]dddd LT', - lastDay: '[昨天] LT', - lastWeek: '[上]dddd LT', - sameElse: 'L', + + focus: function (focused) { + this.agenda.setFocus(focused); + return this; }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '週'; - default: - return number; + + halt: function () { + this.executionStrategy.halt(); + return this; + }, + + dispose: function () { + this.workingMemory.dispose(); + this.agenda.dispose(); + this.rootNode.dispose(); + }, + + assert: function (fact) { + this.rootNode.assertFact(this.workingMemory.assertFact(fact)); + this.emit("assert", fact); + return fact; + }, + + // This method is called to remove an existing fact from working memory + retract: function (fact) { + //fact = this.workingMemory.getFact(fact); + this.rootNode.retractFact(this.workingMemory.retractFact(fact)); + this.emit("retract", fact); + return fact; + }, + + // This method is called to alter an existing fact. It is essentially a + // retract followed by an assert. + modify: function (fact, cb) { + //fact = this.workingMemory.getFact(fact); + if ("function" === typeof cb) { + cb.call(fact, fact); } + this.rootNode.modifyFact(this.workingMemory.modifyFact(fact)); + this.emit("modify", fact); + return fact; }, - relativeTime: { - future: '%s內', - past: '%s前', - s: '幾秒', - ss: '%d 秒', - m: '1 分鐘', - mm: '%d 分鐘', - h: '1 小時', - hh: '%d 小時', - d: '1 天', - dd: '%d 天', - M: '1 個月', - MM: '%d 個月', - y: '1 年', - yy: '%d 年', + + print: function () { + this.rootNode.print(); }, - }); - return zhMo; + containsRule: function (name) { + return this.rootNode.containsRule(name); + }, -}))); + rule: function (rule) { + this.rootNode.assertRule(rule); + }, + matchUntilHalt: function (cb) { + return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise(); + }, + + match: function (cb) { + return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise(); + } + + } +}); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Chinese (Taiwan) [zh-tw] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris +"use strict"; +/* module decorator */ module = __webpack_require__.nmd(module); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + instanceOf = extd.instanceOf, + forEach = extd.forEach, + declare = extd.declare, + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, + conflictStrategies = __webpack_require__(/*! ./conflict */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js"), + conflictResolution = conflictStrategies.strategy(["salience", "activationRecency"]), + rule = __webpack_require__(/*! ./rule */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + Flow = __webpack_require__(/*! ./flow */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js"); - //! moment.js locale configuration +var flows = {}; +var FlowContainer = declare({ - var zhTw = moment.defineLocale('zh-tw', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日dddd HH:mm', - l: 'YYYY/M/D', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; + instance: { + + constructor: function (name, cb) { + this.name = name; + this.cb = cb; + this.__rules = []; + this.__defined = {}; + this.conflictResolutionStrategy = conflictResolution; + if (cb) { + cb.call(this, this); } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; + if (!flows.hasOwnProperty(name)) { + flows[name] = this; } else { - return '晚上'; + throw new Error("Flow with " + name + " already defined"); } }, - calendar: { - sameDay: '[今天] LT', - nextDay: '[明天] LT', - nextWeek: '[下]dddd LT', - lastDay: '[昨天] LT', - lastWeek: '[上]dddd LT', - sameElse: 'L', + + conflictResolution: function (strategies) { + this.conflictResolutionStrategy = conflictStrategies.strategy(strategies); + return this; }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '週'; - default: - return number; + + getDefined: function (name) { + var ret = this.__defined[name.toLowerCase()]; + if (!ret) { + throw new Error(name + " flow class is not defined"); } + return ret; }, - relativeTime: { - future: '%s後', - past: '%s前', - s: '幾秒', - ss: '%d 秒', - m: '1 分鐘', - mm: '%d 分鐘', - h: '1 小時', - hh: '%d 小時', - d: '1 天', - dd: '%d 天', - M: '1 個月', - MM: '%d 個月', - y: '1 年', - yy: '%d 年', + + addDefined: function (name, cls) { + //normalize + this.__defined[name.toLowerCase()] = cls; + return cls; }, - }); - return zhTw; + rule: function () { + this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments)); + return this; + }, -}))); + getSession: function () { + var flow = new Flow(this.name, this.conflictResolutionStrategy); + forEach(this.__rules, function (rule) { + flow.rule(rule); + }); + flow.assert(new InitialFact()); + for (var i = 0, l = arguments.length; i < l; i++) { + flow.assert(arguments[i]); + } + return flow; + }, + containsRule: function (name) { + return extd.some(this.__rules, function (rule) { + return rule.name === name; + }); + } -/***/ }), + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$": -/*!************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ sync ^\.\/.*$ ***! - \************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + "static": { + getFlow: function (name) { + return flows[name]; + }, -var map = { - "./af": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/af.js", - "./af.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/af.js", - "./ar": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar.js", - "./ar-dz": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js", - "./ar-dz.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js", - "./ar-kw": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js", - "./ar-kw.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js", - "./ar-ly": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js", - "./ar-ly.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js", - "./ar-ma": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js", - "./ar-ma.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js", - "./ar-sa": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js", - "./ar-sa.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js", - "./ar-tn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js", - "./ar-tn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js", - "./ar.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar.js", - "./az": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/az.js", - "./az.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/az.js", - "./be": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/be.js", - "./be.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/be.js", - "./bg": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bg.js", - "./bg.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bg.js", - "./bm": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bm.js", - "./bm.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bm.js", - "./bn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bn.js", - "./bn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bn.js", - "./bo": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bo.js", - "./bo.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bo.js", - "./br": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/br.js", - "./br.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/br.js", - "./bs": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bs.js", - "./bs.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bs.js", - "./ca": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ca.js", - "./ca.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ca.js", - "./cs": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cs.js", - "./cs.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cs.js", - "./cv": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cv.js", - "./cv.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cv.js", - "./cy": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cy.js", - "./cy.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cy.js", - "./da": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/da.js", - "./da.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/da.js", - "./de": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de.js", - "./de-at": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js", - "./de-at.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js", - "./de-ch": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js", - "./de-ch.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js", - "./de.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de.js", - "./dv": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/dv.js", - "./dv.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/dv.js", - "./el": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/el.js", - "./el.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/el.js", - "./en-au": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js", - "./en-au.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js", - "./en-ca": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js", - "./en-ca.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js", - "./en-gb": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js", - "./en-gb.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js", - "./en-ie": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js", - "./en-ie.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js", - "./en-il": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js", - "./en-il.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js", - "./en-in": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js", - "./en-in.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js", - "./en-nz": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js", - "./en-nz.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js", - "./en-sg": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js", - "./en-sg.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js", - "./eo": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eo.js", - "./eo.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eo.js", - "./es": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es.js", - "./es-do": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js", - "./es-do.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js", - "./es-us": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js", - "./es-us.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js", - "./es.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es.js", - "./et": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/et.js", - "./et.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/et.js", - "./eu": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eu.js", - "./eu.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eu.js", - "./fa": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fa.js", - "./fa.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fa.js", - "./fi": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fi.js", - "./fi.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fi.js", - "./fil": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fil.js", - "./fil.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fil.js", - "./fo": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fo.js", - "./fo.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fo.js", - "./fr": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr.js", - "./fr-ca": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js", - "./fr-ca.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js", - "./fr-ch": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js", - "./fr-ch.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js", - "./fr.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr.js", - "./fy": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fy.js", - "./fy.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fy.js", - "./ga": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ga.js", - "./ga.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ga.js", - "./gd": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gd.js", - "./gd.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gd.js", - "./gl": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gl.js", - "./gl.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gl.js", - "./gom-deva": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js", - "./gom-deva.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js", - "./gom-latn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js", - "./gom-latn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js", - "./gu": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gu.js", - "./gu.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gu.js", - "./he": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/he.js", - "./he.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/he.js", - "./hi": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hi.js", - "./hi.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hi.js", - "./hr": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hr.js", - "./hr.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hr.js", - "./hu": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hu.js", - "./hu.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hu.js", - "./hy-am": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js", - "./hy-am.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js", - "./id": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/id.js", - "./id.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/id.js", - "./is": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/is.js", - "./is.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/is.js", - "./it": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it.js", - "./it-ch": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js", - "./it-ch.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js", - "./it.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it.js", - "./ja": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ja.js", - "./ja.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ja.js", - "./jv": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/jv.js", - "./jv.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/jv.js", - "./ka": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ka.js", - "./ka.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ka.js", - "./kk": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kk.js", - "./kk.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kk.js", - "./km": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/km.js", - "./km.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/km.js", - "./kn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kn.js", - "./kn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kn.js", - "./ko": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ko.js", - "./ko.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ko.js", - "./ku": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ku.js", - "./ku.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ku.js", - "./ky": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ky.js", - "./ky.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ky.js", - "./lb": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lb.js", - "./lb.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lb.js", - "./lo": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lo.js", - "./lo.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lo.js", - "./lt": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lt.js", - "./lt.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lt.js", - "./lv": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lv.js", - "./lv.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lv.js", - "./me": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/me.js", - "./me.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/me.js", - "./mi": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mi.js", - "./mi.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mi.js", - "./mk": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mk.js", - "./mk.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mk.js", - "./ml": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ml.js", - "./ml.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ml.js", - "./mn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mn.js", - "./mn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mn.js", - "./mr": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mr.js", - "./mr.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mr.js", - "./ms": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms.js", - "./ms-my": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js", - "./ms-my.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js", - "./ms.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms.js", - "./mt": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mt.js", - "./mt.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mt.js", - "./my": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/my.js", - "./my.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/my.js", - "./nb": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nb.js", - "./nb.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nb.js", - "./ne": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ne.js", - "./ne.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ne.js", - "./nl": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl.js", - "./nl-be": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js", - "./nl-be.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js", - "./nl.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl.js", - "./nn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nn.js", - "./nn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nn.js", - "./oc-lnc": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js", - "./oc-lnc.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js", - "./pa-in": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js", - "./pa-in.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js", - "./pl": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pl.js", - "./pl.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pl.js", - "./pt": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt.js", - "./pt-br": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js", - "./pt-br.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js", - "./pt.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt.js", - "./ro": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ro.js", - "./ro.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ro.js", - "./ru": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ru.js", - "./ru.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ru.js", - "./sd": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sd.js", - "./sd.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sd.js", - "./se": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/se.js", - "./se.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/se.js", - "./si": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/si.js", - "./si.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/si.js", - "./sk": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sk.js", - "./sk.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sk.js", - "./sl": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sl.js", - "./sl.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sl.js", - "./sq": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sq.js", - "./sq.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sq.js", - "./sr": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr.js", - "./sr-cyrl": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js", - "./sr-cyrl.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js", - "./sr.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr.js", - "./ss": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ss.js", - "./ss.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ss.js", - "./sv": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sv.js", - "./sv.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sv.js", - "./sw": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sw.js", - "./sw.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sw.js", - "./ta": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ta.js", - "./ta.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ta.js", - "./te": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/te.js", - "./te.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/te.js", - "./tet": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tet.js", - "./tet.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tet.js", - "./tg": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tg.js", - "./tg.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tg.js", - "./th": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/th.js", - "./th.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/th.js", - "./tl-ph": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js", - "./tl-ph.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js", - "./tlh": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js", - "./tlh.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js", - "./tr": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tr.js", - "./tr.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tr.js", - "./tzl": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js", - "./tzl.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js", - "./tzm": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js", - "./tzm-latn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js", - "./tzm-latn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js", - "./tzm.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js", - "./ug-cn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js", - "./ug-cn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js", - "./uk": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uk.js", - "./uk.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uk.js", - "./ur": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ur.js", - "./ur.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ur.js", - "./uz": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz.js", - "./uz-latn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js", - "./uz-latn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js", - "./uz.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz.js", - "./vi": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/vi.js", - "./vi.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/vi.js", - "./x-pseudo": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js", - "./x-pseudo.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js", - "./yo": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/yo.js", - "./yo.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/yo.js", - "./zh-cn": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js", - "./zh-cn.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js", - "./zh-hk": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js", - "./zh-hk.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js", - "./zh-mo": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js", - "./zh-mo.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js", - "./zh-tw": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js", - "./zh-tw.js": "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js" -}; + hasFlow: function (name) { + return extd.has(flows, name); + }, + deleteFlow: function (name) { + if (instanceOf(name, FlowContainer)) { + name = name.name; + } + delete flows[name]; + return FlowContainer; + }, -function webpackContext(req) { - var id = webpackContextResolve(req); - return __webpack_require__(id); -} -function webpackContextResolve(req) { - if(!__webpack_require__.o(map, req)) { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - } - return map[req]; -} -webpackContext.keys = function webpackContextKeys() { - return Object.keys(map); -}; -webpackContext.resolve = webpackContextResolve; -module.exports = webpackContext; -webpackContext.id = "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$"; + deleteFlows: function () { + for (var name in flows) { + if (name in flows) { + delete flows[name]; + } + } + return FlowContainer; + }, -/***/ }), + create: function (name, cb) { + return new FlowContainer(name, cb); + } + } -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js ***! - \************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +}).as(module); -/* module decorator */ module = __webpack_require__.nmd(module); -//! moment.js -//! version : 2.26.0 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com +/***/ }), -;(function (global, factory) { - true ? module.exports = factory() : - 0 -}(this, (function () { 'use strict'; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - var hookCallback; +"use strict"; +/** + * + * @projectName nools + * @github https://github.com/C2FO/nools + * @includeDoc [Examples] ../docs-md/examples.md + * @includeDoc [Change Log] ../history.md + * @header [../readme.md] + */ - function hooks() { - return hookCallback.apply(null, arguments); - } - // This is done to register the method called with moment() - // without creating circular dependencies. - function setHookCallback(callback) { - hookCallback = callback; - } +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + fs = __webpack_require__(/*! fs */ "fs"), + path = __webpack_require__(/*! path */ "path"), + compile = __webpack_require__(/*! ./compile */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js"), + FlowContainer = __webpack_require__(/*! ./flowContainer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js"); - function isArray(input) { - return ( - input instanceof Array || - Object.prototype.toString.call(input) === '[object Array]' - ); - } +function isNoolsFile(file) { + return (/\.nools$/).test(file); +} - function isObject(input) { - // IE8 will treat undefined and null as object if it wasn't for - // input != null - return ( - input != null && - Object.prototype.toString.call(input) === '[object Object]' - ); +function parse(source) { + var ret; + if (isNoolsFile(source)) { + ret = compile.parse(fs.readFileSync(source, "utf8"), source); + } else { + ret = compile.parse(source); } + return ret; +} - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } +exports.Flow = FlowContainer; - function isObjectEmpty(obj) { - if (Object.getOwnPropertyNames) { - return Object.getOwnPropertyNames(obj).length === 0; - } else { - var k; - for (k in obj) { - if (hasOwnProp(obj, k)) { - return false; - } - } - return true; - } - } +exports.getFlow = FlowContainer.getFlow; +exports.hasFlow = FlowContainer.hasFlow; - function isUndefined(input) { - return input === void 0; - } +exports.deleteFlow = function (name) { + FlowContainer.deleteFlow(name); + return this; +}; - function isNumber(input) { - return ( - typeof input === 'number' || - Object.prototype.toString.call(input) === '[object Number]' - ); - } +exports.deleteFlows = function () { + FlowContainer.deleteFlows(); + return this; +}; - function isDate(input) { - return ( - input instanceof Date || - Object.prototype.toString.call(input) === '[object Date]' - ); - } +exports.flow = FlowContainer.create; - function map(arr, fn) { - var res = [], - i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; +exports.compile = function (file, options, cb) { + if (extd.isFunction(options)) { + cb = options; + options = {}; + } else { + options = options || {}; } - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; + if (extd.isString(file)) { + options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null); + file = parse(file); } - - function createUTC(input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); + if (!options.name) { + throw new Error("Name required when compiling nools source"); } + return compile.compile(file, options, cb, FlowContainer); +}; - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty: false, - unusedTokens: [], - unusedInput: [], - overflow: -2, - charsLeftOver: 0, - nullInput: false, - invalidEra: null, - invalidMonth: null, - invalidFormat: false, - userInvalidated: false, - iso: false, - parsedDateParts: [], - era: null, - meridiem: null, - rfc2822: false, - weekdayMismatch: false, - }; +exports.transpile = function (file, options) { + options = options || {}; + if (extd.isString(file)) { + options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null); + file = parse(file); } + return compile.transpile(file, options); +}; - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } +exports.parse = parse; - var some; - if (Array.prototype.some) { - some = Array.prototype.some; - } else { - some = function (fun) { - var t = Object(this), - len = t.length >>> 0, - i; +/***/ }), - for (i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return false; - }; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js"); +declare({ - function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m), - parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }), - isNowValid = - !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidEra && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); + instance: { + constructor: function () { + this.head = null; + this.tail = null; + this.length = null; + }, - if (m._strict) { - isNowValid = - isNowValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; + push: function (data) { + var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null}; + if (tail) { + this.tail.next = node; + } + this.tail = node; + if (!head) { + this.head = node; } + this.length++; + return node; + }, - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; + remove: function (node) { + if (node.prev) { + node.prev.next = node.next; } else { - return isNowValid; + this.head = node.next; } - } - return m._isValid; - } - - function createInvalid(flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } else { - getParsingFlags(m).userInvalidated = true; - } - - return m; - } + if (node.next) { + node.next.prev = node.prev; + } else { + this.tail = node.prev; + } + //node.data = node.prev = node.next = null; + this.length--; + }, - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - var momentProperties = (hooks.momentProperties = []), - updateInProgress = false; + forEach: function (cb) { + var head = {next: this.head}; + while ((head = head.next)) { + cb(head.data); + } + }, - function copyConfig(to, from) { - var i, prop, val; + toArray: function () { + var head = {next: this.head}, ret = []; + while ((head = head.next)) { + ret.push(head); + } + return ret; + }, - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } + removeByData: function (data) { + var head = {next: this.head}; + while ((head = head.next)) { + if (head.data === data) { + this.remove(head); + break; + } + } + }, - if (momentProperties.length > 0) { - for (i = 0; i < momentProperties.length; i++) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; + getByData: function (data) { + var head = {next: this.head}; + while ((head = head.next)) { + if (head.data === data) { + return head; } } + }, + + clear: function () { + this.head = this.tail = null; + this.length = 0; } - return to; } - // Moment prototype object - function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - if (!this.isValid()) { - this._d = new Date(NaN); - } - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } - } +}).as(module); - function isMoment(obj) { - return ( - obj instanceof Moment || (obj != null && obj._isAMomentObject != null) - ); - } - function warn(msg) { - if ( - hooks.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && - console.warn - ) { - console.warn('Deprecation warning: ' + msg); - } - } +/***/ }), - function deprecate(msg, fn) { - var firstTime = true; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = [], - arg, - i, - key; - for (i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (key in arguments[0]) { - if (hasOwnProp(arguments[0], key)) { - arg += key + ': ' + arguments[0][key] + ', '; - } - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn( - msg + - '\nArguments: ' + - Array.prototype.slice.call(args).join('') + - '\n' + - new Error().stack - ); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); +/*global setImmediate, window, MessageChannel*/ +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); +var nextTick; +if (typeof setImmediate === "function") { + // In IE10, or use https://github.com/NobleJS/setImmediate + if (typeof window !== "undefined") { + nextTick = extd.bind(window, setImmediate); + } else { + nextTick = setImmediate; } +} else if (typeof process !== "undefined") { + // node + nextTick = process.nextTick; +} else if (typeof MessageChannel !== "undefined") { + // modern browsers + // http://www.nonblocking.io/2011/06/windownexttick.html + var channel = new MessageChannel(); + // linked list of tasks (single, with head node) + var head = {}, tail = head; + channel.port1.onmessage = function () { + head = head.next; + var task = head.task; + delete head.task; + task(); + }; + nextTick = function (task) { + tail = tail.next = {task: task}; + channel.port2.postMessage(0); + }; +} else { + // old browsers + nextTick = function (task) { + setTimeout(task, 0); + }; +} - var deprecations = {}; +module.exports = nextTick; - function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } +/***/ }), - hooks.suppressDeprecationWarnings = false; - hooks.deprecationHandler = null; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function isFunction(input) { - return ( - (typeof Function !== 'undefined' && input instanceof Function) || - Object.prototype.toString.call(input) === '[object Function]' - ); - } +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + intersection = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js").intersection; - function set(config) { - var prop, i; - for (i in config) { - if (hasOwnProp(config, i)) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - } - this._config = config; - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. - // TODO: Remove "ordinalParse" fallback in next major release. - this._dayOfMonthOrdinalParseLenient = new RegExp( - (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + - /\d{1,2}/.source - ); - } +Node.extend({ + instance: { - function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), - prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; + __propagatePaths: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths; + while (--i > -1) { + entry = entrySet[i]; + outNode = entry.key; + paths = entry.value; + if ((continuingPaths = intersection(paths, context.paths)).length) { + outNode[method](context.clone(null, continuingPaths, null)); } } - } - for (prop in parentConfig) { - if ( - hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop]) - ) { - // make sure changes to properties don't modify parent config - res[prop] = extend({}, res[prop]); + }, + + __propagateNoPaths: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length; + while (--i > -1) { + entrySet[i].key[method](context); } - } - return res; - } + }, - function Locale(config) { - if (config != null) { - this.set(config); + __propagate: function (method, context) { + if (context.paths) { + this.__propagatePaths(method, context); + } else { + this.__propagateNoPaths(method, context); + } } } +}).as(module); - var keys; +/***/ }), - if (Object.keys) { - keys = Object.keys; - } else { - keys = function (obj) { - var i, - res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } - } - return res; - }; - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var defaultCalendar = { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }; +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); - function calendar(key, mom, now) { - var output = this._calendar[key] || this._calendar['sameElse']; - return isFunction(output) ? output.call(mom, now) : output; - } +AlphaNode.extend({ + instance: { - function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return ( - (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + - absNumber - ); - } + constructor: function () { + this._super(arguments); + this.alias = this.constraint.get("alias"); + }, - var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - formatFunctions = {}, - formatTokenFunctions = {}; + toString: function () { + return "AliasNode" + this.__count; + }, - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken(token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal( - func.apply(this, arguments), - token - ); - }; + assert: function (context) { + return this.__propagate("assert", context.set(this.alias, context.fact.object)); + }, + + modify: function (context) { + return this.__propagate("modify", context.set(this.alias, context.fact.object)); + }, + + retract: function (context) { + return this.__propagate("retract", context.set(this.alias, context.fact.object)); + }, + + equal: function (other) { + return other instanceof this._static && this.alias === other.alias; } } +}).as(module); - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* module decorator */ module = __webpack_require__.nmd(module); + +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"); + +Node.extend({ + instance: { + constructor: function (constraint) { + this._super([]); + this.constraint = constraint; + this.constraintAssert = this.constraint.assert; + }, + + toString: function () { + return "AlphaNode " + this.__count; + }, + + equal: function (constraint) { + return this.constraint.equal(constraint.constraint); } - return input.replace(/\\/g, ''); } +}).as(module); - function makeFormatFunction(format) { - var array = format.match(formattingTokens), - i, - length; +/***/ }), - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return function (mom) { - var output = '', - i; - for (i = 0; i < length; i++) { - output += isFunction(array[i]) - ? array[i].call(mom, format) - : array[i]; - } - return output; - }; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + keys = extd.hash.keys, + Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + LeftMemory = __webpack_require__(/*! ./misc/leftMemory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js"), RightMemory = __webpack_require__(/*! ./misc/rightMemory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js"); - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } +Node.extend({ - format = expandFormat(format, m.localeData()); - formatFunctions[format] = - formatFunctions[format] || makeFormatFunction(format); + instance: { - return formatFunctions[format](m); - } + nodeType: "BetaNode", - function expandFormat(format, locale) { - var i = 5; + constructor: function () { + this._super([]); + this.leftMemory = {}; + this.rightMemory = {}; + this.leftTuples = new LeftMemory(); + this.rightTuples = new RightMemory(); + }, - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + __propagate: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length, entry, outNode; + while (--i > -1) { + entry = entrySet[i]; + outNode = entry.key; + outNode[method](context); + } + }, - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace( - localFormattingTokens, - replaceLongDateFormatTokens - ); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + dispose: function () { + this.leftMemory = {}; + this.rightMemory = {}; + this.leftTuples.clear(); + this.rightTuples.clear(); + }, - return format; - } + disposeLeft: function (fact) { + this.leftMemory = {}; + this.leftTuples.clear(); + this.propagateDispose(fact); + }, - var defaultLongDateFormat = { - LTS: 'h:mm:ss A', - LT: 'h:mm A', - L: 'MM/DD/YYYY', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY h:mm A', - LLLL: 'dddd, MMMM D, YYYY h:mm A', - }; + disposeRight: function (fact) { + this.rightMemory = {}; + this.rightTuples.clear(); + this.propagateDispose(fact); + }, - function longDateFormat(key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; + hashCode: function () { + return this.nodeType + " " + this.__count; + }, - if (format || !formatUpper) { - return format; - } + toString: function () { + return this.nodeType + " " + this.__count; + }, - this._longDateFormat[key] = formatUpper - .match(formattingTokens) - .map(function (tok) { - if ( - tok === 'MMMM' || - tok === 'MM' || - tok === 'DD' || - tok === 'dddd' - ) { - return tok.slice(1); - } - return tok; - }) - .join(''); + retractLeft: function (context) { + context = this.removeFromLeftMemory(context).data; + var rightMatches = context.rightMatches, + hashCodes = keys(rightMatches), + i = -1, + l = hashCodes.length; + while (++i < l) { + this.__propagate("retract", rightMatches[hashCodes[i]].clone()); + } + }, - return this._longDateFormat[key]; - } + retractRight: function (context) { + context = this.removeFromRightMemory(context).data; + var leftMatches = context.leftMatches, + hashCodes = keys(leftMatches), + i = -1, + l = hashCodes.length; + while (++i < l) { + this.__propagate("retract", leftMatches[hashCodes[i]].clone()); + } + }, - var defaultInvalidDate = 'Invalid date'; + assertLeft: function (context) { + this.__addToLeftMemory(context); + var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length; + while (++i < l) { + this.propagateFromLeft(context, rm[i].data); + } + }, - function invalidDate() { - return this._invalidDate; - } + assertRight: function (context) { + this.__addToRightMemory(context); + var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length; + while (++i < l) { + this.propagateFromRight(context, lm[i].data); + } + }, - var defaultOrdinal = '%d', - defaultDayOfMonthOrdinalParse = /\d{1,2}/; + modifyLeft: function (context) { + var previousContext = this.removeFromLeftMemory(context).data; + this.__addToLeftMemory(context); + var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches; + if (!l) { + this.propagateRetractModifyFromLeft(previousContext); + } else { + rightMatches = previousContext.rightMatches; + while (++i < l) { + this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data); + } - function ordinal(number) { - return this._ordinal.replace('%d', number); - } + } + }, - var defaultRelativeTime = { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - w: 'a week', - ww: '%d weeks', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }; + modifyRight: function (context) { + var previousContext = this.removeFromRightMemory(context).data; + this.__addToRightMemory(context); + var lm = this.leftTuples.getLeftMemory(context); + if (!lm.length) { + this.propagateRetractModifyFromRight(previousContext); + } else { + var leftMatches = previousContext.leftMatches, i = -1, l = lm.length; + while (++i < l) { + this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data); + } + } + }, - function relativeTime(number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return isFunction(output) - ? output(number, withoutSuffix, string, isFuture) - : output.replace(/%d/i, number); - } + propagateFromLeft: function (context, rc) { + this.__propagate("assert", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match)))); + }, - function pastFuture(diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); - } + propagateFromRight: function (context, lc) { + this.__propagate("assert", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match)))); + }, - var aliases = {}; + propagateRetractModifyFromLeft: function (context) { + var rightMatches = context.rightMatches, + hashCodes = keys(rightMatches), + l = hashCodes.length, + i = -1; + while (++i < l) { + this.__propagate("retract", rightMatches[hashCodes[i]].clone()); + } + }, - function addUnitAlias(unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } + propagateRetractModifyFromRight: function (context) { + var leftMatches = context.leftMatches, + hashCodes = keys(leftMatches), + l = hashCodes.length, + i = -1; + while (++i < l) { + this.__propagate("retract", leftMatches[hashCodes[i]].clone()); + } + }, - function normalizeUnits(units) { - return typeof units === 'string' - ? aliases[units] || aliases[units.toLowerCase()] - : undefined; - } + propagateAssertModifyFromLeft: function (context, rightMatches, rm) { + var factId = rm.hashCode; + if (factId in rightMatches) { + this.__propagate("modify", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match)))); + } else { + this.propagateFromLeft(context, rm); + } + }, - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + propagateAssertModifyFromRight: function (context, leftMatches, lm) { + var factId = lm.hashCode; + if (factId in leftMatches) { + this.__propagate("modify", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match)))); + } else { + this.propagateFromRight(context, lm); + } + }, - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; + removeFromRightMemory: function (context) { + var hashCode = context.hashCode, ret; + context = this.rightMemory[hashCode] || null; + var tuples = this.rightTuples; + if (context) { + var leftMemory = this.leftMemory; + ret = context.data; + var leftMatches = ret.leftMatches; + tuples.remove(context); + var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length; + while (++i < l) { + delete leftMemory[hashCodes[i]].data.rightMatches[hashCode]; } + delete this.rightMemory[hashCode]; } - } + return context; + }, - return normalizedInput; - } + removeFromLeftMemory: function (context) { + var hashCode = context.hashCode; + context = this.leftMemory[hashCode] || null; + if (context) { + var rightMemory = this.rightMemory; + var rightMatches = context.data.rightMatches; + this.leftTuples.remove(context); + var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length; + while (++i < l) { + delete rightMemory[hashCodes[i]].data.leftMatches[hashCode]; + } + delete this.leftMemory[hashCode]; + } + return context; + }, - var priorities = {}; + getRightMemoryMatches: function (context) { + var lm = this.leftMemory[context.hashCode], ret = {}; + if (lm) { + ret = lm.rightMatches; + } + return ret; + }, - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } + __addToMemoryMatches: function (rightContext, leftContext, createdContext) { + var rightFactId = rightContext.hashCode, + rm = this.rightMemory[rightFactId], + lm, leftFactId = leftContext.hashCode; + if (rm) { + rm = rm.data; + if (leftFactId in rm.leftMatches) { + throw new Error("Duplicate left fact entry"); + } + rm.leftMatches[leftFactId] = createdContext; + } + lm = this.leftMemory[leftFactId]; + if (lm) { + lm = lm.data; + if (rightFactId in lm.rightMatches) { + throw new Error("Duplicate right fact entry"); + } + lm.rightMatches[rightFactId] = createdContext; + } + return createdContext; + }, - function getPrioritizedUnits(unitsObj) { - var units = [], - u; - for (u in unitsObj) { - if (hasOwnProp(unitsObj, u)) { - units.push({ unit: u, priority: priorities[u] }); + __addToRightMemory: function (context) { + var hashCode = context.hashCode, rm = this.rightMemory; + if (hashCode in rm) { + return false; } - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; - } + rm[hashCode] = this.rightTuples.push(context); + context.leftMatches = {}; + return true; + }, - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - function absFloor(number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); + __addToLeftMemory: function (context) { + var hashCode = context.hashCode, lm = this.leftMemory; + if (hashCode in lm) { + return false; + } + lm[hashCode] = this.leftTuples.push(context); + context.rightMatches = {}; + return true; } } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; +}).as(module); - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } +/***/ }), - return value; - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function makeGetSet(unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); + +AlphaNode.extend({ + instance: { + + constructor: function () { + this.memory = {}; + this._super(arguments); + this.constraintAssert = this.constraint.assert; + }, + + assert: function (context) { + if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) { + this.__propagate("assert", context); } - }; - } + }, - function get(mom, unit) { - return mom.isValid() - ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() - : NaN; - } + modify: function (context) { + var memory = this.memory, + hashCode = context.pathsHash, + wasMatch = memory[hashCode]; + if ((memory[hashCode] = this.constraintAssert(context.factHash))) { + this.__propagate(wasMatch ? "modify" : "assert", context); + } else if (wasMatch) { + this.__propagate("retract", context); + } + }, - function set$1(mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if ( - unit === 'FullYear' && - isLeapYear(mom.year()) && - mom.month() === 1 && - mom.date() === 29 - ) { - value = toInt(value); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit]( - value, - mom.month(), - daysInMonth(value, mom.month()) - ); - } else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + retract: function (context) { + var hashCode = context.pathsHash, + memory = this.memory; + if (memory[hashCode]) { + this.__propagate("retract", context); } + delete memory[hashCode]; + }, + + toString: function () { + return "EqualityNode" + this.__count; } } +}).as(module); - // MOMENTS +/***/ }), - function stringGet(units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js": +/*!************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js ***! + \************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function stringSet(units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units), - i; - for (i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); +/* module decorator */ module = __webpack_require__.nmd(module); +var FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + isDefined = extd.isDefined, + isArray = extd.isArray; + +FromNotNode.extend({ + instance: { + + nodeType: "ExistsFromNode", + + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + if (ctx.blocked) { + this.__propagate("retract", ctx.clone()); + } } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); + }, + + __modify: function (context, leftContext) { + var leftContextBlocked = leftContext.blocked; + var fh = context.factHash, o = this.from(fh); + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + break; + } + } + } else if (isDefined(o)) { + context.blocked = this.__isMatch(context, o, true); + } + var newContextBlocked = context.blocked; + if (newContextBlocked) { + if (leftContextBlocked) { + this.__propagate("modify", context.clone()); + } else { + this.__propagate("assert", context.clone()); + } + } else if (leftContextBlocked) { + this.__propagate("retract", context.clone()); } - } - return this; - } - var match1 = /\d/, // 0 - 9 - match2 = /\d\d/, // 00 - 99 - match3 = /\d{3}/, // 000 - 999 - match4 = /\d{4}/, // 0000 - 9999 - match6 = /[+-]?\d{6}/, // -999999 - 999999 - match1to2 = /\d\d?/, // 0 - 99 - match3to4 = /\d\d\d\d?/, // 999 - 9999 - match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 - match1to3 = /\d{1,3}/, // 0 - 999 - match1to4 = /\d{1,4}/, // 0 - 9999 - match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 - matchUnsigned = /\d+/, // 0 - inf - matchSigned = /[+-]?\d+/, // -inf - inf - matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z - matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - // any word (or two) characters or numbers including two/three word month in arabic. - // includes scottish gaelic two word and hyphenated months - matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, - regexes; + }, - regexes = {}; + __findMatches: function (context) { + var fh = context.factHash, o = this.from(fh), isMatch = false; + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + this.__propagate("assert", context.clone()); + return; + } + } + } else if (isDefined(o) && (this.__isMatch(context, o, true))) { + context.blocked = true; + this.__propagate("assert", context.clone()); + } + return isMatch; + }, - function addRegexToken(token, regex, strictRegex) { - regexes[token] = isFunction(regex) - ? regex - : function (isStrict, localeData) { - return isStrict && strictRegex ? strictRegex : regex; - }; - } + __isMatch: function (oc, o, add) { + var ret = false; + if (this.type(o)) { + var createdFact = this.workingMemory.getFactHandle(o); + var context = new Context(createdFact, null, null) + .mergeMatch(oc.match) + .set(this.alias, o); + if (add) { + var fm = this.fromMemory[createdFact.id]; + if (!fm) { + fm = this.fromMemory[createdFact.id] = {}; + } + fm[oc.hashCode] = oc; + } + var fh = context.factHash; + var eqConstraints = this.__equalityConstraints; + for (var i = 0, l = eqConstraints.length; i < l; i++) { + if (eqConstraints[i](fh)) { + ret = true; + } else { + ret = false; + break; + } + } + } + return ret; + }, - function getParseRegexForToken(token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); + assertLeft: function (context) { + this.__addToLeftMemory(context); + this.__findMatches(context); } - return regexes[token](config._strict, config._locale); } +}).as(module); - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return regexEscape( - s - .replace('\\', '') - .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function ( - matched, - p1, - p2, - p3, - p4 - ) { - return p1 || p2 || p3 || p4; - }) - ); - } +/***/ }), - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var tokens = {}; +/* module decorator */ module = __webpack_require__.nmd(module); +var NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"); - function addParseToken(token, callback) { - var i, - func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - function addWeekParseToken(token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } +NotNode.extend({ + instance: { - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } + nodeType: "ExistsNode", - var YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - WEEK = 7, - WEEKDAY = 8; + blockedContext: function (leftContext, rightContext) { + leftContext.blocker = rightContext; + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext)); + this.__propagate("assert", this.__cloneContext(leftContext)); + }, - function mod(n, x) { - return ((n % x) + x) % x; - } + notBlockedContext: function (leftContext, propagate) { + this.__addToLeftMemory(leftContext); + propagate && this.__propagate("retract", this.__cloneContext(leftContext)); + }, - var indexOf; + propagateFromLeft: function (leftContext) { + this.notBlockedContext(leftContext, false); + }, - if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; - } else { - indexOf = function (o) { - // I know - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; + + retractLeft: function (context) { + var ctx; + if (!this.removeFromLeftMemory(context)) { + if ((ctx = this.removeFromLeftBlockedMemory(context))) { + this.__propagate("retract", this.__cloneContext(ctx.data)); + } else { + throw new Error(); } } - return -1; - }; - } + }, + + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context), + leftContext, + thisConstraint = this.constraint, + rightTuples = this.rightTuples, + l = rightTuples.length, + isBlocked = false, + node, rc, blocker; + if (!ctx) { + //blocked before + ctx = this.removeFromLeftBlockedMemory(context); + isBlocked = true; + } + if (ctx) { + leftContext = ctx.data; + + if (leftContext && leftContext.blocker) { + //we were blocked before so only check nodes previous to our blocker + blocker = this.rightMemory[leftContext.blocker.hashCode]; + } + if (blocker) { + if (thisConstraint.isMatch(context, rc = blocker.data)) { + //propogate as a modify or assert + this.__propagate(!isBlocked ? "assert" : "modify", this.__cloneContext(leftContext)); + context.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context = null; + } + if (context) { + node = {next: blocker.next}; + } + } else { + node = {next: rightTuples.head}; + } + if (context && l) { + node = {next: rightTuples.head}; + //we were propagated before + while ((node = node.next)) { + if (thisConstraint.isMatch(context, rc = node.data)) { + //we cant be proagated so retract previous + + //we were asserted before so retract + this.__propagate(!isBlocked ? "assert" : "modify", this.__cloneContext(leftContext)); + + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context.blocker = rc; + context = null; + break; + } + } + } + if (context) { + //we can still be propogated + this.__addToLeftMemory(context); + if (isBlocked) { + //we were blocked so retract + this.__propagate("retract", this.__cloneContext(context)); + } + + } + } else { + throw new Error(); + } + + }, + + modifyRight: function (context) { + var ctx = this.removeFromRightMemory(context); + if (ctx) { + var rightContext = ctx.data, + leftTuples = this.leftTuples, + leftTuplesLength = leftTuples.length, + leftContext, + thisConstraint = this.constraint, + node, + blocking = rightContext.blocking; + this.__addToRightMemory(context); + context.blocking = new LinkedList(); + if (leftTuplesLength || blocking.length) { + if (blocking.length) { + var rc; + //check old blocked contexts + //check if the same contexts blocked before are still blocked + var blockingNode = {next: blocking.head}; + while ((blockingNode = blockingNode.next)) { + leftContext = blockingNode.data; + leftContext.blocker = null; + if (thisConstraint.isMatch(leftContext, context)) { + leftContext.blocker = context; + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + this.__propagate("assert", this.__cloneContext(leftContext)); + leftContext = null; + } else { + //we arent blocked anymore + leftContext.blocker = null; + node = ctx; + while ((node = node.next)) { + if (thisConstraint.isMatch(leftContext, rc = node.data)) { + leftContext.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(leftContext)); + this.__propagate("assert", this.__cloneContext(leftContext)); + leftContext = null; + break; + } + } + if (leftContext) { + this.__addToLeftMemory(leftContext); + } + } + } + } + + if (leftTuplesLength) { + //check currently left tuples in memory + node = {next: leftTuples.head}; + while ((node = node.next)) { + leftContext = node.data; + if (thisConstraint.isMatch(leftContext, context)) { + this.__propagate("assert", this.__cloneContext(leftContext)); + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + leftContext.blocker = context; + } + } + } + + + } + } else { + throw new Error(); + } + - function daysInMonth(year, month) { - if (isNaN(year) || isNaN(month)) { - return NaN; } - var modMonth = mod(month, 12); - year += (month - modMonth) / 12; - return modMonth === 1 - ? isLeapYear(year) - ? 29 - : 28 - : 31 - ((modMonth % 7) % 2); } +}).as(module); - // FORMATTING - - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); +/***/ }), - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); +/* module decorator */ module = __webpack_require__.nmd(module); +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + EqualityConstraint = constraint.EqualityConstraint, + HashConstraint = constraint.HashConstraint, + ReferenceConstraint = constraint.ReferenceConstraint, + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + isDefined = extd.isDefined, + isEmpty = extd.isEmpty, + forEach = extd.forEach, + isArray = extd.isArray; - // ALIASES +var DEFAULT_MATCH = { + isMatch: function () { + return false; + } +}; - addUnitAlias('month', 'M'); +JoinNode.extend({ + instance: { - // PRIORITY + nodeType: "FromNode", - addUnitPriority('month', 8); + constructor: function (pattern, wm) { + this._super(arguments); + this.workingMemory = wm; + this.fromMemory = {}; + this.pattern = pattern; + this.type = pattern.get("constraints")[0].assert; + this.alias = pattern.get("alias"); + this.from = pattern.from.assert; + var eqConstraints = this.__equalityConstraints = []; + var vars = []; + forEach(this.constraints = this.pattern.get("constraints").slice(1), function (c) { + if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) { + eqConstraints.push(c.assert); + } else if (c instanceof HashConstraint) { + vars = vars.concat(c.get("variables")); + } + }); + this.__variables = vars; + }, - // PARSING + __createMatches: function (context) { + var fh = context.factHash, o = this.from(fh); + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + this.__checkMatch(context, o[i], true); + } + } else if (isDefined(o)) { + this.__checkMatch(context, o, true); + } + }, - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); - }); - addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); - }); + __checkMatch: function (context, o, propogate) { + var newContext; + if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) { + this.__propagate("assert", newContext.clone()); + } + return newContext; + }, - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); + __createMatch: function (lc, o) { + if (this.type(o)) { + var createdFact = this.workingMemory.getFactHandle(o, true), + createdContext, + rc = new Context(createdFact, null, null) + .set(this.alias, o), + createdFactId = createdFact.id; + var fh = rc.factHash, lcFh = lc.factHash; + for (var key in lcFh) { + fh[key] = lcFh[key]; + } + var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length; + while (++i < l) { + if (!eqConstraints[i](fh, fh)) { + createdContext = DEFAULT_MATCH; + break; + } + } + var fm = this.fromMemory[createdFactId]; + if (!fm) { + fm = this.fromMemory[createdFactId] = {}; + } + if (!createdContext) { + var prop; + i = -1; + l = vars.length; + while (++i < l) { + prop = vars[i]; + fh[prop] = o[prop]; + } + lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match)); + } + fm[lc.hashCode] = [lc, createdContext]; + return createdContext; + } + return DEFAULT_MATCH; + }, - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); + retractRight: function () { + throw new Error("Shouldnt have gotten here"); + }, - // LOCALES + removeFromFromMemory: function (context) { + var factId = context.fact.id; + var fm = this.fromMemory[factId]; + if (fm) { + var entry; + for (var i in fm) { + entry = fm[i]; + if (entry[1] === context) { + delete fm[i]; + if (isEmpty(fm)) { + delete this.fromMemory[factId]; + } + break; + } + } + } - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split( - '_' - ), - MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, - defaultMonthsShortRegex = matchWord, - defaultMonthsRegex = matchWord; + }, - function localeMonths(m, format) { - if (!m) { - return isArray(this._months) - ? this._months - : this._months['standalone']; - } - return isArray(this._months) - ? this._months[m.month()] - : this._months[ - (this._months.isFormat || MONTHS_IN_FORMAT).test(format) - ? 'format' - : 'standalone' - ][m.month()]; - } + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + var fromMatches = ctx.fromMatches; + for (var i in fromMatches) { + this.removeFromFromMemory(fromMatches[i]); + this.__propagate("retract", fromMatches[i].clone()); + } + } + }, - function localeMonthsShort(m, format) { - if (!m) { - return isArray(this._monthsShort) - ? this._monthsShort - : this._monthsShort['standalone']; - } - return isArray(this._monthsShort) - ? this._monthsShort[m.month()] - : this._monthsShort[ - MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' - ][m.month()]; - } + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact; + if (ctx) { + this.__addToLeftMemory(context); - function handleStrictParse(monthName, format, strict) { - var i, - ii, - mom, - llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - // this is not used - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort( - mom, - '' - ).toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); - } - } + var leftContext = ctx.data, + fromMatches = (context.fromMatches = {}), + rightMatches = leftContext.fromMatches, + o = this.from(context.factHash); - if (strict) { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; + if (isArray(o)) { + for (i = 0, l = o.length; i < l; i++) { + newContext = this.__checkMatch(context, o[i], false); + if (newContext.isMatch()) { + factId = newContext.fact.id; + if (factId in rightMatches) { + this.__propagate("modify", newContext.clone()); + } else { + this.__propagate("assert", newContext.clone()); + } + } + } + } else if (isDefined(o)) { + newContext = this.__checkMatch(context, o, false); + if (newContext.isMatch()) { + factId = newContext.fact.id; + if (factId in rightMatches) { + this.__propagate("modify", newContext.clone()); + } else { + this.__propagate("assert", newContext.clone()); + } + } + } + for (i in rightMatches) { + if (!(i in fromMatches)) { + this.removeFromFromMemory(rightMatches[i]); + this.__propagate("retract", rightMatches[i].clone()); + } } - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; } else { - ii = indexOf.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; + this.assertLeft(context); + } + fact = context.fact; + factId = fact.id; + var fm = this.fromMemory[factId]; + this.fromMemory[factId] = {}; + if (fm) { + var lc, entry, cc, createdIsMatch, factObject = fact.object; + for (i in fm) { + entry = fm[i]; + lc = entry[0]; + cc = entry[1]; + createdIsMatch = cc.isMatch(); + if (lc.hashCode !== context.hashCode) { + newContext = this.__createMatch(lc, factObject, false); + if (createdIsMatch) { + this.__propagate("retract", cc.clone()); + } + if (newContext.isMatch()) { + this.__propagate(createdIsMatch ? "modify" : "assert", newContext.clone()); + } + + } } - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; } + }, + + assertLeft: function (context) { + this.__addToLeftMemory(context); + context.fromMatches = {}; + this.__createMatches(context); + }, + + assertRight: function () { + throw new Error("Shouldnt have gotten here"); } + } +}).as(module); - function localeMonthsParse(monthName, format, strict) { - var i, mom, regex; +/***/ }), - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + EqualityConstraint = constraint.EqualityConstraint, + HashConstraint = constraint.HashConstraint, + ReferenceConstraint = constraint.ReferenceConstraint, + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + isDefined = extd.isDefined, + forEach = extd.forEach, + isArray = extd.isArray; - // TODO: add sorting - // Sorting makes sure if one month (or abbr) is a prefix of another - // see sorting in computeMonthsParse - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp( - '^' + this.months(mom, '').replace('.', '') + '$', - 'i' - ); - this._shortMonthsParse[i] = new RegExp( - '^' + this.monthsShort(mom, '').replace('.', '') + '$', - 'i' - ); - } - if (!strict && !this._monthsParse[i]) { - regex = - '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if ( - strict && - format === 'MMMM' && - this._longMonthsParse[i].test(monthName) - ) { - return i; - } else if ( - strict && - format === 'MMM' && - this._shortMonthsParse[i].test(monthName) - ) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } +JoinNode.extend({ + instance: { - // MOMENTS + nodeType: "FromNotNode", - function setMonth(mom, value) { - var dayOfMonth; + constructor: function (pattern, workingMemory) { + this._super(arguments); + this.workingMemory = workingMemory; + this.pattern = pattern; + this.type = pattern.get("constraints")[0].assert; + this.alias = pattern.get("alias"); + this.from = pattern.from.assert; + this.fromMemory = {}; + var eqConstraints = this.__equalityConstraints = []; + var vars = []; + forEach(this.constraints = this.pattern.get("constraints").slice(1), function (c) { + if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) { + eqConstraints.push(c.assert); + } else if (c instanceof HashConstraint) { + vars = vars.concat(c.get("variables")); + } + }); + this.__variables = vars; - if (!mom.isValid()) { - // No op - return mom; - } + }, - if (typeof value === 'string') { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (!isNumber(value)) { - return mom; + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + if (!ctx.blocked) { + this.__propagate("retract", ctx.clone()); } } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } + }, - function getSetMonth(value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } - } + __modify: function (context, leftContext) { + var leftContextBlocked = leftContext.blocked; + var fh = context.factHash, o = this.from(fh); + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + break; + } + } + } else if (isDefined(o)) { + context.blocked = this.__isMatch(context, o, true); + } + var newContextBlocked = context.blocked; + if (!newContextBlocked) { + if (leftContextBlocked) { + this.__propagate("assert", context.clone()); + } else { + this.__propagate("modify", context.clone()); + } + } else if (!leftContextBlocked) { + this.__propagate("retract", leftContext.clone()); + } - function getDaysInMonth() { - return daysInMonth(this.year(), this.month()); - } + }, - function monthsShortRegex(isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + this.__addToLeftMemory(context); + this.__modify(context, ctx.data); } else { - return this._monthsShortRegex; + throw new Error(); } - } else { - if (!hasOwnProp(this, '_monthsShortRegex')) { - this._monthsShortRegex = defaultMonthsShortRegex; + var fm = this.fromMemory[context.fact.id]; + this.fromMemory[context.fact.id] = {}; + if (fm) { + for (var i in fm) { + // update any contexts associated with this fact + if (i !== context.hashCode) { + var lc = fm[i]; + ctx = this.removeFromLeftMemory(lc); + if (ctx) { + lc = lc.clone(); + lc.blocked = false; + this.__addToLeftMemory(lc); + this.__modify(lc, ctx.data); + } + } + } } - return this._monthsShortStrictRegex && isStrict - ? this._monthsShortStrictRegex - : this._monthsShortRegex; - } - } + }, - function monthsRegex(isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; + __findMatches: function (context) { + var fh = context.factHash, o = this.from(fh), isMatch = false; + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + return; + } + } + this.__propagate("assert", context.clone()); + } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) { + this.__propagate("assert", context.clone()); } - } else { - if (!hasOwnProp(this, '_monthsRegex')) { - this._monthsRegex = defaultMonthsRegex; + return isMatch; + }, + + __isMatch: function (oc, o, add) { + var ret = false; + if (this.type(o)) { + var createdFact = this.workingMemory.getFactHandle(o); + var context = new Context(createdFact, null) + .mergeMatch(oc.match) + .set(this.alias, o); + if (add) { + var fm = this.fromMemory[createdFact.id]; + if (!fm) { + fm = this.fromMemory[createdFact.id] = {}; + } + fm[oc.hashCode] = oc; + } + var fh = context.factHash; + var eqConstraints = this.__equalityConstraints; + for (var i = 0, l = eqConstraints.length; i < l; i++) { + if (eqConstraints[i](fh, fh)) { + ret = true; + } else { + ret = false; + break; + } + } } - return this._monthsStrictRegex && isStrict - ? this._monthsStrictRegex - : this._monthsRegex; - } - } + return ret; + }, - function computeMonthsParse() { - function cmpLenRev(a, b) { - return b.length - a.length; - } + assertLeft: function (context) { + this.__addToLeftMemory(context); + this.__findMatches(context); + }, - var shortPieces = [], - longPieces = [], - mixedPieces = [], - i, - mom; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); - } - // Sorting makes sure if one month (or abbr) is a prefix of another it - // will match the longer piece. - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); + assertRight: function () { + throw new Error("Shouldnt have gotten here"); + }, + + retractRight: function () { + throw new Error("Shouldnt have gotten here"); } - this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp( - '^(' + longPieces.join('|') + ')', - 'i' - ); - this._monthsShortStrictRegex = new RegExp( - '^(' + shortPieces.join('|') + ')', - 'i' - ); } +}).as(module); - // FORMATTING +/***/ }), - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : '+' + y; - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; +"use strict"; + +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + some = extd.some, + declare = extd.declare, + pattern = __webpack_require__(/*! ../pattern.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + ObjectPattern = pattern.ObjectPattern, + FromPattern = pattern.FromPattern, + FromNotPattern = pattern.FromNotPattern, + ExistsPattern = pattern.ExistsPattern, + FromExistsPattern = pattern.FromExistsPattern, + NotPattern = pattern.NotPattern, + CompositePattern = pattern.CompositePattern, + InitialFactPattern = pattern.InitialFactPattern, + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + HashConstraint = constraints.HashConstraint, + ReferenceConstraint = constraints.ReferenceConstraint, + AliasNode = __webpack_require__(/*! ./aliasNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js"), + EqualityNode = __webpack_require__(/*! ./equalityNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js"), + JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + FromNode = __webpack_require__(/*! ./fromNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js"), + FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + ExistsNode = __webpack_require__(/*! ./existsNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js"), + ExistsFromNode = __webpack_require__(/*! ./existsFromNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js"), + LeftAdapterNode = __webpack_require__(/*! ./leftAdapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js"), + RightAdapterNode = __webpack_require__(/*! ./rightAdapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js"), + TypeNode = __webpack_require__(/*! ./typeNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js"), + TerminalNode = __webpack_require__(/*! ./terminalNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js"), + PropertyNode = __webpack_require__(/*! ./propertyNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js"); + +function hasRefernceConstraints(pattern) { + return some(pattern.constraints || [], function (c) { + return c instanceof ReferenceConstraint; }); +} - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); +declare({ + instance: { + constructor: function (wm, agendaTree) { + this.terminalNodes = []; + this.joinNodes = []; + this.nodes = []; + this.constraints = []; + this.typeNodes = []; + this.__ruleCount = 0; + this.bucket = { + counter: 0, + recency: 0 + }; + this.agendaTree = agendaTree; + this.workingMemory = wm; + }, - // ALIASES + assertRule: function (rule) { + var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree); + this.__addToNetwork(rule, rule.pattern, terminalNode); + this.__mergeJoinNodes(); + this.terminalNodes.push(terminalNode); + }, - addUnitAlias('year', 'y'); + resetCounter: function () { + this.bucket.counter = 0; + }, - // PRIORITIES + incrementCounter: function () { + this.bucket.counter++; + }, - addUnitPriority('year', 1); + assertFact: function (fact) { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].assert(fact); + } + }, - // PARSING + retractFact: function (fact) { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].retract(fact); + } + }, - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); + modifyFact: function (fact) { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].modify(fact); + } + }, - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = - input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); - }); - // HELPERS + containsRule: function (name) { + return some(this.terminalNodes, function (n) { + return n.rule.name === name; + }); + }, - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + dispose: function () { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].dispose(); + } + }, - // HOOKS + __mergeJoinNodes: function () { + var joinNodes = this.joinNodes; + for (var i = 0; i < joinNodes.length; i++) { + var j1 = joinNodes[i], j2 = joinNodes[i + 1]; + if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) { + j1.merge(j2); + joinNodes.splice(i + 1, 1); + } + } + }, - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + __checkEqual: function (node) { + var constraints = this.constraints, i = constraints.length - 1; + for (; i >= 0; i--) { + var n = constraints[i]; + if (node.equal(n)) { + return n; + } + } + constraints.push(node); + return node; + }, - // MOMENTS + __createTypeNode: function (rule, pattern) { + var ret = new TypeNode(pattern.get("constraints")[0]); + var constraints = this.typeNodes, i = constraints.length - 1; + for (; i >= 0; i--) { + var n = constraints[i]; + if (ret.equal(n)) { + return n; + } + } + constraints.push(ret); + return ret; + }, - var getSetYear = makeGetSet('FullYear', true); + __createEqualityNode: function (rule, constraint) { + return this.__checkEqual(new EqualityNode(constraint)).addRule(rule); + }, - function getIsLeapYear() { - return isLeapYear(this.year()); - } + __createPropertyNode: function (rule, constraint) { + return this.__checkEqual(new PropertyNode(constraint)).addRule(rule); + }, - function createDate(y, m, d, h, M, s, ms) { - // can't just apply() to create a date: - // https://stackoverflow.com/q/181348 - var date; - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - date = new Date(y + 400, m, d, h, M, s, ms); - if (isFinite(date.getFullYear())) { - date.setFullYear(y); + __createAliasNode: function (rule, pattern) { + return this.__checkEqual(new AliasNode(pattern)).addRule(rule); + }, + + __createAdapterNode: function (rule, side) { + return (side === "left" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule); + }, + + __createJoinNode: function (rule, pattern, outNode, side) { + var joinNode; + if (pattern.rightPattern instanceof NotPattern) { + joinNode = new NotNode(); + } else if (pattern.rightPattern instanceof FromExistsPattern) { + joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory); + } else if (pattern.rightPattern instanceof ExistsPattern) { + joinNode = new ExistsNode(); + } else if (pattern.rightPattern instanceof FromNotPattern) { + joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory); + } else if (pattern.rightPattern instanceof FromPattern) { + joinNode = new FromNode(pattern.rightPattern, this.workingMemory); + } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) { + joinNode = new BetaNode(); + this.joinNodes.push(joinNode); + } else { + joinNode = new JoinNode(); + this.joinNodes.push(joinNode); } - } else { - date = new Date(y, m, d, h, M, s, ms); - } + joinNode["__rule__"] = rule; + var parentNode = joinNode; + if (outNode instanceof BetaNode) { + var adapterNode = this.__createAdapterNode(rule, side); + parentNode.addOutNode(adapterNode, pattern); + parentNode = adapterNode; + } + parentNode.addOutNode(outNode, pattern); + return joinNode.addRule(rule); + }, - return date; - } + __addToNetwork: function (rule, pattern, outNode, side) { + if (pattern instanceof ObjectPattern) { + if (!(pattern instanceof InitialFactPattern) && (!side || side === "left")) { + this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side); + } else { + this.__createAlphaNode(rule, pattern, outNode, side); + } + } else if (pattern instanceof CompositePattern) { + this.__createBetaNode(rule, pattern, outNode, side); + } + }, - function createUTCDate(y) { - var date, args; - // the Date.UTC function remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - args = Array.prototype.slice.call(arguments); - // preserve leap years using a full 400 year cycle, then reset - args[0] = y + 400; - date = new Date(Date.UTC.apply(null, args)); - if (isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); + __createBetaNode: function (rule, pattern, outNode, side) { + var joinNode = this.__createJoinNode(rule, pattern, outNode, side); + this.__addToNetwork(rule, pattern.rightPattern, joinNode, "right"); + this.__addToNetwork(rule, pattern.leftPattern, joinNode, "left"); + outNode.addParentNode(joinNode); + return joinNode; + }, + + + __createAlphaNode: function (rule, pattern, outNode, side) { + var typeNode, parentNode; + if (!(pattern instanceof FromPattern)) { + + var constraints = pattern.get("constraints"); + typeNode = this.__createTypeNode(rule, pattern); + var aliasNode = this.__createAliasNode(rule, pattern); + typeNode.addOutNode(aliasNode, pattern); + aliasNode.addParentNode(typeNode); + parentNode = aliasNode; + var i = constraints.length - 1; + for (; i > 0; i--) { + var constraint = constraints[i], node; + if (constraint instanceof HashConstraint) { + node = this.__createPropertyNode(rule, constraint); + } else if (constraint instanceof ReferenceConstraint) { + outNode.constraint.addConstraint(constraint); + continue; + } else { + node = this.__createEqualityNode(rule, constraint); + } + parentNode.addOutNode(node, pattern); + node.addParentNode(parentNode); + parentNode = node; + } + + if (outNode instanceof BetaNode) { + var adapterNode = this.__createAdapterNode(rule, side); + adapterNode.addParentNode(parentNode); + parentNode.addOutNode(adapterNode, pattern); + parentNode = adapterNode; + } + outNode.addParentNode(parentNode); + parentNode.addOutNode(outNode, pattern); + return typeNode; } - } else { - date = new Date(Date.UTC.apply(null, arguments)); - } + }, - return date; + print: function () { + forEach(this.terminalNodes, function (t) { + t.print(" "); + }); + } } +}).as(exports, "RootNode"); - // start-of-first-week - start-of-year - function firstWeekOffset(year, dow, doy) { - var // first-week day -- which january is always in the first week (4 for iso, 1 for other) - fwd = 7 + dow - doy, - // first-week day local weekday -- which local weekday is fwd - fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - return -fwdlw + fwd - 1; - } - // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, - weekOffset = firstWeekOffset(year, dow, doy), - dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, - resDayOfYear; - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); - } else { - resYear = year; - resDayOfYear = dayOfYear; - } - return { - year: resYear, - dayOfYear: resDayOfYear, - }; - } - function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), - week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, - resYear; - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; - } else { - resYear = mom.year(); - resWeek = week; - } +/***/ }), - return { - week: resWeek, - year: resYear, - }; - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), - weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + JoinReferenceNode = __webpack_require__(/*! ./joinReferenceNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js"); - // FORMATTING +BetaNode.extend({ - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + instance: { + constructor: function () { + this._super(arguments); + this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples); + }, - // ALIASES + nodeType: "JoinNode", - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); + propagateFromLeft: function (context, rm) { + var mr; + if ((mr = this.constraint.match(context, rm)).isMatch) { + this.__propagate("assert", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr))); + } + return this; + }, + + propagateFromRight: function (context, lm) { + var mr; + if ((mr = this.constraint.match(lm, context)).isMatch) { + this.__propagate("assert", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr))); + } + return this; + }, - // PRIORITIES + propagateAssertModifyFromLeft: function (context, rightMatches, rm) { + var factId = rm.hashCode, mr; + if (factId in rightMatches) { + mr = this.constraint.match(context, rm); + var mrIsMatch = mr.isMatch; + if (!mrIsMatch) { + this.__propagate("retract", rightMatches[factId].clone()); + } else { + this.__propagate("modify", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr))); + } + } else { + this.propagateFromLeft(context, rm); + } + }, - addUnitPriority('week', 5); - addUnitPriority('isoWeek', 5); + propagateAssertModifyFromRight: function (context, leftMatches, lm) { + var factId = lm.hashCode, mr; + if (factId in leftMatches) { + mr = this.constraint.match(lm, context); + var mrIsMatch = mr.isMatch; + if (!mrIsMatch) { + this.__propagate("retract", leftMatches[factId].clone()); + } else { + this.__propagate("modify", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr))); + } + } else { + this.propagateFromRight(context, lm); + } + } + } - // PARSING +}).as(module); - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); +/***/ }), - addWeekParseToken(['w', 'ww', 'W', 'WW'], function ( - input, - week, - config, - token - ) { - week[token.substr(0, 1)] = toInt(input); - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js": +/*!***************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js ***! + \***************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // HELPERS +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint; - // LOCALES +var DEFUALT_CONSTRAINT = { + isDefault: true, + assert: function () { + return true; + }, - function localeWeek(mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; + equal: function () { + return false; } +}; - var defaultLocaleWeek = { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }; +var inversions = { + "gt": "lte", + "gte": "lte", + "lt": "gte", + "lte": "gte", + "eq": "eq", + "neq": "neq" +}; - function localeFirstDayOfWeek() { - return this._week.dow; +function normalizeRightIndexConstraint(rightIndex, indexes, op) { + if (rightIndex === indexes[1]) { + op = inversions[op]; } + return op; +} - function localeFirstDayOfYear() { - return this._week.doy; +function normalizeLeftIndexConstraint(leftIndex, indexes, op) { + if (leftIndex === indexes[1]) { + op = inversions[op]; } + return op; +} - // MOMENTS - - function getSetWeek(input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } +Node.extend({ - function getSetISOWeek(input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } + instance: { - // FORMATTING + constraint: DEFUALT_CONSTRAINT, - addFormatToken('d', 0, 'do', 'day'); + constructor: function (leftMemory, rightMemory) { + this._super(arguments); + this.constraint = DEFUALT_CONSTRAINT; + this.constraintAssert = DEFUALT_CONSTRAINT.assert; + this.rightIndexes = []; + this.leftIndexes = []; + this.constraintLength = 0; + this.leftMemory = leftMemory; + this.rightMemory = rightMemory; + }, - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); - }); + addConstraint: function (constraint) { + if (constraint instanceof ReferenceEqualityConstraint) { + var identifiers = constraint.getIndexableProperties(); + var alias = constraint.get("alias"); + if (identifiers.length === 2 && alias) { + var leftIndex, rightIndex, i = -1, indexes = []; + while (++i < 2) { + var index = identifiers[i]; + if (index.match(new RegExp("^" + alias + "(\\.?)")) === null) { + indexes.push(index); + leftIndex = index; + } else { + indexes.push(index); + rightIndex = index; + } + } + if (leftIndex && rightIndex) { + var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op), + rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op); + this.rightMemory.addIndex(rightIndex, leftIndex, rightOp); + this.leftMemory.addIndex(leftIndex, rightIndex, leftOp); + } + } + } + if (this.constraint.isDefault) { + this.constraint = constraint; + this.isDefault = false; + } else { + this.constraint = this.constraint.merge(constraint); + } + this.constraintAssert = this.constraint.assert; - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); - }); + }, - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); - }); + equal: function (constraint) { + return this.constraint.equal(constraint.constraint); + }, - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); + isMatch: function (lc, rc) { + return this.constraintAssert(lc.factHash, rc.factHash); + }, - // ALIASES + match: function (lc, rc) { + var ret = {isMatch: false}; + if (this.constraintAssert(lc.factHash, rc.factHash)) { + ret = lc.match.merge(rc.match); + } + return ret; + } - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); + } - // PRIORITY - addUnitPriority('day', 11); - addUnitPriority('weekday', 11); - addUnitPriority('isoWeekday', 11); +}).as(module); - // PARSING +/***/ }), - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); - }); - addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); - }); - addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } - }); +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); - }); +Node.extend({ + instance: { + propagateAssert: function (context) { + this.__propagate("assertLeft", context); + }, - // HELPERS + propagateRetract: function (context) { + this.__propagate("retractLeft", context); + }, - function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } + propagateResolve: function (context) { + this.__propagate("retractResolve", context); + }, - if (!isNaN(input)) { - return parseInt(input, 10); - } + propagateModify: function (context) { + this.__propagate("modifyLeft", context); + }, - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } + retractResolve: function (match) { + this.__propagate("retractResolve", match); + }, - return null; - } + dispose: function (context) { + this.propagateDispose(context); + }, - function parseIsoWeekday(input, locale) { - if (typeof input === 'string') { - return locale.weekdaysParse(input) % 7 || 7; + toString: function () { + return "LeftAdapterNode " + this.__count; } - return isNaN(input) ? null : input; - } - - // LOCALES - function shiftWeekdays(ws, n) { - return ws.slice(n, 7).concat(ws.slice(0, n)); } - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - defaultWeekdaysRegex = matchWord, - defaultWeekdaysShortRegex = matchWord, - defaultWeekdaysMinRegex = matchWord; - - function localeWeekdays(m, format) { - var weekdays = isArray(this._weekdays) - ? this._weekdays - : this._weekdays[ - m && m !== true && this._weekdays.isFormat.test(format) - ? 'format' - : 'standalone' - ]; - return m === true - ? shiftWeekdays(weekdays, this._week.dow) - : m - ? weekdays[m.day()] - : weekdays; - } +}).as(module); - function localeWeekdaysShort(m) { - return m === true - ? shiftWeekdays(this._weekdaysShort, this._week.dow) - : m - ? this._weekdaysShort[m.day()] - : this._weekdaysShort; - } +/***/ }), - function localeWeekdaysMin(m) { - return m === true - ? shiftWeekdays(this._weekdaysMin, this._week.dow) - : m - ? this._weekdaysMin[m.day()] - : this._weekdaysMin; - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js ***! + \**********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { - function handleStrictParse$1(weekdayName, format, strict) { - var i, - ii, - mom, - llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; +exports.getMemory = (function () { - for (i = 0; i < 7; ++i) { - mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin( - mom, - '' - ).toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort( - mom, - '' - ).toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); - } - } + var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0; - if (strict) { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; + function mergePossibleTuples(ret, a, l) { + var val, j = 0, i = -1; + if (PL < l) { + while (PL && ++i < l) { + if (POSSIBLES_HASH[(val = a[i]).hashCode]) { + ret[j++] = val; + PL--; } - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; } + } else { + pPush.apply(ret, a); } + PL = 0; + POSSIBLES_HASH = {}; } - function localeWeekdaysParse(weekdayName, format, strict) { - var i, mom, regex; - - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); - } - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp( - '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', - 'i' - ); - this._shortWeekdaysParse[i] = new RegExp( - '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', - 'i' - ); - this._minWeekdaysParse[i] = new RegExp( - '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', - 'i' - ); - } - if (!this._weekdaysParse[i]) { - regex = - '^' + - this.weekdays(mom, '') + - '|^' + - this.weekdaysShort(mom, '') + - '|^' + - this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if ( - strict && - format === 'dddd' && - this._fullWeekdaysParse[i].test(weekdayName) - ) { - return i; - } else if ( - strict && - format === 'ddd' && - this._shortWeekdaysParse[i].test(weekdayName) - ) { - return i; - } else if ( - strict && - format === 'dd' && - this._minWeekdaysParse[i].test(weekdayName) - ) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; + function mergeNotPossibleTuples(ret, a, l) { + var val, j = 0, i = -1; + if (NPL < l) { + while (++i < l) { + if (!NPL) { + ret[j++] = a[i]; + } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) { + ret[j++] = val; + } else { + NPL--; + } } } + NPL = 0; + NOT_POSSIBLES_HASH = {}; } - // MOMENTS - - function getSetDayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; + function mergeBothTuples(ret, a, l) { + if (PL === l) { + mergeNotPossibles(ret, a, l); + } else if (NPL < l) { + var val, j = 0, i = -1, hashCode; + while (++i < l) { + if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) { + ret[j++] = val; + } + } } + NPL = 0; + NOT_POSSIBLES_HASH = {}; + PL = 0; + POSSIBLES_HASH = {}; } - function getSetLocaleDayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; + function mergePossiblesAndNotPossibles(a, l) { + var ret = EMPTY_ARRAY; + if (l) { + if (NPL || PL) { + ret = []; + if (!NPL) { + mergePossibleTuples(ret, a, l); + } else if (!PL) { + mergeNotPossibleTuples(ret, a, l); + } else { + mergeBothTuples(ret, a, l); + } + } else { + ret = a; + } } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); + return ret; } - function getSetISODayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; + function getRangeTuples(op, currEntry, val) { + var ret; + if (op === "gt") { + ret = currEntry.findGT(val); + } else if (op === "gte") { + ret = currEntry.findGTE(val); + } else if (op === "lt") { + ret = currEntry.findLT(val); + } else if (op === "lte") { + ret = currEntry.findLTE(val); } + return ret; } - function weekdaysRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysRegex')) { - this._weekdaysRegex = defaultWeekdaysRegex; + function mergeNotPossibles(tuples, tl) { + if (tl) { + var j = -1, hashCode; + while (++j < tl) { + hashCode = tuples[j].hashCode; + if (!NOT_POSSIBLES_HASH[hashCode]) { + NOT_POSSIBLES_HASH[hashCode] = true; + NPL++; + } } - return this._weekdaysStrictRegex && isStrict - ? this._weekdaysStrictRegex - : this._weekdaysRegex; } } - function weekdaysShortRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysShortRegex')) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; + function mergePossibles(tuples, tl) { + if (tl) { + var j = -1, hashCode; + while (++j < tl) { + hashCode = tuples[j].hashCode; + if (!POSSIBLES_HASH[hashCode]) { + POSSIBLES_HASH[hashCode] = true; + PL++; + } } - return this._weekdaysShortStrictRegex && isStrict - ? this._weekdaysShortStrictRegex - : this._weekdaysShortRegex; } } - function weekdaysMinRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; + return function _getMemory(entry, factHash, indexes) { + var i = -1, l = indexes.length, + ret = entry.tuples, + rl = ret.length, + intersected = false, + tables = entry.tables, + index, val, op, nextEntry, currEntry, tuples, tl; + while (++i < l && rl) { + index = indexes[i]; + val = index[3](factHash); + op = index[4]; + currEntry = tables[index[0]]; + if (op === "eq" || op === "seq") { + if ((nextEntry = currEntry.get(val))) { + rl = (ret = (entry = nextEntry).tuples).length; + tables = nextEntry.tables; + } else { + rl = (ret = EMPTY_ARRAY).length; + } + } else if (op === "neq" || op === "sneq") { + if ((nextEntry = currEntry.get(val))) { + tl = (tuples = nextEntry.tuples).length; + mergeNotPossibles(tuples, tl); + } + } else if (!intersected) { + rl = (ret = getRangeTuples(op, currEntry, val)).length; + intersected = true; + } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) { + mergePossibles(tuples, tl); } else { - return this._weekdaysMinRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysMinRegex')) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; + ret = tuples; + rl = tl; } - return this._weekdaysMinStrictRegex && isStrict - ? this._weekdaysMinStrictRegex - : this._weekdaysMinRegex; } - } + return mergePossiblesAndNotPossibles(ret, rl); + }; +}()); - function computeWeekdaysParse() { - function cmpLenRev(a, b) { - return b.length - a.length; - } +/***/ }), - var minPieces = [], - shortPieces = [], - longPieces = [], - mixedPieces = [], - i, - mom, - minp, - shortp, - longp; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - minp = regexEscape(this.weekdaysMin(mom, '')); - shortp = regexEscape(this.weekdaysShort(mom, '')); - longp = regexEscape(this.weekdays(mom, '')); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); - } - // Sorting makes sure if one weekday (or abbr) is a prefix of another it - // will match the longer piece. - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; +/* module decorator */ module = __webpack_require__.nmd(module); +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); - this._weekdaysStrictRegex = new RegExp( - '^(' + longPieces.join('|') + ')', - 'i' - ); - this._weekdaysShortStrictRegex = new RegExp( - '^(' + shortPieces.join('|') + ')', - 'i' - ); - this._weekdaysMinStrictRegex = new RegExp( - '^(' + minPieces.join('|') + ')', - 'i' - ); - } +Memory.extend({ - // FORMATTING + instance: { - function hFormat() { - return this.hours() % 12 || 12; + getLeftMemory: function (tuple) { + return this.getMemory(tuple); + } } - function kFormat() { - return this.hours() || 24; - } +}).as(module); - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, hFormat); - addFormatToken('k', ['kk', 2], 0, kFormat); +/***/ }), - addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - addFormatToken('hmmss', 0, 0, function () { - return ( - '' + - hFormat.apply(this) + - zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2) - ); - }); +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + plucker = extd.plucker, + declare = extd.declare, + getMemory = __webpack_require__(/*! ./helpers */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js").getMemory, + Table = __webpack_require__(/*! ./table */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js"), + TupleEntry = __webpack_require__(/*! ./tupleEntry */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js"); - addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); - }); - addFormatToken('Hmmss', 0, 0, function () { - return ( - '' + - this.hours() + - zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2) - ); - }); +var id = 0; +declare({ - function meridiem(token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem( - this.hours(), - this.minutes(), - lowercase - ); - }); - } + instance: { + length: 0, - meridiem('a', true); - meridiem('A', false); + constructor: function () { + this.head = null; + this.tail = null; + this.indexes = []; + this.tables = new TupleEntry(null, new Table(), false); + }, - // ALIASES + push: function (data) { + var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null}; + if (tail) { + this.tail.next = node; + } + this.tail = node; + if (!head) { + this.head = node; + } + this.length++; + this.__index(node); + this.tables.addNode(node); + return node; + }, - addUnitAlias('hour', 'h'); + remove: function (node) { + if (node.prev) { + node.prev.next = node.next; + } else { + this.head = node.next; + } + if (node.next) { + node.next.prev = node.prev; + } else { + this.tail = node.prev; + } + this.tables.removeNode(node); + this.__removeFromIndex(node); + this.length--; + }, - // PRIORITY - addUnitPriority('hour', 13); + forEach: function (cb) { + var head = {next: this.head}; + while ((head = head.next)) { + cb(head.data); + } + }, - // PARSING + toArray: function () { + return this.tables.tuples.slice(); + }, - function matchMeridiem(isStrict, locale) { - return locale._meridiemParse; - } + clear: function () { + this.head = this.tail = null; + this.length = 0; + this.clearIndexes(); + }, - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - addRegexToken('kk', match1to2, match2); + clearIndexes: function () { + this.tables = {}; + this.indexes.length = 0; + }, - addRegexToken('hmm', match3to4); - addRegexToken('hmmss', match5to6); - addRegexToken('Hmm', match3to4); - addRegexToken('Hmmss', match5to6); + __index: function (node) { + var data = node.data, + factHash = data.factHash, + indexes = this.indexes, + entry = this.tables, + i = -1, l = indexes.length, + tuples, index, val, path, tables, currEntry, prevLookup; + while (++i < l) { + index = indexes[i]; + val = index[2](factHash); + path = index[0]; + tables = entry.tables; + if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) { + tuples = new TupleEntry(val, currEntry, true); + currEntry.set(val, tuples); + } + if (currEntry !== prevLookup) { + node.tuples.push(tuples.addNode(node)); + } + prevLookup = currEntry; + if (index[4] === "eq") { + entry = tuples; + } + } + }, - addParseToken(['H', 'HH'], HOUR); - addParseToken(['k', 'kk'], function (input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; - }); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4, - pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - }); - addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4, - pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - }); + __removeFromIndex: function (node) { + var tuples = node.tuples, i = tuples.length; + while (--i >= 0) { + tuples[i].removeNode(node); + } + node.tuples.length = 0; + }, - // LOCALES + getMemory: function (tuple) { + var ret; + if (!this.length) { + ret = []; + } else { + ret = getMemory(this.tables, tuple.factHash, this.indexes); + } + return ret; + }, - function localeIsPM(input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return (input + '').toLowerCase().charAt(0) === 'p'; - } + __createIndexTree: function () { + var table = this.tables.tables = {}; + var indexes = this.indexes; + table[indexes[0][0]] = new Table(); + }, - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, - // Setting the hour should keep the time, because the user explicitly - // specified which hour they want. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - getSetHour = makeGetSet('Hours', true); - function localeMeridiem(hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; + addIndex: function (primary, lookup, op) { + this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || "eq"]); + this.indexes.sort(function (a, b) { + var aOp = a[4], bOp = b[4]; + return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1; + }); + this.__createIndexTree(); + } + } - var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, - relativeTime: defaultRelativeTime, +}).as(module); - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, +/***/ }), - week: defaultLocaleWeek, +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js": +/*!**************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, +/* module decorator */ module = __webpack_require__.nmd(module); +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); - meridiemParse: defaultLocaleMeridiemParse, - }; +Memory.extend({ - // internal storage for locale config files - var locales = {}, - localeFamilies = {}, - globalLocale; + instance: { - function commonPrefix(arr1, arr2) { - var i, - minl = Math.min(arr1.length, arr2.length); - for (i = 0; i < minl; i += 1) { - if (arr1[i] !== arr2[i]) { - return i; - } + getRightMemory: function (tuple) { + return this.getMemory(tuple); } - return minl; } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; +}).as(module); + +/***/ }), + +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + pPush = Array.prototype.push, + HashTable = extd.HashTable, + AVLTree = extd.AVLTree; + +function compare(a, b) { + /*jshint eqeqeq: false*/ + a = a.key; + b = b.key; + var ret; + if (a == b) { + ret = 0; + } else if (a > b) { + ret = 1; + } else if (a < b) { + ret = -1; + } else { + ret = 1; } + return ret; +} - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, - j, - next, - locale, - split; +function compareGT(v1, v2) { + return compare(v1, v2) === 1; +} +function compareGTE(v1, v2) { + return compare(v1, v2) !== -1; +} - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if ( - next && - next.length >= j && - commonPrefix(split, next) >= j - 1 - ) { - //the next array item is better than a shallower substring of this one +function compareLT(v1, v2) { + return compare(v1, v2) === -1; +} +function compareLTE(v1, v2) { + return compare(v1, v2) !== 1; +} + +var STACK = [], + VALUE = {key: null}; +function traverseInOrder(tree, key, comparator) { + VALUE.key = key; + var ret = []; + var i = 0, current = tree.__root, v; + while (true) { + if (current) { + current = (STACK[i++] = current).left; + } else { + if (i > 0) { + v = (current = STACK[--i]).data; + if (comparator(v, VALUE)) { + pPush.apply(ret, v.value.tuples); + current = current.right; + } else { break; } - j--; + } else { + break; } - i++; } - return globalLocale; } + STACK.length = 0; + return ret; +} - function loadLocale(name) { - var oldLocale = null, - aliasedRequire; - // TODO: Find a better way to register and load all the locales in Node - if ( - locales[name] === undefined && - "object" !== 'undefined' && - module && - module.exports - ) { - try { - oldLocale = globalLocale._abbr; - aliasedRequire = undefined; - __webpack_require__("./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name); - getSetGlobalLocale(oldLocale); - } catch (e) { - // mark as not found to avoid repeating expensive file require call causing high CPU - // when trying to find en-US, en_US, en-us for every format call - locales[name] = null; // null means not found +function traverseReverseOrder(tree, key, comparator) { + VALUE.key = key; + var ret = []; + var i = 0, current = tree.__root, v; + while (true) { + if (current) { + current = (STACK[i++] = current).right; + } else { + if (i > 0) { + v = (current = STACK[--i]).data; + if (comparator(v, VALUE)) { + pPush.apply(ret, v.value.tuples); + current = current.left; + } else { + break; + } + } else { + break; } } - return locales[name]; } + STACK.length = 0; + return ret; +} - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - function getSetGlobalLocale(key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); - } else { - data = defineLocale(key, values); - } +AVLTree.extend({ + instance: { - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } else { - if (typeof console !== 'undefined' && console.warn) { - //warn user if arguments are passed but the locale could not be set - console.warn( - 'Locale ' + key + ' not found. Did you forget to load it?' - ); + constructor: function () { + this._super([ + { + compare: compare } - } - } - - return globalLocale._abbr; - } + ]); + this.gtCache = new HashTable(); + this.gteCache = new HashTable(); + this.ltCache = new HashTable(); + this.lteCache = new HashTable(); + this.hasGTCache = false; + this.hasGTECache = false; + this.hasLTCache = false; + this.hasLTECache = false; + }, - function defineLocale(name, config) { - if (config !== null) { - var locale, - parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple( - 'defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + - 'an existing locale. moment.defineLocale(localeName, ' + - 'config) should only be used for creating a new locale ' + - 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' - ); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; - } else { - locale = loadLocale(config.parentLocale); - if (locale != null) { - parentConfig = locale._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config, - }); - return null; - } - } - } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); + clearCache: function () { + this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false); + this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false); + this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false); + this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false); + }, - if (localeFamilies[name]) { - localeFamilies[name].forEach(function (x) { - defineLocale(x.name, x.config); - }); - } + contains: function (key) { + return this._super([ + {key: key} + ]); + }, - // backwards compat for now: also set the locale - // make sure we set the locale AFTER all child locales have been - // created, so we won't end up with the child locale set. - getSetGlobalLocale(name); + "set": function (key, value) { + this.insert({key: key, value: value}); + this.clearCache(); + }, - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - } + "get": function (key) { + var ret = this.find({key: key}); + return ret && ret.value; + }, - function updateLocale(name, config) { - if (config != null) { - var locale, - tmpLocale, - parentConfig = baseConfig; + "remove": function (key) { + this.clearCache(); + return this._super([ + {key: key} + ]); + }, - if (locales[name] != null && locales[name].parentLocale != null) { - // Update existing child locale in-place to avoid memory-leaks - locales[name].set(mergeConfigs(locales[name]._config, config)); - } else { - // MERGE - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; - } - config = mergeConfigs(parentConfig, config); - if (tmpLocale == null) { - // updateLocale is called for creating a new locale - // Set abbr so it will have a name (getters return - // undefined otherwise). - config.abbr = name; - } - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; + findGT: function (key) { + var ret = this.gtCache.get(key); + if (!ret) { + this.hasGTCache = true; + this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT))); } + return ret; + }, - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - } else { - // pass null for config to unupdate, useful for tests - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - if (name === getSetGlobalLocale()) { - getSetGlobalLocale(name); - } - } else if (locales[name] != null) { - delete locales[name]; - } + findGTE: function (key) { + var ret = this.gteCache.get(key); + if (!ret) { + this.hasGTECache = true; + this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE))); } - } - return locales[name]; - } - - // returns locale data - function getLocale(key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + return ret; + }, - if (!key) { - return globalLocale; - } + findLT: function (key) { + var ret = this.ltCache.get(key); + if (!ret) { + this.hasLTCache = true; + this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT))); + } + return ret; + }, - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; + findLTE: function (key) { + var ret = this.lteCache.get(key); + if (!ret) { + this.hasLTECache = true; + this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE))); } - key = [key]; + return ret; } - return chooseLocale(key); } +}).as(module); - function listLocales() { - return keys(locales); - } +/***/ }), - function checkOverflow(m) { - var overflow, - a = m._a; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 - ? MONTH - : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) - ? DATE - : a[HOUR] < 0 || - a[HOUR] > 24 || - (a[HOUR] === 24 && - (a[MINUTE] !== 0 || - a[SECOND] !== 0 || - a[MILLISECOND] !== 0)) - ? HOUR - : a[MINUTE] < 0 || a[MINUTE] > 59 - ? MINUTE - : a[SECOND] < 0 || a[SECOND] > 59 - ? SECOND - : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 - ? MILLISECOND - : -1; +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + indexOf = extd.indexOf; +// HashSet = require("./hashSet"); - if ( - getParsingFlags(m)._overflowDayOfYear && - (overflow < YEAR || overflow > DATE) - ) { - overflow = DATE; + +var TUPLE_ID = 0; +extd.declare({ + + instance: { + tuples: null, + tupleMap: null, + hashCode: null, + tables: null, + entry: null, + constructor: function (val, entry, canRemove) { + this.val = val; + this.canRemove = canRemove; + this.tuples = []; + this.tupleMap = {}; + this.hashCode = TUPLE_ID++; + this.tables = {}; + this.length = 0; + this.entry = entry; + }, + + addNode: function (node) { + this.tuples[this.length++] = node; + if (this.length > 1) { + this.entry.clearCache(); } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; + return this; + }, + + removeNode: function (node) { + var tuples = this.tuples, index = indexOf(tuples, node); + if (index !== -1) { + tuples.splice(index, 1); + this.length--; + this.entry.clearCache(); } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; + if (this.canRemove && !this.length) { + this.entry.remove(this.val); } - - getParsingFlags(m).overflow = overflow; } - - return m; } +}).as(module); - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/], - ['YYYYMM', /\d{6}/, false], - ['YYYY', /\d{4}/, false], - ], - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/], - ], - aspNetJsonRegex = /^\/?Date\((-?\d+)/i, - // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 - rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, - obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60, - }; +/***/ }), - // date from iso format - function configFromISO(config) { - var i, - l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, - dateFormat, - timeFormat, - tzFormat; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (match) { - getParsingFlags(config).iso = true; +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + indexOf = extd.indexOf, + intersection = extd.intersection, + declare = extd.declare, + HashTable = extd.HashTable, + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"); - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; +var count = 0; +declare({ + instance: { + constructor: function () { + this.nodes = new HashTable(); + this.rules = []; + this.parentNodes = []; + this.__count = count++; + this.__entrySet = []; + }, + + addRule: function (rule) { + if (indexOf(this.rules, rule) === -1) { + this.rules.push(rule); } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - // match[2] should be 'T' or space - timeFormat = (match[2] || ' ') + isoTimes[i][0]; - break; - } - } - if (timeFormat == null) { - config._isValid = false; - return; + return this; + }, + + merge: function (that) { + that.nodes.forEach(function (entry) { + var patterns = entry.value, node = entry.key; + for (var i = 0, l = patterns.length; i < l; i++) { + this.addOutNode(node, patterns[i]); } + that.nodes.remove(node); + }, this); + var thatParentNodes = that.parentNodes; + for (var i = 0, l = that.parentNodes.l; i < l; i++) { + var parentNode = thatParentNodes[i]; + this.addParentNode(parentNode); + parentNode.nodes.remove(that); } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; + return this; + }, + + resolve: function (mr1, mr2) { + return mr1.hashCode === mr2.hashCode; + }, + + print: function (tab) { + console.log(tab + this.toString()); + forEach(this.parentNodes, function (n) { + n.print(" " + tab); + }); + }, + + addOutNode: function (outNode, pattern) { + if (!this.nodes.contains(outNode)) { + this.nodes.put(outNode, []); } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = 'Z'; - } else { - config._isValid = false; - return; - } + this.nodes.get(outNode).push(pattern); + this.__entrySet = this.nodes.entrySet(); + }, + + addParentNode: function (n) { + if (indexOf(this.parentNodes, n) === -1) { + this.parentNodes.push(n); } - config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); - configFromStringAndFormat(config); - } else { - config._isValid = false; - } - } + }, - function extractFromRFC2822Strings( - yearStr, - monthStr, - dayStr, - hourStr, - minuteStr, - secondStr - ) { - var result = [ - untruncateYear(yearStr), - defaultLocaleMonthsShort.indexOf(monthStr), - parseInt(dayStr, 10), - parseInt(hourStr, 10), - parseInt(minuteStr, 10), - ]; + shareable: function () { + return false; + }, - if (secondStr) { - result.push(parseInt(secondStr, 10)); - } + __propagate: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths; + while (--i > -1) { + entry = entrySet[i]; + outNode = entry.key; + paths = entry.value; - return result; - } + if ((continuingPaths = intersection(paths, context.paths)).length) { + outNode[method](new Context(context.fact, continuingPaths, context.match)); + } - function untruncateYear(yearStr) { - var year = parseInt(yearStr, 10); - if (year <= 49) { - return 2000 + year; - } else if (year <= 999) { - return 1900 + year; - } - return year; - } + } + }, - function preprocessRFC2822(s) { - // Remove comments and folding whitespace and replace multiple-spaces with a single space - return s - .replace(/\([^)]*\)|[\n\t]/g, ' ') - .replace(/(\s\s+)/g, ' ') - .replace(/^\s\s*/, '') - .replace(/\s\s*$/, ''); - } + dispose: function (assertable) { + this.propagateDispose(assertable); + }, - function checkWeekday(weekdayStr, parsedInput, config) { - if (weekdayStr) { - // TODO: Replace the vanilla JS Date object with an independent day-of-week check. - var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), - weekdayActual = new Date( - parsedInput[0], - parsedInput[1], - parsedInput[2] - ).getDay(); - if (weekdayProvided !== weekdayActual) { - getParsingFlags(config).weekdayMismatch = true; - config._isValid = false; - return false; + retract: function (assertable) { + this.propagateRetract(assertable); + }, + + propagateDispose: function (assertable, outNodes) { + outNodes = outNodes || this.nodes; + var entrySet = this.__entrySet, i = entrySet.length - 1; + for (; i >= 0; i--) { + var entry = entrySet[i], outNode = entry.key; + outNode.dispose(assertable); } - } - return true; - } + }, - function calculateOffset(obsOffset, militaryOffset, numOffset) { - if (obsOffset) { - return obsOffsets[obsOffset]; - } else if (militaryOffset) { - // the only allowed military tz is Z - return 0; - } else { - var hm = parseInt(numOffset, 10), - m = hm % 100, - h = (hm - m) / 100; - return h * 60 + m; - } - } + propagateAssert: function (assertable) { + this.__propagate("assert", assertable); + }, - // date and time from ref 2822 format - function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)), - parsedArray; - if (match) { - parsedArray = extractFromRFC2822Strings( - match[4], - match[3], - match[2], - match[5], - match[6], - match[7] - ); - if (!checkWeekday(match[1], parsedArray, config)) { - return; - } + propagateRetract: function (assertable) { + this.__propagate("retract", assertable); + }, - config._a = parsedArray; - config._tzm = calculateOffset(match[8], match[9], match[10]); + assert: function (assertable) { + this.propagateAssert(assertable); + }, - config._d = createUTCDate.apply(null, config._a); - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + modify: function (assertable) { + this.propagateModify(assertable); + }, - getParsingFlags(config).rfc2822 = true; - } else { - config._isValid = false; + propagateModify: function (assertable) { + this.__propagate("modify", assertable); } } - // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } +}).as(module); - configFromRFC2822(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - if (config._strict) { - config._isValid = false; - } else { - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); - } - } +/***/ }), - hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + InitialFact = __webpack_require__(/*! ../pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact; - function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [ - nowValue.getUTCFullYear(), - nowValue.getUTCMonth(), - nowValue.getUTCDate(), - ]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; - } - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray(config) { - var i, - date, - input = [], - currentDate, - expectedWeekday, - yearToUse; +JoinNode.extend({ + instance: { - if (config._d) { - return; - } + nodeType: "NotNode", - currentDate = currentDateArray(config); + constructor: function () { + this._super(arguments); + this.leftTupleMemory = {}; + //use this ensure a unique match for and propagated context. + this.notMatch = new Context(new InitialFact()).match; + }, - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + __cloneContext: function (context) { + return context.clone(null, null, context.match.merge(this.notMatch)); + }, - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - if ( - config._dayOfYear > daysInYear(yearToUse) || - config._dayOfYear === 0 - ) { - getParsingFlags(config)._overflowDayOfYear = true; + retractRight: function (context) { + var ctx = this.removeFromRightMemory(context), + rightContext = ctx.data, + blocking = rightContext.blocking; + if (blocking.length) { + //if we are blocking left contexts + var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc; + while ((blockingNode = blockingNode.next)) { + leftContext = blockingNode.data; + this.removeFromLeftBlockedMemory(leftContext); + var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i; + i = -1; + while (++i < l) { + if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) { + this.blockedContext(leftContext, rc); + leftContext = null; + break; + } + } + if (leftContext) { + this.notBlockedContext(leftContext, true); + } + } + blocking.clear(); } - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + }, - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + blockedContext: function (leftContext, rightContext, propagate) { + leftContext.blocker = rightContext; + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext)); + propagate && this.__propagate("retract", this.__cloneContext(leftContext)); + }, - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = - config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; - } + notBlockedContext: function (leftContext, propagate) { + this.__addToLeftMemory(leftContext); + propagate && this.__propagate("assert", this.__cloneContext(leftContext)); + }, - // Check for 24:00:00.000 - if ( - config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0 - ) { - config._nextDay = true; - config._a[HOUR] = 0; - } + propagateFromLeft: function (leftContext) { + this.notBlockedContext(leftContext, true); + }, - config._d = (config._useUTC ? createUTCDate : createDate).apply( - null, - input - ); - expectedWeekday = config._useUTC - ? config._d.getUTCDay() - : config._d.getDay(); + propagateFromRight: function (leftContext) { + this.notBlockedContext(leftContext, true); + }, - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + blockFromAssertRight: function (leftContext, rightContext) { + this.blockedContext(leftContext, rightContext, true); + }, - if (config._nextDay) { - config._a[HOUR] = 24; - } + blockFromAssertLeft: function (leftContext, rightContext) { + this.blockedContext(leftContext, rightContext, false); + }, - // check for mismatching day of week - if ( - config._w && - typeof config._w.d !== 'undefined' && - config._w.d !== expectedWeekday - ) { - getParsingFlags(config).weekdayMismatch = true; - } - } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + this.__propagate("retract", this.__cloneContext(ctx)); + } else { + if (!this.removeFromLeftBlockedMemory(context)) { + throw new Error(); + } + } + }, - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + assertLeft: function (context) { + var values = this.rightTuples.getRightMemory(context), + thisConstraint = this.constraint, rc, i = -1, l = values.length; + while (++i < l) { + if (thisConstraint.isMatch(context, rc = values[i].data)) { + this.blockFromAssertLeft(context, rc); + context = null; + i = l; + } + } + if (context) { + this.propagateFromLeft(context); + } + }, - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults( - w.GG, - config._a[YEAR], - weekOfYear(createLocal(), 1, 4).year - ); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; + assertRight: function (context) { + this.__addToRightMemory(context); + context.blocking = new LinkedList(); + var fl = this.leftTuples.getLeftMemory(context).slice(), + i = -1, l = fl.length, + leftContext, thisConstraint = this.constraint; + while (++i < l) { + leftContext = fl[i].data; + if (thisConstraint.isMatch(leftContext, context)) { + this.blockFromAssertRight(leftContext, context); + } } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + }, - curWeek = weekOfYear(createLocal(), dow, doy); + addToLeftBlockedMemory: function (context) { + var data = context.data, hashCode = data.hashCode; + var ctx = this.leftMemory[hashCode]; + this.leftTupleMemory[hashCode] = context; + if (ctx) { + this.leftTuples.remove(ctx); + } + return this; + }, - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + removeFromLeftBlockedMemory: function (context) { + var ret = this.leftTupleMemory[context.hashCode] || null; + if (ret) { + delete this.leftTupleMemory[context.hashCode]; + ret.data.blocker.blocking.remove(ret); + } + return ret; + }, - // Default to current week. - week = defaults(w.w, curWeek.week); + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context), + leftContext, + thisConstraint = this.constraint, + rightTuples = this.rightTuples.getRightMemory(context), + l = rightTuples.length, + isBlocked = false, + i, rc, blocker; + if (!ctx) { + //blocked before + ctx = this.removeFromLeftBlockedMemory(context); + isBlocked = true; + } + if (ctx) { + leftContext = ctx.data; - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; + if (leftContext && leftContext.blocker) { + //we were blocked before so only check nodes previous to our blocker + blocker = this.rightMemory[leftContext.blocker.hashCode]; + leftContext.blocker = null; } - } else if (w.e != null) { - // local weekday -- counting starts from beginning of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; + if (blocker) { + if (thisConstraint.isMatch(context, rc = blocker.data)) { + //we cant be proagated so retract previous + if (!isBlocked) { + //we were asserted before so retract + this.__propagate("retract", this.__cloneContext(leftContext)); + } + context.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context = null; + } + } + if (context && l) { + i = -1; + //we were propogated before + while (++i < l) { + if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) { + //we cant be proagated so retract previous + if (!isBlocked) { + //we were asserted before so retract + this.__propagate("retract", this.__cloneContext(leftContext)); + } + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context.blocker = rc; + context = null; + break; + } + } + } + if (context) { + //we can still be propogated + this.__addToLeftMemory(context); + if (!isBlocked) { + //we weren't blocked before so modify + this.__propagate("modify", this.__cloneContext(context)); + } else { + //we were blocked before but aren't now + this.__propagate("assert", this.__cloneContext(context)); + } + } } else { - // default to beginning of week - weekday = dow; + throw new Error(); } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - } - - // constant that refers to the ISO standard - hooks.ISO_8601 = function () {}; - - // constant that refers to the RFC 2822 form - hooks.RFC_2822 = function () {}; - - // date from string and format string - function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - if (config._f === hooks.RFC_2822) { - configFromRFC2822(config); - return; - } - config._a = []; - getParsingFlags(config).empty = true; - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, - parsedInput, - tokens, - token, - skipped, - stringLength = string.length, - totalParsedInputLength = 0, - era; + }, - tokens = - expandFormat(config._f, config._locale).match(formattingTokens) || []; + modifyRight: function (context) { + var ctx = this.removeFromRightMemory(context); + if (ctx) { + var rightContext = ctx.data, + leftTuples = this.leftTuples.getLeftMemory(context).slice(), + leftTuplesLength = leftTuples.length, + leftContext, + thisConstraint = this.constraint, + i, node, + blocking = rightContext.blocking; + this.__addToRightMemory(context); + context.blocking = new LinkedList(); - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || - [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); + var rc; + //check old blocked contexts + //check if the same contexts blocked before are still blocked + var blockingNode = {next: blocking.head}; + while ((blockingNode = blockingNode.next)) { + leftContext = blockingNode.data; + leftContext.blocker = null; + if (thisConstraint.isMatch(leftContext, context)) { + leftContext.blocker = context; + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + leftContext = null; + } else { + //we arent blocked anymore + leftContext.blocker = null; + node = ctx; + while ((node = node.next)) { + if (thisConstraint.isMatch(leftContext, rc = node.data)) { + leftContext.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(leftContext)); + leftContext = null; + break; + } + } + if (leftContext) { + this.__addToLeftMemory(leftContext); + this.__propagate("assert", this.__cloneContext(leftContext)); + } + } } - string = string.slice( - string.indexOf(parsedInput) + parsedInput.length - ); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } else { - getParsingFlags(config).unusedTokens.push(token); + if (leftTuplesLength) { + //check currently left tuples in memory + i = -1; + while (++i < leftTuplesLength) { + leftContext = leftTuples[i].data; + if (thisConstraint.isMatch(leftContext, context)) { + this.__propagate("retract", this.__cloneContext(leftContext)); + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + leftContext.blocker = context; + } + } } - addTimeToArrayFromToken(token, parsedInput, config); - } else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); + } else { + throw new Error(); } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = - stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if ( - config._a[HOUR] <= 12 && - getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0 - ) { - getParsingFlags(config).bigHour = undefined; - } - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - // handle meridiem - config._a[HOUR] = meridiemFixWrap( - config._locale, - config._a[HOUR], - config._meridiem - ); - // handle era - era = getParsingFlags(config).era; - if (era !== null) { - config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); } - - configFromArray(config); - checkOverflow(config); } +}).as(module); - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; +/***/ }), - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // date from string and array of format strings - function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - scoreToBeat, - i, - currentScore, - validFormatFound, - bestFormatIsValid = false; +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } +AlphaNode.extend({ + instance: { - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - validFormatFound = false; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); + constructor: function () { + this._super(arguments); + this.alias = this.constraint.get("alias"); + this.varLength = (this.variables = extd(this.constraint.get("variables")).toArray().value()).length; + }, - if (isValid(tempConfig)) { - validFormatFound = true; + assert: function (context) { + var c = new Context(context.fact, context.paths); + var variables = this.variables, o = context.fact.object, item; + c.set(this.alias, o); + for (var i = 0, l = this.varLength; i < l; i++) { + item = variables[i]; + c.set(item[1], o[item[0]]); } - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; + this.__propagate("assert", c); - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + }, - getParsingFlags(tempConfig).score = currentScore; + retract: function (context) { + this.__propagate("retract", new Context(context.fact, context.paths)); + }, - if (!bestFormatIsValid) { - if ( - scoreToBeat == null || - currentScore < scoreToBeat || - validFormatFound - ) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - if (validFormatFound) { - bestFormatIsValid = true; - } - } - } else { - if (currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } + modify: function (context) { + var c = new Context(context.fact, context.paths); + var variables = this.variables, o = context.fact.object, item; + c.set(this.alias, o); + for (var i = 0, l = this.varLength; i < l; i++) { + item = variables[i]; + c.set(item[1], o[item[0]]); } - } + this.__propagate("modify", c); + }, - extend(config, bestMoment || tempConfig); - } - function configFromObject(config) { - if (config._d) { - return; + toString: function () { + return "PropertyNode" + this.__count; } - - var i = normalizeObjectUnits(config._i), - dayOrDate = i.day === undefined ? i.date : i.day; - config._a = map( - [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], - function (obj) { - return obj && parseInt(obj, 10); - } - ); - - configFromArray(config); } +}).as(module); - function createFromConfig(config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - return res; - } - function prepareConfig(config) { - var input = config._i, - format = config._f; - config._locale = config._locale || getLocale(config._l); +/***/ }), - if (input === null || (format === undefined && input === '')) { - return createInvalid({ nullInput: true }); - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js": +/*!**************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } +Node.extend({ + instance: { - if (!isValid(config)) { - config._d = null; - } + retractResolve: function (match) { + this.__propagate("retractResolve", match); + }, - return config; - } + dispose: function (context) { + this.propagateDispose(context); + }, - function configFromInput(config) { - var input = config._i; - if (isUndefined(input)) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (isObject(input)) { - configFromObject(config); - } else if (isNumber(input)) { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } - } + propagateAssert: function (context) { + this.__propagate("assertRight", context); + }, - function createLocalOrUTC(input, format, locale, strict, isUTC) { - var c = {}; + propagateRetract: function (context) { + this.__propagate("retractRight", context); + }, - if (format === true || format === false) { - strict = format; - format = undefined; - } + propagateResolve: function (context) { + this.__propagate("retractResolve", context); + }, - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } + propagateModify: function (context) { + this.__propagate("modifyRight", context); + }, - if ( - (isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0) - ) { - input = undefined; + toString: function () { + return "RightAdapterNode " + this.__count; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); } +}).as(module); - function createLocal(input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } +/***/ }), - var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - } - ), - prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - } - ); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + bind = extd.bind; - // TODO: Use [].sort instead? - function min() { - var args = [].slice.call(arguments, 0); +Node.extend({ + instance: { + constructor: function (bucket, index, rule, agenda) { + this._super([]); + this.resolve = bind(this, this.resolve); + this.rule = rule; + this.index = index; + this.name = this.rule.name; + this.agenda = agenda; + this.bucket = bucket; + agenda.register(this); + }, - return pickBy('isBefore', args); - } + __assertModify: function (context) { + var match = context.match; + if (match.isMatch) { + var rule = this.rule, bucket = this.bucket; + this.agenda.insert(this, { + rule: rule, + hashCode: context.hashCode, + index: this.index, + name: rule.name, + recency: bucket.recency++, + match: match, + counter: bucket.counter + }); + } + }, - function max() { - var args = [].slice.call(arguments, 0); + assert: function (context) { + this.__assertModify(context); + }, - return pickBy('isAfter', args); - } + modify: function (context) { + this.agenda.retract(this, context); + this.__assertModify(context); + }, - var now = function () { - return Date.now ? Date.now() : +new Date(); - }; + retract: function (context) { + this.agenda.retract(this, context); + }, - var ordering = [ - 'year', - 'quarter', - 'month', - 'week', - 'day', - 'hour', - 'minute', - 'second', - 'millisecond', - ]; + retractRight: function (context) { + this.agenda.retract(this, context); + }, - function isDurationValid(m) { - var key, - unitHasDecimal = false, - i; - for (key in m) { - if ( - hasOwnProp(m, key) && - !( - indexOf.call(ordering, key) !== -1 && - (m[key] == null || !isNaN(m[key])) - ) - ) { - return false; - } - } + retractLeft: function (context) { + this.agenda.retract(this, context); + }, - for (i = 0; i < ordering.length; ++i) { - if (m[ordering[i]]) { - if (unitHasDecimal) { - return false; // only allow non-integers for smallest unit - } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { - unitHasDecimal = true; - } - } - } + assertLeft: function (context) { + this.__assertModify(context); + }, - return true; - } + assertRight: function (context) { + this.__assertModify(context); + }, - function isValid$1() { - return this._isValid; + toString: function () { + return "TerminalNode " + this.rule.name; + } } +}).as(module); - function createInvalid$1() { - return createDuration(NaN); - } +/***/ }), - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || normalizedInput.isoWeek || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - this._isValid = isDurationValid(normalizedInput); +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"); - // representation for dateAddRemove - this._milliseconds = - +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + weeks * 7; - // It is impossible to translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + quarters * 3 + years * 12; +AlphaNode.extend({ + instance: { - this._data = {}; + assert: function (fact) { + if (this.constraintAssert(fact.object)) { + this.__propagate("assert", fact); + } + }, - this._locale = getLocale(); + modify: function (fact) { + if (this.constraintAssert(fact.object)) { + this.__propagate("modify", fact); + } + }, - this._bubble(); - } + retract: function (fact) { + if (this.constraintAssert(fact.object)) { + this.__propagate("retract", fact); + } + }, - function isDuration(obj) { - return obj instanceof Duration; - } + toString: function () { + return "TypeNode" + this.__count; + }, - function absRound(number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); - } - } + dispose: function () { + var es = this.__entrySet, i = es.length - 1; + for (; i >= 0; i--) { + var e = es[i], outNode = e.key, paths = e.value; + outNode.dispose({paths: paths}); + } + }, - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ( - (dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) - ) { - diffs++; + __propagate: function (method, fact) { + var es = this.__entrySet, i = -1, l = es.length; + while (++i < l) { + var e = es[i], outNode = e.key, paths = e.value; + outNode[method](new Context(fact, paths)); } } - return diffs + lengthDiff; } +}).as(module); - // FORMATTING - - function offset(token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(), - sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return ( - sign + - zeroFill(~~(offset / 60), 2) + - separator + - zeroFill(~~offset % 60, 2) - ); - }); - } - offset('Z', ':'); - offset('ZZ', ''); - // PARSING +/***/ }), - addRegexToken('Z', matchShortOffset); - addRegexToken('ZZ', matchShortOffset); - addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js": +/*!****************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js ***! + \****************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { - // HELPERS +/* module decorator */ module = __webpack_require__.nmd(module); +/* parser generated by jison 0.4.17 */ +/* + Returns a Parser object of the following structure: - // timezone chunker - // '+10:00' > ['10', '00'] - // '-1530' > ['-15', '30'] - var chunkOffset = /([\+\-]|\d\d)/gi; + Parser: { + yy: {} + } - function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher), - chunk, - parts, - minutes; + Parser.prototype: { + yy: {}, + trace: function(), + symbols_: {associative list: name ==> number}, + terminals_: {associative list: number ==> name}, + productions_: [...], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), + table: [...], + defaultActions: {...}, + parseError: function(str, hash), + parse: function(input), - if (matches === null) { - return null; - } + lexer: { + EOF: 1, + parseError: function(str, hash), + setInput: function(input), + input: function(), + unput: function(str), + more: function(), + less: function(n), + pastInput: function(), + upcomingInput: function(), + showPosition: function(), + test_match: function(regex_match_array, rule_index), + next: function(), + lex: function(), + begin: function(condition), + popState: function(), + _currentRules: function(), + topState: function(), + pushState: function(condition), - chunk = matches[matches.length - 1] || []; - parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - minutes = +(parts[1] * 60) + toInt(parts[2]); + options: { + ranges: boolean (optional: true ==> token location info will include a .range[] member) + flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) + backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) + }, - return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; + performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), + rules: [...], + conditions: {associative list: name ==> set}, } + } - // Return a moment from input, that is local/utc/zone equivalent to model. - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = - (isMoment(input) || isDate(input) - ? input.valueOf() - : createLocal(input).valueOf()) - res.valueOf(); - // Use low-level api, because this fn is low-level api. - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } - } - function getDateOffset(m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset()); - } + token location info (@$, _$, etc.): { + first_line: n, + last_line: n, + first_column: n, + last_column: n, + range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) + } - // HOOKS - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - hooks.updateOffset = function () {}; + the parseError function receives a 'hash' object with these members for lexer and parser errors: { + text: (matched text) + token: (the produced terminal token, if any) + line: (yylineno) + } + while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { + loc: (yylloc) + expected: (string describing the set of expected tokens) + recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) + } +*/ +var parser = (function(){ +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49]; +var parser = {trace: function trace() { }, +yy: {}, +symbols_: {"error":2,"expressions":3,"EXPRESSION":4,"EOF":5,"UNARY_EXPRESSION":6,"LITERAL_EXPRESSION":7,"-":8,"!":9,"MULTIPLICATIVE_EXPRESSION":10,"*":11,"/":12,"%":13,"ADDITIVE_EXPRESSION":14,"+":15,"EXPONENT_EXPRESSION":16,"^":17,"RELATIONAL_EXPRESSION":18,"<":19,">":20,"<=":21,">=":22,"EQUALITY_EXPRESSION":23,"==":24,"===":25,"!=":26,"!==":27,"=~":28,"!=~":29,"IN_EXPRESSION":30,"in":31,"ARRAY_EXPRESSION":32,"notIn":33,"OBJECT_EXPRESSION":34,"AND_EXPRESSION":35,"&&":36,"OR_EXPRESSION":37,"||":38,"ARGUMENT_LIST":39,",":40,"IDENTIFIER_EXPRESSION":41,"IDENTIFIER":42,".":43,"[":44,"STRING_EXPRESSION":45,"]":46,"NUMBER_EXPRESSION":47,"(":48,")":49,"STRING":50,"NUMBER":51,"REGEXP_EXPRESSION":52,"REGEXP":53,"BOOLEAN_EXPRESSION":54,"BOOLEAN":55,"NULL_EXPRESSION":56,"NULL":57,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOF",8:"-",9:"!",11:"*",12:"/",13:"%",15:"+",17:"^",19:"<",20:">",21:"<=",22:">=",24:"==",25:"===",26:"!=",27:"!==",28:"=~",29:"!=~",31:"in",33:"notIn",36:"&&",38:"||",40:",",42:"IDENTIFIER",43:".",44:"[",46:"]",48:"(",49:")",50:"STRING",51:"NUMBER",53:"REGEXP",55:"BOOLEAN",57:"NULL"}, +productions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]], +performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { +/* this == yyval */ - // MOMENTS +var $0 = $$.length - 1; +switch (yystate) { +case 1: +return $$[$0-1]; +break; +case 3: +this.$ = [$$[$0], null, 'unary']; +break; +case 4: +this.$ = [$$[$0], null, 'logicalNot']; +break; +case 6: +this.$ = [$$[$0-2], $$[$0], 'mult']; +break; +case 7: +this.$ = [$$[$0-2], $$[$0], 'div']; +break; +case 8: +this.$ = [$$[$0-2], $$[$0], 'mod']; +break; +case 10: +this.$ = [$$[$0-2], $$[$0], 'plus']; +break; +case 11: +this.$ = [$$[$0-2], $$[$0], 'minus']; +break; +case 13: +this.$ = [$$[$0-2], $$[$0], 'pow']; +break; +case 15: +this.$ = [$$[$0-2], $$[$0], 'lt']; +break; +case 16: +this.$ = [$$[$0-2], $$[$0], 'gt']; +break; +case 17: +this.$ = [$$[$0-2], $$[$0], 'lte']; +break; +case 18: +this.$ = [$$[$0-2], $$[$0], 'gte']; +break; +case 20: +this.$ = [$$[$0-2], $$[$0], 'eq']; +break; +case 21: +this.$ = [$$[$0-2], $$[$0], 'seq']; +break; +case 22: +this.$ = [$$[$0-2], $$[$0], 'neq']; +break; +case 23: +this.$ = [$$[$0-2], $$[$0], 'sneq']; +break; +case 24: +this.$ = [$$[$0-2], $$[$0], 'like']; +break; +case 25: +this.$ = [$$[$0-2], $$[$0], 'notLike']; +break; +case 27: case 29: +this.$ = [$$[$0-2], $$[$0], 'in']; +break; +case 28: case 30: +this.$ = [$$[$0-2], $$[$0], 'notIn']; +break; +case 32: +this.$ = [$$[$0-2], $$[$0], 'and']; +break; +case 34: +this.$ = [$$[$0-2], $$[$0], 'or']; +break; +case 36: +this.$ = [$$[$0-2], $$[$0], 'arguments'] +break; +case 37: +this.$ = [String(yytext), null, 'identifier']; +break; +case 39: +this.$ = [$$[$0-2],$$[$0], 'prop']; +break; +case 40: case 41: case 42: +this.$ = [$$[$0-3],$$[$0-1], 'propLookup']; +break; +case 43: +this.$ = [$$[$0-2], [null, null, 'arguments'], 'function'] +break; +case 44: +this.$ = [$$[$0-3], $$[$0-1], 'function'] +break; +case 45: +this.$ = [String(yytext.replace(/^['|"]|['|"]$/g, '')), null, 'string']; +break; +case 46: +this.$ = [Number(yytext), null, 'number']; +break; +case 47: +this.$ = [yytext, null, 'regexp']; +break; +case 48: +this.$ = [yytext.replace(/^\s+/, '') == 'true', null, 'boolean']; +break; +case 49: +this.$ = [null, null, 'null']; +break; +case 50: +this.$ = [null, null, 'array']; +break; +case 51: +this.$ = [$$[$0-1], null, 'array']; +break; +case 59: +this.$ = [$$[$0-1], null, 'composite'] +break; +} +}, +table: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])], +defaultActions: {31:[2,1]}, +parseError: function parseError(str, hash) { + if (hash.recoverable) { + this.trace(str); + } else { + function _parseError (msg, hash) { + this.message = msg; + this.hash = hash; + } + _parseError.prototype = Error; - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - function getSetOffset(input, keepLocalTime, keepMinutes) { - var offset = this._offset || 0, - localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; + throw new _parseError(str, hash); + } +}, +parse: function parse(input) { + var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; + var args = lstack.slice.call(arguments, 1); + var lexer = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k)) { + sharedState.yy[k] = this.yy[k]; + } + } + lexer.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer; + sharedState.yy.parser = this; + if (typeof lexer.yylloc == 'undefined') { + lexer.yylloc = {}; + } + var yyloc = lexer.yylloc; + lstack.push(yyloc); + var ranges = lexer.options && lexer.options.ranges; + if (typeof sharedState.yy.parseError === 'function') { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n) { + stack.length = stack.length - 2 * n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; + } + _token_stack: + var lex = function () { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + }; + var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol === null || typeof symbol == 'undefined') { + symbol = lex(); + } + action = table[state] && table[state][symbol]; + } + if (typeof action === 'undefined' || !action.length || !action[0]) { + var errStr = ''; + expected = []; + for (p in table[state]) { + if (this.terminals_[p] && p > TERROR) { + expected.push('\'' + this.terminals_[p] + '\''); + } + } + if (lexer.showPosition) { + errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; + } else { + errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); + } + this.parseError(errStr, { + text: lexer.match, + token: this.terminals_[symbol] || symbol, + line: lexer.yylineno, + loc: yyloc, + expected: expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); } - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer.yytext); + lstack.push(lexer.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer.yyleng; + yytext = lexer.yytext; + yylineno = lexer.yylineno; + yyloc = lexer.yylloc; + if (recovering > 0) { + recovering--; } - } else if (Math.abs(input) < 16 && !keepMinutes) { - input = input * 60; + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); + r = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r !== 'undefined') { + return r; } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract( - this, - createDuration(input - offset, 'm'), - 1, - false - ); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; } } + return true; +}}; +/* generated by jison-lex 0.3.4 */ +var lexer = (function(){ +var lexer = ({ - function getSetZone(input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); +EOF:1, - return this; +parseError:function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); } else { - return -this.utcOffset(); - } - } - - function setOffsetToUTC(keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } - - function setOffsetToLocal(keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } + throw new Error(str); } - return this; - } + }, - function setOffsetToParsedOffset() { - if (this._tzm != null) { - this.utcOffset(this._tzm, false, true); - } else if (typeof this._i === 'string') { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); - } else { - this.utcOffset(0, true); - } +// resets the lexer, sets new input +setInput:function (input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0,0]; } + this.offset = 0; return this; - } - - function hasAlignedHourOffset(input) { - if (!this.isValid()) { - return false; - } - input = input ? createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; - } - - function isDaylightSavingTime() { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); - } - - function isDaylightSavingTimeShifted() { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } - - var c = {}, - other; - - copyConfig(c, this); - c = prepareConfig(c); + }, - if (c._a) { - other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = - this.isValid() && compareArrays(c._a, other.toArray()) > 0; +// consumes and returns one char from the input +input:function () { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; } else { - this._isDSTShifted = false; + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; } - return this._isDSTShifted; - } - - function isLocal() { - return this.isValid() ? !this._isUTC : false; - } - - function isUtcOffset() { - return this.isValid() ? this._isUTC : false; - } - - function isUtc() { - return this.isValid() ? this._isUTC && this._offset === 0 : false; - } - - // ASP.NET json date format regex - var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - // and further modified to allow for strings containing both week and day - isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; + this._input = this._input.slice(1); + return ch; + }, - function createDuration(input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; +// unshifts one char (or a string) into the input +unput:function (ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); - if (isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months, - }; - } else if (isNumber(input) || !isNaN(+input)) { - duration = {}; - if (key) { - duration[key] = +input; - } else { - duration.milliseconds = +input; - } - } else if ((match = aspNetRegex.exec(input))) { - sign = match[1] === '-' ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match - }; - } else if ((match = isoRegex.exec(input))) { - sign = match[1] === '-' ? -1 : 1; - duration = { - y: parseIso(match[2], sign), - M: parseIso(match[3], sign), - w: parseIso(match[4], sign), - d: parseIso(match[5], sign), - h: parseIso(match[6], sign), - m: parseIso(match[7], sign), - s: parseIso(match[8], sign), - }; - } else if (duration == null) { - // checks for null or undefined - duration = {}; - } else if ( - typeof duration === 'object' && - ('from' in duration || 'to' in duration) - ) { - diffRes = momentsDifference( - createLocal(duration.from), - createLocal(duration.to) - ); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; + if (lines.length - 1) { + this.yylineno -= lines.length - 1; } + var r = this.yylloc.range; - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? + (lines.length === oldLines.length ? this.yylloc.first_column : 0) + + oldLines[oldLines.length - lines.length].length - lines[0].length : + this.yylloc.first_column - len + }; - if (isDuration(input) && hasOwnProp(input, '_isValid')) { - ret._isValid = input._isValid; + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; } + this.yyleng = this.yytext.length; + return this; + }, - return ret; - } - - createDuration.fn = Duration.prototype; - createDuration.invalid = createInvalid$1; - - function parseIso(inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - } +// When called from action, caches matched text and appends it on next action +more:function () { + this._more = true; + return this; + }, - function positiveMomentsDifference(base, other) { - var res = {}; +// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. +reject:function () { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); - res.months = - other.month() - base.month() + (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; } + return this; + }, - res.milliseconds = +other - +base.clone().add(res.months, 'M'); +// retain first n characters of the match +less:function (n) { + this.unput(this.match.slice(n)); + }, - return res; - } +// displays already matched input, i.e. for error messages +pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, - function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return { milliseconds: 0, months: 0 }; +// displays upcoming input, i.e. for error messages +upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); } + return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); + }, - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } +// displays the character position where the lexing error occurred, i.e. for error messages +showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, - return res; - } +// test the lexed token: return FALSE when not a match, otherwise return token +test_match:function (match, indexed_rule) { + var token, + lines, + backup; - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple( - name, - 'moment().' + - name + - '(period, number) is deprecated. Please use moment().' + - name + - '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' - ); - tmp = val; - val = period; - period = tmp; + if (this.options.backtrack_lexer) { + // save context + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } - - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; - } - - function addSubtract(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = absRound(duration._days), - months = absRound(duration._months); - - if (!mom.isValid()) { - // No op - return; } - updateOffset = updateOffset == null ? true : updateOffset; - - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; } - if (days) { - set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? + lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : + this.yylloc.last_column + match[0].length + }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; } - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; } - if (updateOffset) { - hooks.updateOffset(mom, days || months); + if (token) { + return token; + } else if (this._backtrack) { + // recover context + for (var k in backup) { + this[k] = backup[k]; + } + return false; // rule action called reject() implying the next rule should be tested instead. } - } - - var add = createAdder(1, 'add'), - subtract = createAdder(-1, 'subtract'); - - function isString(input) { - return typeof input === 'string' || input instanceof String; - } - - // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined - function isMomentInput(input) { - return ( - isMoment(input) || - isDate(input) || - isString(input) || - isNumber(input) || - isNumberOrStringArray(input) || - isMomentInputObject(input) || - input === null || - input === undefined - ); - } - - function isMomentInputObject(input) { - var objectTest = isObject(input) && !isObjectEmpty(input), - propertyTest = false, - properties = [ - 'years', - 'year', - 'y', - 'months', - 'month', - 'M', - 'days', - 'day', - 'd', - 'dates', - 'date', - 'D', - 'hours', - 'hour', - 'h', - 'minutes', - 'minute', - 'm', - 'seconds', - 'second', - 's', - 'milliseconds', - 'millisecond', - 'ms', - ], - i, - property; + return false; + }, - for (i = 0; i < properties.length; i += 1) { - property = properties[i]; - propertyTest = propertyTest || hasOwnProp(input, property); +// return next match in input +next:function () { + if (this.done) { + return this.EOF; } - - return objectTest && propertyTest; - } - - function isNumberOrStringArray(input) { - var arrayTest = isArray(input), - dataTypeTest = false; - if (arrayTest) { - dataTypeTest = - input.filter(function (item) { - return !isNumber(item) && isString(input); - }).length === 0; + if (!this._input) { + this.done = true; } - return arrayTest && dataTypeTest; - } - - function isCalendarSpec(input) { - var objectTest = isObject(input) && !isObjectEmpty(input), - propertyTest = false, - properties = [ - 'sameDay', - 'nextDay', - 'lastDay', - 'nextWeek', - 'lastWeek', - 'sameElse', - ], - i, - property; - for (i = 0; i < properties.length; i += 1) { - property = properties[i]; - propertyTest = propertyTest || hasOwnProp(input, property); + var token, + match, + tempMatch, + index; + if (!this._more) { + this.yytext = ''; + this.match = ''; } - - return objectTest && propertyTest; - } - - function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 - ? 'sameElse' - : diff < -1 - ? 'lastWeek' - : diff < 0 - ? 'lastDay' - : diff < 1 - ? 'sameDay' - : diff < 2 - ? 'nextDay' - : diff < 7 - ? 'nextWeek' - : 'sameElse'; - } - - function calendar$1(time, formats) { - // Support for single parameter, formats only overload to the calendar function - if (arguments.length === 1) { - if (isMomentInput(arguments[0])) { - time = arguments[0]; - formats = undefined; - } else if (isCalendarSpec(arguments[0])) { - formats = arguments[0]; - time = undefined; + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (this.options.backtrack_lexer) { + token = this.test_match(tempMatch, rules[i]); + if (token !== false) { + return token; + } else if (this._backtrack) { + match = false; + continue; // rule action called reject() implying a rule MISmatch. + } else { + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + } else if (!this.options.flex) { + break; + } } } - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse', - output = - formats && - (isFunction(formats[format]) - ? formats[format].call(this, now) - : formats[format]); - - return this.format( - output || this.localeData().calendar(format, this, createLocal(now)) - ); - } - - function clone() { - return new Moment(this); - } - - function isAfter(input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { + if (match) { + token = this.test_match(match, rules[index]); + if (token !== false) { + return token; + } + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) return false; } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() > localInput.valueOf(); + if (this._input === "") { + return this.EOF; } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); } - } + }, - function isBefore(input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() < localInput.valueOf(); +// return next match that has a token +lex:function lex() { + var r = this.next(); + if (r) { + return r; } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); + return this.lex(); } - } + }, - function isBetween(from, to, units, inclusivity) { - var localFrom = isMoment(from) ? from : createLocal(from), - localTo = isMoment(to) ? to : createLocal(to); - if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { - return false; - } - inclusivity = inclusivity || '()'; - return ( - (inclusivity[0] === '(' - ? this.isAfter(localFrom, units) - : !this.isBefore(localFrom, units)) && - (inclusivity[1] === ')' - ? this.isBefore(localTo, units) - : !this.isAfter(localTo, units)) - ); - } +// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) +begin:function begin(condition) { + this.conditionStack.push(condition); + }, - function isSame(input, units) { - var localInput = isMoment(input) ? input : createLocal(input), - inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() === localInput.valueOf(); +// pop the previously active lexer condition state off the condition stack +popState:function popState() { + var n = this.conditionStack.length - 1; + if (n > 0) { + return this.conditionStack.pop(); } else { - inputMs = localInput.valueOf(); - return ( - this.clone().startOf(units).valueOf() <= inputMs && - inputMs <= this.clone().endOf(units).valueOf() - ); - } - } - - function isSameOrAfter(input, units) { - return this.isSame(input, units) || this.isAfter(input, units); - } - - function isSameOrBefore(input, units) { - return this.isSame(input, units) || this.isBefore(input, units); - } - - function diff(input, units, asFloat) { - var that, zoneDelta, output; - - if (!this.isValid()) { - return NaN; - } - - that = cloneWithOffset(input, this); - - if (!that.isValid()) { - return NaN; - } - - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - - units = normalizeUnits(units); - - switch (units) { - case 'year': - output = monthDiff(this, that) / 12; - break; - case 'month': - output = monthDiff(this, that); - break; - case 'quarter': - output = monthDiff(this, that) / 3; - break; - case 'second': - output = (this - that) / 1e3; - break; // 1000 - case 'minute': - output = (this - that) / 6e4; - break; // 1000 * 60 - case 'hour': - output = (this - that) / 36e5; - break; // 1000 * 60 * 60 - case 'day': - output = (this - that - zoneDelta) / 864e5; - break; // 1000 * 60 * 60 * 24, negate dst - case 'week': - output = (this - that - zoneDelta) / 6048e5; - break; // 1000 * 60 * 60 * 24 * 7, negate dst - default: - output = this - that; + return this.conditionStack[0]; } + }, - return asFloat ? output : absFloor(output); - } - - function monthDiff(a, b) { - if (a.date() < b.date()) { - // end-of-month calculations work correct when the start month has more - // days than the end month. - return -monthDiff(b, a); +// produce the lexer rule set which is active for the currently active lexer condition state +_currentRules:function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; } - // difference in months - var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, - adjust; + }, - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); +// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available +topState:function topState(n) { + n = this.conditionStack.length - 1 - Math.abs(n || 0); + if (n >= 0) { + return this.conditionStack[n]; } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); + return "INITIAL"; } + }, - //check for negative zero, return zero if negative zero - return -(wholeMonthDiff + adjust) || 0; - } - - hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - - function toString() { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } +// alias for begin(condition) +pushState:function pushState(condition) { + this.begin(condition); + }, - function toISOString(keepOffset) { - if (!this.isValid()) { - return null; - } - var utc = keepOffset !== true, - m = utc ? this.clone().utc() : this; - if (m.year() < 0 || m.year() > 9999) { - return formatMoment( - m, - utc - ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' - : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' - ); - } - if (isFunction(Date.prototype.toISOString)) { - // native implementation is ~50x faster, use it when we can - if (utc) { - return this.toDate().toISOString(); - } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) - .toISOString() - .replace('Z', formatMoment(m, 'Z')); - } - } - return formatMoment( - m, - utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' - ); - } +// return the number of states currently on the stack +stateStackSize:function stateStackSize() { + return this.conditionStack.length; + }, +options: {}, +performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { +var YYSTATE=YY_START; +switch($avoiding_name_collisions) { +case 0:return 31; +break; +case 1:return 33; +break; +case 2:return 'from'; +break; +case 3:return 24; +break; +case 4:return 25; +break; +case 5:return 26; +break; +case 6:return 27; +break; +case 7:return 21; +break; +case 8:return 19; +break; +case 9:return 22; +break; +case 10:return 20; +break; +case 11:return 28; +break; +case 12:return 29; +break; +case 13:return 36; +break; +case 14:return 38; +break; +case 15:return 57; +break; +case 16:return 55; +break; +case 17:/* skip whitespace */ +break; +case 18:return 51; +break; +case 19:return 50; +break; +case 20:return 50; +break; +case 21:return 42; +break; +case 22:return 53; +break; +case 23:return 43; +break; +case 24:return 11; +break; +case 25:return 12; +break; +case 26:return 13; +break; +case 27:return 40; +break; +case 28:return 8; +break; +case 29:return 28; +break; +case 30:return 29; +break; +case 31:return 25; +break; +case 32:return 24; +break; +case 33:return 27; +break; +case 34:return 26; +break; +case 35:return 21; +break; +case 36:return 22; +break; +case 37:return 20; +break; +case 38:return 19; +break; +case 39:return 36; +break; +case 40:return 38; +break; +case 41:return 15; +break; +case 42:return 17; +break; +case 43:return 48; +break; +case 44:return 46; +break; +case 45:return 44; +break; +case 46:return 49; +break; +case 47:return 9; +break; +case 48:return 5; +break; +} +}, +rules: [/^(?:\s+in\b)/,/^(?:\s+notIn\b)/,/^(?:\s+from\b)/,/^(?:\s+(eq|EQ)\b)/,/^(?:\s+(seq|SEQ)\b)/,/^(?:\s+(neq|NEQ)\b)/,/^(?:\s+(sneq|SNEQ)\b)/,/^(?:\s+(lte|LTE)\b)/,/^(?:\s+(lt|LT)\b)/,/^(?:\s+(gte|GTE)\b)/,/^(?:\s+(gt|GT)\b)/,/^(?:\s+(like|LIKE)\b)/,/^(?:\s+(notLike|NOT_LIKE)\b)/,/^(?:\s+(and|AND)\b)/,/^(?:\s+(or|OR)\b)/,/^(?:\s*(null)\b)/,/^(?:\s*(true|false)\b)/,/^(?:\s+)/,/^(?:-?[0-9]+(?:\.[0-9]+)?\b)/,/^(?:'[^']*')/,/^(?:"[^"]*")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\/((?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/[imgy]{0,4})(?!\w))/,/^(?:\.)/,/^(?:\*)/,/^(?:\/)/,/^(?:\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\|\|)/,/^(?:\+)/,/^(?:\^)/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:\))/,/^(?:!)/,/^(?:$)/], +conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"inclusive":true}} +}); +return lexer; +})(); +parser.lexer = lexer; +function Parser () { + this.yy = {}; +} +Parser.prototype = parser;parser.Parser = Parser; +return new Parser; +})(); - /** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - */ - function inspect() { - if (!this.isValid()) { - return 'moment.invalid(/* ' + this._i + ' */)'; - } - var func = 'moment', - zone = '', - prefix, - year, - datetime, - suffix; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; - zone = 'Z'; - } - prefix = '[' + func + '("]'; - year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; - datetime = '-MM-DD[T]HH:mm:ss.SSS'; - suffix = zone + '[")]'; - return this.format(prefix + year + datetime + suffix); +if (true) { +exports.parser = parser; +exports.Parser = parser.Parser; +exports.parse = function () { return parser.parse.apply(parser, arguments); }; +exports.main = function commonjsMain(args) { + if (!args[1]) { + console.log('Usage: '+args[0]+' FILE'); + process.exit(1); } + var source = __webpack_require__(/*! fs */ "fs").readFileSync(__webpack_require__(/*! path */ "path").normalize(args[1]), "utf8"); + return exports.parser.parse(source); +}; +if ( true && __webpack_require__.c[__webpack_require__.s] === module) { + exports.main(process.argv.slice(1)); +} +} - function format(inputString) { - if (!inputString) { - inputString = this.isUtc() - ? hooks.defaultFormatUtc - : hooks.defaultFormat; - } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); - } +/***/ }), - function from(time, withoutSuffix) { - if ( - this.isValid() && - ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) - ) { - return createDuration({ to: this, from: time }) - .locale(this.locale()) - .humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - function fromNow(withoutSuffix) { - return this.from(createLocal(), withoutSuffix); - } +(function () { + "use strict"; + var constraintParser = __webpack_require__(/*! ./constraint/parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js"), + noolParser = __webpack_require__(/*! ./nools/nool.parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js"); - function to(time, withoutSuffix) { - if ( - this.isValid() && - ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) - ) { - return createDuration({ from: this, to: time }) - .locale(this.locale()) - .humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); + exports.parseConstraint = function (expression) { + try { + return constraintParser.parse(expression); + } catch (e) { + throw new Error("Invalid expression '" + expression + "'"); } - } + }; - function toNow(withoutSuffix) { - return this.to(createLocal(), withoutSuffix); - } + exports.parseRuleSet = function (source, file) { + return noolParser.parse(source, file); + }; +})(); - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - function locale(key) { - var newLocaleData; +/***/ }), - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js": +/*!****************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js ***! + \****************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ); +"use strict"; - function localeData() { - return this._locale; - } - var MS_PER_SECOND = 1000, - MS_PER_MINUTE = 60 * MS_PER_SECOND, - MS_PER_HOUR = 60 * MS_PER_MINUTE, - MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; +var tokens = __webpack_require__(/*! ./tokens.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + keys = extd.hash.keys, + utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"); - // actual modulo - handles negative numbers (for dates before 1970): - function mod$1(dividend, divisor) { - return ((dividend % divisor) + divisor) % divisor; - } +var parse = function (src, keywords, context) { + var orig = src; + src = src.replace(/\/\/(.*)/g, "").replace(/\r\n|\r|\n/g, " "); - function localStartOfDate(y, m, d) { - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - return new Date(y + 400, m, d) - MS_PER_400_YEARS; + var blockTypes = new RegExp("^(" + keys(keywords).join("|") + ")"), index; + while (src && (index = utils.findNextTokenIndex(src)) !== -1) { + src = src.substr(index); + var blockType = src.match(blockTypes); + if (blockType !== null) { + blockType = blockType[1]; + if (blockType in keywords) { + try { + src = keywords[blockType](src, context, parse).replace(/^\s*|\s*$/g, ""); + } catch (e) { + throw new Error("Invalid " + blockType + " definition \n" + e.message + "; \nstarting at : " + orig); + } + } else { + throw new Error("Unknown token" + blockType); + } } else { - return new Date(y, m, d).valueOf(); + throw new Error("Error parsing " + src); } } +}; - function utcStartOfDate(y, m, d) { - // Date.UTC remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; - } else { - return Date.UTC(y, m, d); - } - } +exports.parse = function (src, file) { + var context = {define: [], rules: [], scope: [], loaded: [], file: file}; + parse(src, tokens, context); + return context; +}; - function startOf(units) { - var time, startOfDate; - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond' || !this.isValid()) { - return this; - } - startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - switch (units) { - case 'year': - time = startOfDate(this.year(), 0, 1); - break; - case 'quarter': - time = startOfDate( - this.year(), - this.month() - (this.month() % 3), - 1 - ); - break; - case 'month': - time = startOfDate(this.year(), this.month(), 1); - break; - case 'week': - time = startOfDate( - this.year(), - this.month(), - this.date() - this.weekday() - ); - break; - case 'isoWeek': - time = startOfDate( - this.year(), - this.month(), - this.date() - (this.isoWeekday() - 1) - ); - break; - case 'day': - case 'date': - time = startOfDate(this.year(), this.month(), this.date()); - break; - case 'hour': - time = this._d.valueOf(); - time -= mod$1( - time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), - MS_PER_HOUR - ); - break; - case 'minute': - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_MINUTE); - break; - case 'second': - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_SECOND); - break; - } +/***/ }), - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function endOf(units) { - var time, startOfDate; - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond' || !this.isValid()) { - return this; - } +"use strict"; - startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - switch (units) { - case 'year': - time = startOfDate(this.year() + 1, 0, 1) - 1; - break; - case 'quarter': - time = - startOfDate( - this.year(), - this.month() - (this.month() % 3) + 3, - 1 - ) - 1; - break; - case 'month': - time = startOfDate(this.year(), this.month() + 1, 1) - 1; - break; - case 'week': - time = - startOfDate( - this.year(), - this.month(), - this.date() - this.weekday() + 7 - ) - 1; - break; - case 'isoWeek': - time = - startOfDate( - this.year(), - this.month(), - this.date() - (this.isoWeekday() - 1) + 7 - ) - 1; - break; - case 'day': - case 'date': - time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; - break; - case 'hour': - time = this._d.valueOf(); - time += - MS_PER_HOUR - - mod$1( - time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), - MS_PER_HOUR - ) - - 1; - break; - case 'minute': - time = this._d.valueOf(); - time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; - break; - case 'second': - time = this._d.valueOf(); - time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; - break; - } +var utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"), + fs = __webpack_require__(/*! fs */ "fs"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + filter = extd.filter, + indexOf = extd.indexOf, + predicates = ["not", "or", "exists"], + predicateRegExp = new RegExp("^(" + predicates.join("|") + ") *\\((.*)\\)$", "m"), + predicateBeginExp = new RegExp(" *(" + predicates.join("|") + ") *\\(", "g"); - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } +var isWhiteSpace = function (str) { + return str.replace(/[\s|\n|\r|\t]/g, "").length === 0; +}; - function valueOf() { - return this._d.valueOf() - (this._offset || 0) * 60000; - } +var joinFunc = function (m, str) { + return "; " + str; +}; - function unix() { - return Math.floor(this.valueOf() / 1000); - } +var splitRuleLineByPredicateExpressions = function (ruleLine) { + var str = ruleLine.replace(/,\s*(\$?\w+\s*:)/g, joinFunc); + var parts = filter(str.split(predicateBeginExp), function (str) { + return str !== ""; + }), + l = parts.length, ret = []; - function toDate() { - return new Date(this.valueOf()); + if (l) { + for (var i = 0; i < l; i++) { + if (indexOf(predicates, parts[i]) !== -1) { + ret.push([parts[i], "(", parts[++i].replace(/, *$/, "")].join("")); + } else { + ret.push(parts[i].replace(/, *$/, "")); + } + } + } else { + return str; } + return ret.join(";"); +}; - function toArray() { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hour(), - m.minute(), - m.second(), - m.millisecond(), - ]; - } +var ruleTokens = { - function toObject() { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds(), + salience: (function () { + var salienceRegexp = /^(salience|priority)\s*:\s*(-?\d+)\s*[,;]?/; + return function (src, context) { + if (salienceRegexp.test(src)) { + var parts = src.match(salienceRegexp), + priority = parseInt(parts[2], 10); + if (!isNaN(priority)) { + context.options.priority = priority; + } else { + throw new Error("Invalid salience/priority " + parts[2]); + } + return src.replace(parts[0], ""); + } else { + throw new Error("invalid format"); + } }; - } + })(), - function toJSON() { - // new Date(NaN).toJSON() === null - return this.isValid() ? this.toISOString() : null; - } + agendaGroup: (function () { + var agendaGroupRegexp = /^(agenda-group|agendaGroup)\s*:\s*([a-zA-Z_$][0-9a-zA-Z_$]*|"[^"]*"|'[^']*')\s*[,;]?/; + return function (src, context) { + if (agendaGroupRegexp.test(src)) { + var parts = src.match(agendaGroupRegexp), + agendaGroup = parts[2]; + if (agendaGroup) { + context.options.agendaGroup = agendaGroup.replace(/^["']|["']$/g, ""); + } else { + throw new Error("Invalid agenda-group " + parts[2]); + } + return src.replace(parts[0], ""); + } else { + throw new Error("invalid format"); + } + }; + })(), - function isValid$2() { - return isValid(this); - } + autoFocus: (function () { + var autoFocusRegexp = /^(auto-focus|autoFocus)\s*:\s*(true|false)\s*[,;]?/; + return function (src, context) { + if (autoFocusRegexp.test(src)) { + var parts = src.match(autoFocusRegexp), + autoFocus = parts[2]; + if (autoFocus) { + context.options.autoFocus = autoFocus === "true" ? true : false; + } else { + throw new Error("Invalid auto-focus " + parts[2]); + } + return src.replace(parts[0], ""); + } else { + throw new Error("invalid format"); + } + }; + })(), - function parsingFlags() { - return extend({}, getParsingFlags(this)); - } + "agenda-group": function () { + return this.agendaGroup.apply(this, arguments); + }, - function invalidAt() { - return getParsingFlags(this).overflow; - } + "auto-focus": function () { + return this.autoFocus.apply(this, arguments); + }, - function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict, - }; - } + priority: function () { + return this.salience.apply(this, arguments); + }, - addFormatToken('N', 0, 0, 'eraAbbr'); - addFormatToken('NN', 0, 0, 'eraAbbr'); - addFormatToken('NNN', 0, 0, 'eraAbbr'); - addFormatToken('NNNN', 0, 0, 'eraName'); - addFormatToken('NNNNN', 0, 0, 'eraNarrow'); + when: (function () { + /*jshint evil:true*/ - addFormatToken('y', ['y', 1], 'yo', 'eraYear'); - addFormatToken('y', ['yy', 2], 0, 'eraYear'); - addFormatToken('y', ['yyy', 3], 0, 'eraYear'); - addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); + var ruleRegExp = /^(\$?\w+) *: *(\w+)(.*)/; - addRegexToken('N', matchEraAbbr); - addRegexToken('NN', matchEraAbbr); - addRegexToken('NNN', matchEraAbbr); - addRegexToken('NNNN', matchEraName); - addRegexToken('NNNNN', matchEraNarrow); + var constraintRegExp = /(\{ *(?:["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']? *(?:, *["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']?)*)+ *\})/; + var fromRegExp = /(\bfrom\s+.*)/; + var parseRules = function (str) { + var rules = []; + var ruleLines = str.split(";"), l = ruleLines.length, ruleLine; + for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\s*|\s*$/g, "").replace(/\n/g, "")); i++) { + if (!isWhiteSpace(ruleLine)) { + var rule = []; + if (predicateRegExp.test(ruleLine)) { + var m = ruleLine.match(predicateRegExp); + var pred = m[1].replace(/^\s*|\s*$/g, ""); + rule.push(pred); + ruleLine = m[2].replace(/^\s*|\s*$/g, ""); + if (pred === "or") { + rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine))); + rules.push(rule); + continue; + } - addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function ( - input, - array, - config, - token - ) { - var era = config._locale.erasParse(input, token, config._strict); - if (era) { - getParsingFlags(config).era = era; - } else { - getParsingFlags(config).invalidEra = input; - } - }); + } + var parts = ruleLine.match(ruleRegExp); + if (parts && parts.length) { + rule.push(parts[2], parts[1]); + var constraints = parts[3].replace(/^\s*|\s*$/g, ""); + var hashParts = constraints.match(constraintRegExp), from = null, fromMatch; + if (hashParts) { + var hash = hashParts[1], constraint = constraints.replace(hash, ""); + if (fromRegExp.test(constraint)) { + fromMatch = constraint.match(fromRegExp); + from = fromMatch[0]; + constraint = constraint.replace(fromMatch[0], ""); + } + if (constraint) { + rule.push(constraint.replace(/^\s*|\s*$/g, "")); + } + if (hash) { + rule.push(eval("(" + hash.replace(/(\$?\w+)\s*:\s*(\$?\w+)/g, '"$1" : "$2"') + ")")); + } + } else if (constraints && !isWhiteSpace(constraints)) { + if (fromRegExp.test(constraints)) { + fromMatch = constraints.match(fromRegExp); + from = fromMatch[0]; + constraints = constraints.replace(fromMatch[0], ""); + } + rule.push(constraints); + } + if (from) { + rule.push(from); + } + rules.push(rule); + } else { + throw new Error("Invalid constraint " + ruleLine); + } + } + } + return rules; + }; - addRegexToken('y', matchUnsigned); - addRegexToken('yy', matchUnsigned); - addRegexToken('yyy', matchUnsigned); - addRegexToken('yyyy', matchUnsigned); - addRegexToken('yo', matchEraYearOrdinal); + return function (orig, context) { + var src = orig.replace(/^when\s*/, "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + context.constraints = parseRules(body.replace(/^\{\s*|\}\s*$/g, "")); + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); + } + }; + })(), - addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); - addParseToken(['yo'], function (input, array, config, token) { - var match; - if (config._locale._eraYearOrdinalRegex) { - match = input.match(config._locale._eraYearOrdinalRegex); - } + then: (function () { + return function (orig, context) { + if (!context.action) { + var src = orig.replace(/^then\s*/, "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + if (!context.action) { + context.action = body.replace(/^\{\s*|\}\s*$/g, ""); + } + if (!isWhiteSpace(src)) { + throw new Error("Error parsing then block " + orig); + } + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); + } + } else { + throw new Error("action already defined for rule" + context.name); + } - if (config._locale.eraYearOrdinalParse) { - array[YEAR] = config._locale.eraYearOrdinalParse(input, match); + }; + })() +}; + +var topLevelTokens = { + "/": function (orig) { + if (orig.match(/^\/\*/)) { + // Block Comment parse + return orig.replace(/\/\*.*?\*\//, ""); } else { - array[YEAR] = parseInt(input, 10); + return orig; } - }); + }, - function localeEras(m, format) { - var i, - l, - date, - eras = this._eras || getLocale('en')._eras; - for (i = 0, l = eras.length; i < l; ++i) { - switch (typeof eras[i].since) { - case 'string': - // truncate time - date = hooks(eras[i].since).startOf('day'); - eras[i].since = date.valueOf(); - break; + "define": function (orig, context) { + var src = orig.replace(/^define\s*/, ""); + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/); + if (name) { + src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + name = name[1]; + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + //should + context.define.push({name: name, properties: "(" + body + ")"}); + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); } + } else { + throw new Error("missing name"); + } + }, - switch (typeof eras[i].until) { - case 'undefined': - eras[i].until = +Infinity; - break; - case 'string': - // truncate time - date = hooks(eras[i].until).startOf('day').valueOf(); - eras[i].until = date.valueOf(); - break; + "import": function (orig, context, parse) { + if (typeof window !== 'undefined') { + throw new Error("import cannot be used in a browser"); + } + var src = orig.replace(/^import\s*/, ""); + if (utils.findNextToken(src) === "(") { + var file = utils.getParamList(src); + src = src.replace(file, "").replace(/^\s*|\s*$/g, ""); + utils.findNextToken(src) === ";" && (src = src.replace(/\s*;/, "")); + file = file.replace(/[\(|\)]/g, "").split(","); + if (file.length === 1) { + file = utils.resolve(context.file || process.cwd(), file[0].replace(/["|']/g, "")); + if (indexOf(context.loaded, file) === -1) { + var origFile = context.file; + context.file = file; + parse(fs.readFileSync(file, "utf8"), topLevelTokens, context); + context.loaded.push(file); + context.file = origFile; + } + return src; + } else { + throw new Error("import accepts a single file"); } + } else { + throw new Error("unexpected token : expected : '(' found : '" + utils.findNextToken(src) + "'"); } - return eras; - } - - function localeErasParse(eraName, format, strict) { - var i, - l, - eras = this.eras(), - name, - abbr, - narrow; - eraName = eraName.toUpperCase(); - - for (i = 0, l = eras.length; i < l; ++i) { - name = eras[i].name.toUpperCase(); - abbr = eras[i].abbr.toUpperCase(); - narrow = eras[i].narrow.toUpperCase(); - - if (strict) { - switch (format) { - case 'N': - case 'NN': - case 'NNN': - if (abbr === eraName) { - return eras[i]; - } - break; - case 'NNNN': - if (name === eraName) { - return eras[i]; - } - break; + }, - case 'NNNNN': - if (narrow === eraName) { - return eras[i]; - } - break; + //define a global + "global": function (orig, context) { + var src = orig.replace(/^global\s*/, ""); + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\s*)/); + if (name) { + src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "=") { + name = name[1].replace(/^\s+|\s+$/g, ''); + var fullbody = utils.getTokensBetween(src, "=", ";", true).join(""); + var body = fullbody.substring(1, fullbody.length - 1); + body = body.replace(/^\s+|\s+$/g, ''); + if (/^require\(/.test(body)) { + var file = utils.getParamList(body.replace("require")).replace(/[\(|\)]/g, "").split(","); + if (file.length === 1) { + //handle relative require calls + file = file[0].replace(/["|']/g, ""); + body = ["require('", utils.resolve(context.file || process.cwd(), file) , "')"].join(""); + } } - } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { - return eras[i]; + context.scope.push({name: name, body: body}); + src = src.replace(fullbody, ""); + return src; + } else { + throw new Error("unexpected token : expected : '=' found : '" + utils.findNextToken(src) + "'"); } + } else { + throw new Error("missing name"); } - } + }, - function localeErasConvertYear(era, year) { - var dir = era.since <= era.until ? +1 : -1; - if (year === undefined) { - return hooks(era.since).year(); + //define a function + "function": function (orig, context) { + var src = orig.replace(/^function\s*/, ""); + //parse the function name + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\s*/); + if (name) { + src = src.replace(name[0], ""); + if (utils.findNextToken(src) === "(") { + name = name[1]; + var params = utils.getParamList(src); + src = src.replace(params, "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + //should + context.scope.push({name: name, body: "function" + params + body}); + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); + } + } else { + throw new Error("unexpected token : expected : '(' found : '" + utils.findNextToken(src) + "'"); + } } else { - return hooks(era.since).year() + (year - era.offset) * dir; + throw new Error("missing name"); } - } - - function getEraName() { - var i, - l, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - // truncate time - val = this.startOf('day').valueOf(); + }, - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].name; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].name; + "rule": function (orig, context, parse) { + var src = orig.replace(/^rule\s*/, ""); + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|"[^"]*"|'[^']*')/); + if (name) { + src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + name = name[1].replace(/^["']|["']$/g, ""); + var rule = {name: name, options: {}, constraints: null, action: null}; + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + parse(body.replace(/^\{\s*|\}\s*$/g, ""), ruleTokens, rule); + context.rules.push(rule); + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); } + } else { + throw new Error("missing name"); } - return ''; } +}; +module.exports = topLevelTokens; - function getEraNarrow() { - var i, - l, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - // truncate time - val = this.startOf('day').valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].narrow; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].narrow; - } - } - return ''; - } +/***/ }), - function getEraAbbr() { - var i, - l, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - // truncate time - val = this.startOf('day').valueOf(); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].abbr; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].abbr; - } - } +"use strict"; - return ''; - } - function getEraYear() { - var i, - l, - dir, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - dir = eras[i].since <= eras[i].until ? +1 : -1; +var path = __webpack_require__(/*! path */ "path"); +var WHITE_SPACE_REG = /[\s|\n|\r|\t]/, + pathSep = path.sep || ( process.platform === 'win32' ? '\\' : '/' ); - // truncate time - val = this.startOf('day').valueOf(); +var TOKEN_INVERTS = { + "{": "}", + "}": "{", + "(": ")", + ")": "(", + "[": "]" +}; - if ( - (eras[i].since <= val && val <= eras[i].until) || - (eras[i].until <= val && val <= eras[i].since) - ) { - return ( - (this.year() - hooks(eras[i].since).year()) * dir + - eras[i].offset - ); +var getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) { + var depth = 0, ret = []; + if (!start) { + start = TOKEN_INVERTS[stop]; + depth = 1; + } + if (!stop) { + stop = TOKEN_INVERTS[start]; + } + str = Object(str); + var startPushing = false, token, cursor = 0, found = false; + while ((token = str.charAt(cursor++))) { + if (token === start) { + depth++; + if (!startPushing) { + startPushing = true; + if (includeStartEnd) { + ret.push(token); + } + } else { + ret.push(token); + } + } else if (token === stop && cursor) { + depth--; + if (depth === 0) { + if (includeStartEnd) { + ret.push(token); + } + found = true; + break; } + ret.push(token); + } else if (startPushing) { + ret.push(token); } - - return this.year(); } - - function erasNameRegex(isStrict) { - if (!hasOwnProp(this, '_erasNameRegex')) { - computeErasParse.call(this); - } - return isStrict ? this._erasNameRegex : this._erasRegex; + if (!found) { + throw new Error("Unable to match " + start + " in " + str); } + return ret; +}; - function erasAbbrRegex(isStrict) { - if (!hasOwnProp(this, '_erasAbbrRegex')) { - computeErasParse.call(this); - } - return isStrict ? this._erasAbbrRegex : this._erasRegex; - } +exports.getParamList = function (str) { + return getTokensBetween(str, "(", ")", true).join(""); +}; - function erasNarrowRegex(isStrict) { - if (!hasOwnProp(this, '_erasNarrowRegex')) { - computeErasParse.call(this); - } - return isStrict ? this._erasNarrowRegex : this._erasRegex; +exports.resolve = function (from, to) { + if (process.platform === 'win32') { + to = to.replace(/\//g, '\\'); } - - function matchEraAbbr(isStrict, locale) { - return locale.erasAbbrRegex(isStrict); + if (path.extname(from) !== '') { + from = path.dirname(from); } - - function matchEraName(isStrict, locale) { - return locale.erasNameRegex(isStrict); + if (to.split(pathSep).length === 1) { + return to; } + return path.resolve(from, to).replace(/\\/g, '/'); - function matchEraNarrow(isStrict, locale) { - return locale.erasNarrowRegex(isStrict); - } +}; - function matchEraYearOrdinal(isStrict, locale) { - return locale._eraYearOrdinalRegex || matchUnsigned; +var findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) { + startIndex = startIndex || 0; + endIndex = endIndex || str.length; + var ret = -1, l = str.length; + if (!endIndex || endIndex > l) { + endIndex = l; + } + for (; startIndex < endIndex; startIndex++) { + var c = str.charAt(startIndex); + if (!WHITE_SPACE_REG.test(c)) { + ret = startIndex; + break; + } } + return ret; +}; - function computeErasParse() { - var abbrPieces = [], - namePieces = [], - narrowPieces = [], - mixedPieces = [], - i, - l, - eras = this.eras(); +exports.findNextToken = function (str, startIndex, endIndex) { + return str.charAt(findNextTokenIndex(str, startIndex, endIndex)); +}; - for (i = 0, l = eras.length; i < l; ++i) { - namePieces.push(regexEscape(eras[i].name)); - abbrPieces.push(regexEscape(eras[i].abbr)); - narrowPieces.push(regexEscape(eras[i].narrow)); +/***/ }), - mixedPieces.push(regexEscape(eras[i].name)); - mixedPieces.push(regexEscape(eras[i].abbr)); - mixedPieces.push(regexEscape(eras[i].narrow)); - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); - this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); - this._erasNarrowRegex = new RegExp( - '^(' + narrowPieces.join('|') + ')', - 'i' - ); - } +"use strict"; - // FORMATTING +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isEmpty = extd.isEmpty, + merge = extd.merge, + forEach = extd.forEach, + declare = extd.declare, + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + constraint = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + EqualityConstraint = constraint.EqualityConstraint, + FromConstraint = constraint.FromConstraint; - addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; - }); +var id = 0; +var Pattern = declare({}); + +var ObjectPattern = Pattern.extend({ + instance: { + constructor: function (type, alias, conditions, store, options) { + options = options || {}; + this.id = id++; + this.type = type; + this.alias = alias; + this.conditions = conditions; + this.pattern = options.pattern; + var constraints = [new constraint.ObjectConstraint(type)]; + var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options)); + if (constrnts.length) { + constraints = constraints.concat(constrnts); + } else { + var cnstrnt = new constraint.TrueConstraint(); + constraints.push(cnstrnt); + } + if (store && !isEmpty(store)) { + var atm = new constraint.HashConstraint(store); + constraints.push(atm); + } + + forEach(constraints, function (constraint) { + constraint.set("alias", alias); + }); + this.constraints = constraints; + }, + + getSpecificity: function () { + var constraints = this.constraints, specificity = 0; + for (var i = 0, l = constraints.length; i < l; i++) { + if (constraints[i] instanceof EqualityConstraint) { + specificity++; + } + } + return specificity; + }, - addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; - }); + hasConstraint: function (type) { + return extd.some(this.constraints, function (c) { + return c instanceof type; + }); + }, - function addWeekYearFormatToken(token, getter) { - addFormatToken(0, [token, token.length], 0, getter); + hashCode: function () { + return [this.type, this.alias, extd.format("%j", this.conditions)].join(":"); + }, + + toString: function () { + return extd.format("%j", this.constraints); + } } +}).as(exports, "ObjectPattern"); - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); - addWeekYearFormatToken('GGGGG', 'isoWeekYear'); +var FromPattern = ObjectPattern.extend({ + instance: { + constructor: function (type, alias, conditions, store, from, options) { + this._super([type, alias, conditions, store, options]); + this.from = new FromConstraint(from, options); + }, - // ALIASES + hasConstraint: function (type) { + return extd.some(this.constraints, function (c) { + return c instanceof type; + }); + }, - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); + getSpecificity: function () { + return this._super(arguments) + 1; + }, - // PRIORITY + hashCode: function () { + return [this.type, this.alias, extd.format("%j", this.conditions), this.from.from].join(":"); + }, - addUnitPriority('weekYear', 1); - addUnitPriority('isoWeekYear', 1); + toString: function () { + return extd.format("%j from %s", this.constraints, this.from.from); + } + } +}).as(exports, "FromPattern"); - // PARSING - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); +FromPattern.extend().as(exports, "FromNotPattern"); +ObjectPattern.extend().as(exports, "NotPattern"); +ObjectPattern.extend().as(exports, "ExistsPattern"); +FromPattern.extend().as(exports, "FromExistsPattern"); - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function ( - input, - week, - config, - token - ) { - week[token.substr(0, 2)] = toInt(input); - }); +Pattern.extend({ - addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); - }); + instance: { + constructor: function (left, right) { + this.id = id++; + this.leftPattern = left; + this.rightPattern = right; + }, - // MOMENTS + hashCode: function () { + return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(":"); + }, - function getSetWeekYear(input) { - return getSetWeekYearHelper.call( - this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy - ); - } + getSpecificity: function () { + return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity(); + }, - function getSetISOWeekYear(input) { - return getSetWeekYearHelper.call( - this, - input, - this.isoWeek(), - this.isoWeekday(), - 1, - 4 - ); + getters: { + constraints: function () { + return this.leftPattern.constraints.concat(this.rightPattern.constraints); + } + } } - function getISOWeeksInYear() { - return weeksInYear(this.year(), 1, 4); - } +}).as(exports, "CompositePattern"); - function getISOWeeksInISOWeekYear() { - return weeksInYear(this.isoWeekYear(), 1, 4); - } - function getWeeksInYear() { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); +var InitialFact = declare({ + instance: { + constructor: function () { + this.id = id++; + this.recency = 0; + } } +}).as(exports, "InitialFact"); - function getWeeksInWeekYear() { - var weekInfo = this.localeData()._week; - return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); - } +ObjectPattern.extend({ + instance: { + constructor: function () { + this._super([InitialFact, "__i__", [], {}]); + }, - function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); + assert: function () { + return true; } } +}).as(exports, "InitialFactPattern"); - function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), - date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); - - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; - } - // FORMATTING - addFormatToken('Q', 0, 'Qo', 'quarter'); - // ALIASES - addUnitAlias('quarter', 'Q'); +/***/ }), - // PRIORITY +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - addUnitPriority('quarter', 7); +"use strict"; - // PARSING +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isArray = extd.isArray, + Promise = extd.Promise, + declare = extd.declare, + isHash = extd.isHash, + isString = extd.isString, + format = extd.format, + parser = __webpack_require__(/*! ./parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + pattern = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + ObjectPattern = pattern.ObjectPattern, + FromPattern = pattern.FromPattern, + NotPattern = pattern.NotPattern, + ExistsPattern = pattern.ExistsPattern, + FromNotPattern = pattern.FromNotPattern, + FromExistsPattern = pattern.FromExistsPattern, + CompositePattern = pattern.CompositePattern; - addRegexToken('Q', match1); - addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); +var parseConstraint = function (constraint) { + if (typeof constraint === 'function') { + // No parsing is needed for constraint functions + return constraint; + } + return parser.parseConstraint(constraint); +}; - // MOMENTS +var parseExtra = extd + .switcher() + .isUndefinedOrNull(function () { + return null; + }) + .isLike(/^from +/, function (s) { + return {from: s.replace(/^from +/, "").replace(/^\s*|\s*$/g, "")}; + }) + .def(function (o) { + throw new Error("invalid rule constraint option " + o); + }) + .switcher(); - function getSetQuarter(input) { - return input == null - ? Math.ceil((this.month() + 1) / 3) - : this.month((input - 1) * 3 + (this.month() % 3)); - } +var normailizeConstraint = extd + .switcher() + .isLength(1, function (c) { + throw new Error("invalid rule constraint " + format("%j", [c])); + }) + .isLength(2, function (c) { + c.push("true"); + return c; + }) + //handle case where c[2] is a hash rather than a constraint string + .isLength(3, function (c) { + if (isString(c[2]) && /^from +/.test(c[2])) { + var extra = c[2]; + c.splice(2, 0, "true"); + c[3] = null; + c[4] = parseExtra(extra); + } else if (isHash(c[2])) { + c.splice(2, 0, "true"); + } + return c; + }) + //handle case where c[3] is a from clause rather than a hash for references + .isLength(4, function (c) { + if (isString(c[3])) { + c.splice(3, 0, null); + c[4] = parseExtra(c[4]); + } + return c; + }) + .def(function (c) { + if (c.length === 5) { + c[4] = parseExtra(c[4]); + } + return c; + }) + .switcher(); - // FORMATTING +var getParamType = function getParamType(type, scope) { + scope = scope || {}; + var getParamTypeSwitch = extd + .switcher() + .isEq("string", function () { + return String; + }) + .isEq("date", function () { + return Date; + }) + .isEq("array", function () { + return Array; + }) + .isEq("boolean", function () { + return Boolean; + }) + .isEq("regexp", function () { + return RegExp; + }) + .isEq("number", function () { + return Number; + }) + .isEq("object", function () { + return Object; + }) + .isEq("hash", function () { + return Object; + }) + .def(function (param) { + throw new TypeError("invalid param type " + param); + }) + .switcher(); - addFormatToken('D', ['DD', 2], 'Do', 'date'); + var _getParamType = extd + .switcher() + .isString(function (param) { + var t = scope[param]; + if (!t) { + return getParamTypeSwitch(param.toLowerCase()); + } else { + return t; + } + }) + .isFunction(function (func) { + return func; + }) + .deepEqual([], function () { + return Array; + }) + .def(function (param) { + throw new Error("invalid param type " + param); + }) + .switcher(); - // ALIASES + return _getParamType(type); +}; - addUnitAlias('date', 'D'); +var parsePattern = extd + .switcher() + .containsAt("or", 0, function (condition) { + condition.shift(); + return extd(condition).map(function (cond) { + cond.scope = condition.scope; + return parsePattern(cond); + }).flatten().value(); + }) + .containsAt("not", 0, function (condition) { + condition.shift(); + condition = normailizeConstraint(condition); + if (condition[4] && condition[4].from) { + return [ + new FromNotPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + parseConstraint(condition[4].from), + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } else { + return [ + new NotPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } + }) + .containsAt("exists", 0, function (condition) { + condition.shift(); + condition = normailizeConstraint(condition); + if (condition[4] && condition[4].from) { + return [ + new FromExistsPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + parseConstraint(condition[4].from), + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } else { + return [ + new ExistsPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } + }) + .def(function (condition) { + if (typeof condition === 'function') { + return [condition]; + } + condition = normailizeConstraint(condition); + if (condition[4] && condition[4].from) { + return [ + new FromPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + parseConstraint(condition[4].from), + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } else { + return [ + new ObjectPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } + }).switcher(); - // PRIORITY - addUnitPriority('date', 9); +var Rule = declare({ + instance: { + constructor: function (name, options, pattern, cb) { + this.name = name; + this.pattern = pattern; + this.cb = cb; + if (options.agendaGroup) { + this.agendaGroup = options.agendaGroup; + this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false; + } + this.priority = options.priority || options.salience || 0; + }, - // PARSING + fire: function (flow, match) { + var ret = new Promise(), cb = this.cb; + try { + if (cb.length === 3) { + cb.call(flow, match.factHash, flow, ret.resolve); + } else { + ret = cb.call(flow, match.factHash, flow); + } + } catch (e) { + ret.errback(e); + } + return ret; + } + } +}); - addRegexToken('D', match1to2); - addRegexToken('DD', match1to2, match2); - addRegexToken('Do', function (isStrict, locale) { - // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict - ? locale._dayOfMonthOrdinalParse || locale._ordinalParse - : locale._dayOfMonthOrdinalParseLenient; +function createRule(name, options, conditions, cb) { + if (isArray(options)) { + cb = conditions; + conditions = options; + } else { + options = options || {}; + } + var isRules = extd.every(conditions, function (cond) { + return isArray(cond); }); + if (isRules && conditions.length === 1) { + conditions = conditions[0]; + isRules = false; + } + var rules = []; + var scope = options.scope || {}; + conditions.scope = scope; + if (isRules) { + var _mergePatterns = function (patt, i) { + if (!patterns[i]) { + patterns[i] = i === 0 ? [] : patterns[i - 1].slice(); + //remove dup + if (i !== 0) { + patterns[i].pop(); + } + patterns[i].push(patt); + } else { + extd(patterns).forEach(function (p) { + p.push(patt); + }); + } - addParseToken(['D', 'DD'], DATE); - addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0]); - }); + }; + var l = conditions.length, patterns = [], condition; + for (var i = 0; i < l; i++) { + condition = conditions[i]; + condition.scope = scope; + extd.forEach(parsePattern(condition), _mergePatterns); - // MOMENTS + } + rules = extd.map(patterns, function (patterns) { + var compPat = null; + for (var i = 0; i < patterns.length; i++) { + if (compPat === null) { + compPat = new CompositePattern(patterns[i++], patterns[i]); + } else { + compPat = new CompositePattern(compPat, patterns[i]); + } + } + return new Rule(name, options, compPat, cb); + }); + } else { + rules = extd.map(parsePattern(conditions), function (cond) { + return new Rule(name, options, cond, cb); + }); + } + return rules; +} - var getSetDayOfMonth = makeGetSet('Date', true); +exports.createRule = createRule; - // FORMATTING - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - // ALIASES - addUnitAlias('dayOfYear', 'DDD'); - // PRIORITY - addUnitPriority('dayOfYear', 4); +/***/ }), - // PARSING +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); +"use strict"; - // HELPERS +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js"), + LinkedList = __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, + id = 0; - // MOMENTS +var Fact = declare({ - function getSetDayOfYear(input) { - var dayOfYear = - Math.round( - (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 - ) + 1; - return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); - } + instance: { + constructor: function (obj) { + this.object = obj; + this.recency = 0; + this.id = id++; + }, - // FORMATTING + equals: function (fact) { + return fact === this.object; + }, - addFormatToken('m', ['mm', 2], 0, 'minute'); + hashCode: function () { + return this.id; + } + } - // ALIASES +}); - addUnitAlias('minute', 'm'); +declare({ - // PRIORITY + instance: { - addUnitPriority('minute', 14); + constructor: function () { + this.recency = 0; + this.facts = new LinkedList(); + }, - // PARSING + dispose: function () { + this.facts.clear(); + }, - addRegexToken('m', match1to2); - addRegexToken('mm', match1to2, match2); - addParseToken(['m', 'mm'], MINUTE); + getFacts: function () { + var head = {next: this.facts.head}, ret = [], i = 0, val; + while ((head = head.next)) { + if (!((val = head.data.object) instanceof InitialFact)) { + ret[i++] = val; + } + } + return ret; + }, - // MOMENTS + getFactsByType: function (Type) { + var head = {next: this.facts.head}, ret = [], i = 0; + while ((head = head.next)) { + var val = head.data.object; + if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) { + ret[i++] = val; + } + } + return ret; + }, - var getSetMinute = makeGetSet('Minutes', false); + getFactHandle: function (o) { + var head = {next: this.facts.head}, ret; + while ((head = head.next)) { + var existingFact = head.data; + if (existingFact.equals(o)) { + return existingFact; + } + } + if (!ret) { + ret = new Fact(o); + ret.recency = this.recency++; + //this.facts.push(ret); + } + return ret; + }, - // FORMATTING + modifyFact: function (fact) { + var head = {next: this.facts.head}; + while ((head = head.next)) { + var existingFact = head.data; + if (existingFact.equals(fact)) { + existingFact.recency = this.recency++; + return existingFact; + } + } + //if we made it here we did not find the fact + throw new Error("the fact to modify does not exist"); + }, - addFormatToken('s', ['ss', 2], 0, 'second'); + assertFact: function (fact) { + var ret = new Fact(fact); + ret.recency = this.recency++; + this.facts.push(ret); + return ret; + }, - // ALIASES + retractFact: function (fact) { + var facts = this.facts, head = {next: facts.head}; + while ((head = head.next)) { + var existingFact = head.data; + if (existingFact.equals(fact)) { + facts.remove(head); + return existingFact; + } + } + //if we made it here we did not find the fact + throw new Error("the fact to remove does not exist"); - addUnitAlias('second', 's'); - // PRIORITY + } + } - addUnitPriority('second', 15); +}).as(exports, "WorkingMemory"); - // PARSING - addRegexToken('s', match1to2); - addRegexToken('ss', match1to2, match2); - addParseToken(['s', 'ss'], SECOND); - // MOMENTS +/***/ }), - var getSetSecond = makeGetSet('Seconds', false); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js ***! + \***************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - // FORMATTING +(function () { + "use strict"; + /*global extended isExtended*/ - addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); - }); + function defineObject(extended, is, arr) { - addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); - }); + var deepEqual = is.deepEqual, + isString = is.isString, + isHash = is.isHash, + difference = arr.difference, + hasOwn = Object.prototype.hasOwnProperty, + isFunction = is.isFunction; - addFormatToken(0, ['SSS', 3], 0, 'millisecond'); - addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; - }); - addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; - }); - addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; - }); - addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; - }); - addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; - }); - addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; - }); + function _merge(target, source) { + var name, s; + for (name in source) { + if (hasOwn.call(source, name)) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; + } - // ALIASES + function _deepMerge(target, source) { + var name, s, t; + for (name in source) { + if (hasOwn.call(source, name)) { + s = source[name]; + t = target[name]; + if (!deepEqual(t, s)) { + if (isHash(t) && isHash(s)) { + target[name] = _deepMerge(t, s); + } else if (isHash(s)) { + target[name] = _deepMerge({}, s); + } else { + target[name] = s; + } + } + } + } + return target; + } - addUnitAlias('millisecond', 'ms'); - // PRIORITY + function merge(obj) { + if (!obj) { + obj = {}; + } + for (var i = 1, l = arguments.length; i < l; i++) { + _merge(obj, arguments[i]); + } + return obj; // Object + } - addUnitPriority('millisecond', 16); + function deepMerge(obj) { + if (!obj) { + obj = {}; + } + for (var i = 1, l = arguments.length; i < l; i++) { + _deepMerge(obj, arguments[i]); + } + return obj; // Object + } - // PARSING - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); + function extend(parent, child) { + var proto = parent.prototype || parent; + merge(proto, child); + return parent; + } - var token, getSetMillisecond; - for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); - } + function forEach(hash, iterator, scope) { + if (!isHash(hash) || !isFunction(iterator)) { + throw new TypeError(); + } + var objKeys = keys(hash), key; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + iterator.call(scope || hash, hash[key], key, hash); + } + return hash; + } - function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); - } + function filter(hash, iterator, scope) { + if (!isHash(hash) || !isFunction(iterator)) { + throw new TypeError(); + } + var objKeys = keys(hash), key, value, ret = {}; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + value = hash[key]; + if (iterator.call(scope || hash, value, key, hash)) { + ret[key] = value; + } + } + return ret; + } - for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); - } + function values(hash) { + if (!isHash(hash)) { + throw new TypeError(); + } + var objKeys = keys(hash), ret = []; + for (var i = 0, len = objKeys.length; i < len; ++i) { + ret.push(hash[objKeys[i]]); + } + return ret; + } - getSetMillisecond = makeGetSet('Milliseconds', false); - // FORMATTING + function keys(hash) { + if (!isHash(hash)) { + throw new TypeError(); + } + var ret = []; + for (var i in hash) { + if (hasOwn.call(hash, i)) { + ret.push(i); + } + } + return ret; + } - addFormatToken('z', 0, 0, 'zoneAbbr'); - addFormatToken('zz', 0, 0, 'zoneName'); + function invert(hash) { + if (!isHash(hash)) { + throw new TypeError(); + } + var objKeys = keys(hash), key, ret = {}; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + ret[hash[key]] = key; + } + return ret; + } - // MOMENTS + function toArray(hash) { + if (!isHash(hash)) { + throw new TypeError(); + } + var objKeys = keys(hash), key, ret = []; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + ret.push([key, hash[key]]); + } + return ret; + } - function getZoneAbbr() { - return this._isUTC ? 'UTC' : ''; - } + function omit(hash, omitted) { + if (!isHash(hash)) { + throw new TypeError(); + } + if (isString(omitted)) { + omitted = [omitted]; + } + var objKeys = difference(keys(hash), omitted), key, ret = {}; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + ret[key] = hash[key]; + } + return ret; + } - function getZoneName() { - return this._isUTC ? 'Coordinated Universal Time' : ''; - } + var hash = { + forEach: forEach, + filter: filter, + invert: invert, + values: values, + toArray: toArray, + keys: keys, + omit: omit + }; - var proto = Moment.prototype; - proto.add = add; - proto.calendar = calendar$1; - proto.clone = clone; - proto.diff = diff; - proto.endOf = endOf; - proto.format = format; - proto.from = from; - proto.fromNow = fromNow; - proto.to = to; - proto.toNow = toNow; - proto.get = stringGet; - proto.invalidAt = invalidAt; - proto.isAfter = isAfter; - proto.isBefore = isBefore; - proto.isBetween = isBetween; - proto.isSame = isSame; - proto.isSameOrAfter = isSameOrAfter; - proto.isSameOrBefore = isSameOrBefore; - proto.isValid = isValid$2; - proto.lang = lang; - proto.locale = locale; - proto.localeData = localeData; - proto.max = prototypeMax; - proto.min = prototypeMin; - proto.parsingFlags = parsingFlags; - proto.set = stringSet; - proto.startOf = startOf; - proto.subtract = subtract; - proto.toArray = toArray; - proto.toObject = toObject; - proto.toDate = toDate; - proto.toISOString = toISOString; - proto.inspect = inspect; - if (typeof Symbol !== 'undefined' && Symbol.for != null) { - proto[Symbol.for('nodejs.util.inspect.custom')] = function () { - return 'Moment<' + this.format() + '>'; + var obj = { + extend: extend, + merge: merge, + deepMerge: deepMerge, + omit: omit }; - } - proto.toJSON = toJSON; - proto.toString = toString; - proto.unix = unix; - proto.valueOf = valueOf; - proto.creationData = creationData; - proto.eraName = getEraName; - proto.eraNarrow = getEraNarrow; - proto.eraAbbr = getEraAbbr; - proto.eraYear = getEraYear; - proto.year = getSetYear; - proto.isLeapYear = getIsLeapYear; - proto.weekYear = getSetWeekYear; - proto.isoWeekYear = getSetISOWeekYear; - proto.quarter = proto.quarters = getSetQuarter; - proto.month = getSetMonth; - proto.daysInMonth = getDaysInMonth; - proto.week = proto.weeks = getSetWeek; - proto.isoWeek = proto.isoWeeks = getSetISOWeek; - proto.weeksInYear = getWeeksInYear; - proto.weeksInWeekYear = getWeeksInWeekYear; - proto.isoWeeksInYear = getISOWeeksInYear; - proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; - proto.date = getSetDayOfMonth; - proto.day = proto.days = getSetDayOfWeek; - proto.weekday = getSetLocaleDayOfWeek; - proto.isoWeekday = getSetISODayOfWeek; - proto.dayOfYear = getSetDayOfYear; - proto.hour = proto.hours = getSetHour; - proto.minute = proto.minutes = getSetMinute; - proto.second = proto.seconds = getSetSecond; - proto.millisecond = proto.milliseconds = getSetMillisecond; - proto.utcOffset = getSetOffset; - proto.utc = setOffsetToUTC; - proto.local = setOffsetToLocal; - proto.parseZone = setOffsetToParsedOffset; - proto.hasAlignedHourOffset = hasAlignedHourOffset; - proto.isDST = isDaylightSavingTime; - proto.isLocal = isLocal; - proto.isUtcOffset = isUtcOffset; - proto.isUtc = isUtc; - proto.isUTC = isUtc; - proto.zoneAbbr = getZoneAbbr; - proto.zoneName = getZoneName; - proto.dates = deprecate( - 'dates accessor is deprecated. Use date instead.', - getSetDayOfMonth - ); - proto.months = deprecate( - 'months accessor is deprecated. Use month instead', - getSetMonth - ); - proto.years = deprecate( - 'years accessor is deprecated. Use year instead', - getSetYear - ); - proto.zone = deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', - getSetZone - ); - proto.isDSTShifted = deprecate( - 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', - isDaylightSavingTimeShifted - ); - - function createUnix(input) { - return createLocal(input * 1000); - } - function createInZone() { - return createLocal.apply(null, arguments).parseZone(); - } + var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj); + var orig = ret.extend; + ret.extend = function __extend() { + if (arguments.length === 1) { + return orig.extend.apply(ret, arguments); + } else { + extend.apply(null, arguments); + } + }; + return ret; - function preParsePostFormat(string) { - return string; } - var proto$1 = Locale.prototype; - - proto$1.calendar = calendar; - proto$1.longDateFormat = longDateFormat; - proto$1.invalidDate = invalidDate; - proto$1.ordinal = ordinal; - proto$1.preparse = preParsePostFormat; - proto$1.postformat = preParsePostFormat; - proto$1.relativeTime = relativeTime; - proto$1.pastFuture = pastFuture; - proto$1.set = set; - proto$1.eras = localeEras; - proto$1.erasParse = localeErasParse; - proto$1.erasConvertYear = localeErasConvertYear; - proto$1.erasAbbrRegex = erasAbbrRegex; - proto$1.erasNameRegex = erasNameRegex; - proto$1.erasNarrowRegex = erasNarrowRegex; + if (true) { + if ( true && module.exports) { + module.exports = defineObject(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")); - proto$1.months = localeMonths; - proto$1.monthsShort = localeMonthsShort; - proto$1.monthsParse = localeMonthsParse; - proto$1.monthsRegex = monthsRegex; - proto$1.monthsShortRegex = monthsShortRegex; - proto$1.week = localeWeek; - proto$1.firstDayOfYear = localeFirstDayOfYear; - proto$1.firstDayOfWeek = localeFirstDayOfWeek; + } + } else {} - proto$1.weekdays = localeWeekdays; - proto$1.weekdaysMin = localeWeekdaysMin; - proto$1.weekdaysShort = localeWeekdaysShort; - proto$1.weekdaysParse = localeWeekdaysParse; +}).call(this); - proto$1.weekdaysRegex = weekdaysRegex; - proto$1.weekdaysShortRegex = weekdaysShortRegex; - proto$1.weekdaysMinRegex = weekdaysMinRegex; - proto$1.isPM = localeIsPM; - proto$1.meridiem = localeMeridiem; - function get$1(format, index, field, setter) { - var locale = getLocale(), - utc = createUTC().set(setter, index); - return locale[field](utc, format); - } - function listMonthsImpl(format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } - format = format || ''; - if (index != null) { - return get$1(format, index, field, 'month'); - } - var i, - out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, 'month'); - } - return out; - } - // () - // (5) - // (fmt, 5) - // (fmt) - // (true) - // (true, 5) - // (true, fmt, 5) - // (true, fmt) - function listWeekdaysImpl(localeSorted, format, index, field) { - if (typeof localeSorted === 'boolean') { - if (isNumber(format)) { - index = format; - format = undefined; - } +/***/ }), - format = format || ''; - } else { - format = localeSorted; - index = format; - localeSorted = false; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js ***! + \****************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - if (isNumber(format)) { - index = format; - format = undefined; - } +(function () { + "use strict"; + /*global setImmediate, MessageChannel*/ - format = format || ''; - } - var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0, - i, - out = []; + function definePromise(declare, extended, array, is, fn, args) { - if (index != null) { - return get$1(format, (index + shift) % 7, field, 'day'); + var forEach = array.forEach, + isUndefinedOrNull = is.isUndefinedOrNull, + isArray = is.isArray, + isFunction = is.isFunction, + isBoolean = is.isBoolean, + bind = fn.bind, + bindIgnore = fn.bindIgnore, + argsToArray = args.argsToArray; + + function createHandler(fn, promise) { + return function _handler() { + try { + when(fn.apply(null, arguments)) + .addCallback(promise) + .addErrback(promise); + } catch (e) { + promise.errback(e); + } + }; } - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, 'day'); + var nextTick; + if (typeof setImmediate === "function") { + // In IE10, or use https://github.com/NobleJS/setImmediate + if (typeof window !== "undefined") { + nextTick = setImmediate.bind(window); + } else { + nextTick = setImmediate; + } + } else if (typeof process !== "undefined") { + // node + nextTick = function (cb) { + process.nextTick(cb); + }; + } else if (typeof MessageChannel !== "undefined") { + // modern browsers + // http://www.nonblocking.io/2011/06/windownexttick.html + var channel = new MessageChannel(); + // linked list of tasks (single, with head node) + var head = {}, tail = head; + channel.port1.onmessage = function () { + head = head.next; + var task = head.task; + delete head.task; + task(); + }; + nextTick = function (task) { + tail = tail.next = {task: task}; + channel.port2.postMessage(0); + }; + } else { + // old browsers + nextTick = function (task) { + setTimeout(task, 0); + }; } - return out; - } - function listMonths(format, index) { - return listMonthsImpl(format, index, 'months'); - } - function listMonthsShort(format, index) { - return listMonthsImpl(format, index, 'monthsShort'); - } + //noinspection JSHint + var Promise = declare({ + instance: { + __fired: false, - function listWeekdays(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); - } + __results: null, - function listWeekdaysShort(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); - } + __error: null, - function listWeekdaysMin(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); - } + __errorCbs: null, - getSetGlobalLocale('en', { - eras: [ - { - since: '0001-01-01', - until: +Infinity, - offset: 1, - name: 'Anno Domini', - narrow: 'AD', - abbr: 'AD', - }, - { - since: '0000-12-31', - until: -Infinity, - offset: 1, - name: 'Before Christ', - narrow: 'BC', - abbr: 'BC', - }, - ], - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal: function (number) { - var b = number % 10, - output = - toInt((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - }); + __cbs: null, - // Side effect imports + constructor: function () { + this.__errorCbs = []; + this.__cbs = []; + fn.bindAll(this, ["callback", "errback", "resolve", "classic", "__resolve", "addCallback", "addErrback"]); + }, - hooks.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - getSetGlobalLocale - ); - hooks.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - getLocale - ); + __resolve: function () { + if (!this.__fired) { + this.__fired = true; + var cbs = this.__error ? this.__errorCbs : this.__cbs, + len = cbs.length, i, + results = this.__error || this.__results; + for (i = 0; i < len; i++) { + this.__callNextTick(cbs[i], results); + } - var mathAbs = Math.abs; + } + }, - function abs() { - var data = this._data; + __callNextTick: function (cb, results) { + nextTick(function () { + cb.apply(this, results); + }); + }, - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); + addCallback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.callback) { + cb = cb.callback; + } + if (this.__fired && this.__results) { + this.__callNextTick(cb, this.__results); + } else { + this.__cbs.push(cb); + } + } + return this; + }, - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - return this; - } + addErrback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.errback) { + cb = cb.errback; + } + if (this.__fired && this.__error) { + this.__callNextTick(cb, this.__error); + } else { + this.__errorCbs.push(cb); + } + } + return this; + }, - function addSubtract$1(duration, input, value, direction) { - var other = createDuration(input, value); + callback: function (args) { + if (!this.__fired) { + this.__results = arguments; + this.__resolve(); + } + return this.promise(); + }, - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; + errback: function (args) { + if (!this.__fired) { + this.__error = arguments; + this.__resolve(); + } + return this.promise(); + }, - return duration._bubble(); - } + resolve: function (err, args) { + if (err) { + this.errback(err); + } else { + this.callback.apply(this, argsToArray(arguments, 1)); + } + return this; + }, - // supports only 2.0-style add(1, 's') or add(duration) - function add$1(input, value) { - return addSubtract$1(this, input, value, 1); - } + classic: function (cb) { + if ("function" === typeof cb) { + this.addErrback(function (err) { + cb(err); + }); + this.addCallback(function () { + cb.apply(this, [null].concat(argsToArray(arguments))); + }); + } + return this; + }, - // supports only 2.0-style subtract(1, 's') or subtract(duration) - function subtract$1(input, value) { - return addSubtract$1(this, input, value, -1); - } + then: function (callback, errback) { - function absCeil(number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } - } + var promise = new Promise(), errorHandler = promise; + if (isFunction(errback)) { + errorHandler = createHandler(errback, promise); + } + this.addErrback(errorHandler); + if (isFunction(callback)) { + this.addCallback(createHandler(callback, promise)); + } else { + this.addCallback(promise); + } - function bubble() { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, - minutes, - hours, - years, - monthsFromDays; + return promise.promise(); + }, - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if ( - !( - (milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0) - ) - ) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } + both: function (callback) { + return this.then(callback, callback); + }, - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + promise: function () { + var ret = { + then: bind(this, "then"), + both: bind(this, "both"), + promise: function () { + return ret; + } + }; + forEach(["addCallback", "addErrback", "classic"], function (action) { + ret[action] = bind(this, function () { + this[action].apply(this, arguments); + return ret; + }); + }, this); - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; + return ret; + } - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - hours = absFloor(minutes / 60); - data.hours = hours % 24; + } + }); - days += absFloor(hours / 24); - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); + var PromiseList = Promise.extend({ + instance: { - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; + /*@private*/ + __results: null, - data.days = days; - data.months = months; - data.years = years; + /*@private*/ + __errors: null, - return this; - } + /*@private*/ + __promiseLength: 0, - function daysToMonths(days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return (days * 4800) / 146097; - } + /*@private*/ + __defLength: 0, - function monthsToDays(months) { - // the reverse of daysToMonths - return (months * 146097) / 4800; - } + /*@private*/ + __firedLength: 0, - function as(units) { - if (!this.isValid()) { - return NaN; - } - var days, - months, - milliseconds = this._milliseconds; + normalizeResults: false, - units = normalizeUnits(units); + constructor: function (defs, normalizeResults) { + this.__errors = []; + this.__results = []; + this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false; + this._super(arguments); + if (defs && defs.length) { + this.__defLength = defs.length; + forEach(defs, this.__addPromise, this); + } else { + this.__resolve(); + } + }, - if (units === 'month' || units === 'quarter' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - switch (units) { - case 'month': - return months; - case 'quarter': - return months / 3; - case 'year': - return months / 12; - } - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week': - return days / 7 + milliseconds / 6048e5; - case 'day': - return days + milliseconds / 864e5; - case 'hour': - return days * 24 + milliseconds / 36e5; - case 'minute': - return days * 1440 + milliseconds / 6e4; - case 'second': - return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': - return Math.floor(days * 864e5) + milliseconds; - default: - throw new Error('Unknown unit ' + units); - } - } - } + __addPromise: function (promise, i) { + promise.then( + bind(this, function () { + var args = argsToArray(arguments); + args.unshift(i); + this.callback.apply(this, args); + }), + bind(this, function () { + var args = argsToArray(arguments); + args.unshift(i); + this.errback.apply(this, args); + }) + ); + }, - // TODO: Use this.as('ms')? - function valueOf$1() { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } + __resolve: function () { + if (!this.__fired) { + this.__fired = true; + var cbs = this.__errors.length ? this.__errorCbs : this.__cbs, + len = cbs.length, i, + results = this.__errors.length ? this.__errors : this.__results; + for (i = 0; i < len; i++) { + this.__callNextTick(cbs[i], results); + } - function makeAs(alias) { - return function () { - return this.as(alias); - }; - } + } + }, - var asMilliseconds = makeAs('ms'), - asSeconds = makeAs('s'), - asMinutes = makeAs('m'), - asHours = makeAs('h'), - asDays = makeAs('d'), - asWeeks = makeAs('w'), - asMonths = makeAs('M'), - asQuarters = makeAs('Q'), - asYears = makeAs('y'); + __callNextTick: function (cb, results) { + nextTick(function () { + cb.apply(null, [results]); + }); + }, - function clone$1() { - return createDuration(this); - } + addCallback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.callback) { + cb = bind(cb, "callback"); + } + if (this.__fired && !this.__errors.length) { + this.__callNextTick(cb, this.__results); + } else { + this.__cbs.push(cb); + } + } + return this; + }, - function get$2(units) { - units = normalizeUnits(units); - return this.isValid() ? this[units + 's']() : NaN; - } + addErrback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.errback) { + cb = bind(cb, "errback"); + } + if (this.__fired && this.__errors.length) { + this.__callNextTick(cb, this.__errors); + } else { + this.__errorCbs.push(cb); + } + } + return this; + }, - function makeGetter(name) { - return function () { - return this.isValid() ? this._data[name] : NaN; - }; - } - var milliseconds = makeGetter('milliseconds'), - seconds = makeGetter('seconds'), - minutes = makeGetter('minutes'), - hours = makeGetter('hours'), - days = makeGetter('days'), - months = makeGetter('months'), - years = makeGetter('years'); + callback: function (i) { + if (this.__fired) { + throw new Error("Already fired!"); + } + var args = argsToArray(arguments); + if (this.normalizeResults) { + args = args.slice(1); + args = args.length === 1 ? args.pop() : args; + } + this.__results[i] = args; + this.__firedLength++; + if (this.__firedLength === this.__defLength) { + this.__resolve(); + } + return this.promise(); + }, - function weeks() { - return absFloor(this.days() / 7); - } - var round = Math.round, - thresholds = { - ss: 44, // a few seconds to seconds - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month/week - w: null, // weeks to month - M: 11, // months to year - }; + errback: function (i) { + if (this.__fired) { + throw new Error("Already fired!"); + } + var args = argsToArray(arguments); + if (this.normalizeResults) { + args = args.slice(1); + args = args.length === 1 ? args.pop() : args; + } + this.__errors[i] = args; + this.__firedLength++; + if (this.__firedLength === this.__defLength) { + this.__resolve(); + } + return this.promise(); + } - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + } + }); - function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { - var duration = createDuration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - weeks = round(duration.as('w')), - years = round(duration.as('y')), - a = - (seconds <= thresholds.ss && ['s', seconds]) || - (seconds < thresholds.s && ['ss', seconds]) || - (minutes <= 1 && ['m']) || - (minutes < thresholds.m && ['mm', minutes]) || - (hours <= 1 && ['h']) || - (hours < thresholds.h && ['hh', hours]) || - (days <= 1 && ['d']) || - (days < thresholds.d && ['dd', days]); - if (thresholds.w != null) { - a = - a || - (weeks <= 1 && ['w']) || - (weeks < thresholds.w && ['ww', weeks]); + function callNext(list, results, propogate) { + var ret = new Promise().callback(); + forEach(list, function (listItem) { + ret = ret.then(propogate ? listItem : bindIgnore(null, listItem)); + if (!propogate) { + ret = ret.then(function (res) { + results.push(res); + return results; + }); + } + }); + return ret; } - a = a || - (months <= 1 && ['M']) || - (months < thresholds.M && ['MM', months]) || - (years <= 1 && ['y']) || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } - // This function allows you to set the rounding function for relative time strings - function getSetRelativeTimeRounding(roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof roundingFunction === 'function') { - round = roundingFunction; - return true; + function isPromiseLike(obj) { + return !isUndefinedOrNull(obj) && (isFunction(obj.then)); } - return false; - } - // This function allows you to set a threshold for relative time strings - function getSetRelativeTimeThreshold(threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; + function wrapThenPromise(p) { + var ret = new Promise(); + p.then(bind(ret, "callback"), bind(ret, "errback")); + return ret.promise(); } - if (limit === undefined) { - return thresholds[threshold]; + + function when(args) { + var p; + args = argsToArray(arguments); + if (!args.length) { + p = new Promise().callback(args).promise(); + } else if (args.length === 1) { + args = args.pop(); + if (isPromiseLike(args)) { + if (args.addCallback && args.addErrback) { + p = new Promise(); + args.addCallback(p.callback); + args.addErrback(p.errback); + } else { + p = wrapThenPromise(args); + } + } else if (isArray(args) && array.every(args, isPromiseLike)) { + p = new PromiseList(args, true).promise(); + } else { + p = new Promise().callback(args); + } + } else { + p = new PromiseList(array.map(args, function (a) { + return when(a); + }), true).promise(); + } + return p; + } - thresholds[threshold] = limit; - if (threshold === 's') { - thresholds.ss = limit - 1; + + function wrap(fn, scope) { + return function _wrap() { + var ret = new Promise(); + var args = argsToArray(arguments); + args.push(ret.resolve); + fn.apply(scope || this, args); + return ret.promise(); + }; } - return true; - } - function humanize(argWithSuffix, argThresholds) { - if (!this.isValid()) { - return this.localeData().invalidDate(); + function serial(list) { + if (isArray(list)) { + return callNext(list, [], false); + } else { + throw new Error("When calling promise.serial the first argument must be an array"); + } } - var withSuffix = false, - th = thresholds, - locale, - output; - if (typeof argWithSuffix === 'object') { - argThresholds = argWithSuffix; - argWithSuffix = false; - } - if (typeof argWithSuffix === 'boolean') { - withSuffix = argWithSuffix; - } - if (typeof argThresholds === 'object') { - th = Object.assign({}, thresholds, argThresholds); - if (argThresholds.s != null && argThresholds.ss == null) { - th.ss = argThresholds.s - 1; + function chain(list) { + if (isArray(list)) { + return callNext(list, [], true); + } else { + throw new Error("When calling promise.serial the first argument must be an array"); } } - locale = this.localeData(); - output = relativeTime$1(this, !withSuffix, th, locale); - if (withSuffix) { - output = locale.pastFuture(+this, output); + function wait(args, fn) { + args = argsToArray(arguments); + var resolved = false; + fn = args.pop(); + var p = when(args); + return function waiter() { + if (!resolved) { + args = arguments; + return p.then(bind(this, function doneWaiting() { + resolved = true; + return fn.apply(this, args); + })); + } else { + return when(fn.apply(this, arguments)); + } + }; } - return locale.postformat(output); - } + function createPromise() { + return new Promise(); + } - var abs$1 = Math.abs; + function createPromiseList(promises) { + return new PromiseList(promises, true).promise(); + } - function sign(x) { - return (x > 0) - (x < 0) || +x; - } + function createRejected(val) { + return createPromise().errback(val); + } - function toISOString$1() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - if (!this.isValid()) { - return this.localeData().invalidDate(); + function createResolved(val) { + return createPromise().callback(val); } - var seconds = abs$1(this._milliseconds) / 1000, - days = abs$1(this._days), - months = abs$1(this._months), - minutes, - hours, - years, - s, - total = this.asSeconds(), - totalSign, - ymSign, - daysSign, - hmsSign; - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + return extended + .define({ + isPromiseLike: isPromiseLike + }).expose({ + isPromiseLike: isPromiseLike, + when: when, + wrap: wrap, + wait: wait, + serial: serial, + chain: chain, + Promise: Promise, + PromiseList: PromiseList, + promise: createPromise, + defer: createPromise, + deferredList: createPromiseList, + reject: createRejected, + resolve: createResolved + }); - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; + } - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; + if (true) { + if ( true && module.exports) { + module.exports = definePromise(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js"), __webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + } + } else {} - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; +}).call(this); - totalSign = total < 0 ? '-' : ''; - ymSign = sign(this._months) !== sign(total) ? '-' : ''; - daysSign = sign(this._days) !== sign(total) ? '-' : ''; - hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; - return ( - totalSign + - 'P' + - (years ? ymSign + years + 'Y' : '') + - (months ? ymSign + months + 'M' : '') + - (days ? daysSign + days + 'D' : '') + - (hours || minutes || seconds ? 'T' : '') + - (hours ? hmsSign + hours + 'H' : '') + - (minutes ? hmsSign + minutes + 'M' : '') + - (seconds ? hmsSign + s + 'S' : '') - ); - } - var proto$2 = Duration.prototype; - proto$2.isValid = isValid$1; - proto$2.abs = abs; - proto$2.add = add$1; - proto$2.subtract = subtract$1; - proto$2.as = as; - proto$2.asMilliseconds = asMilliseconds; - proto$2.asSeconds = asSeconds; - proto$2.asMinutes = asMinutes; - proto$2.asHours = asHours; - proto$2.asDays = asDays; - proto$2.asWeeks = asWeeks; - proto$2.asMonths = asMonths; - proto$2.asQuarters = asQuarters; - proto$2.asYears = asYears; - proto$2.valueOf = valueOf$1; - proto$2._bubble = bubble; - proto$2.clone = clone$1; - proto$2.get = get$2; - proto$2.milliseconds = milliseconds; - proto$2.seconds = seconds; - proto$2.minutes = minutes; - proto$2.hours = hours; - proto$2.days = days; - proto$2.weeks = weeks; - proto$2.months = months; - proto$2.years = years; - proto$2.humanize = humanize; - proto$2.toISOString = toISOString$1; - proto$2.toString = toISOString$1; - proto$2.toJSON = toISOString$1; - proto$2.locale = locale; - proto$2.localeData = localeData; - proto$2.toIsoString = deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', - toISOString$1 - ); - proto$2.lang = lang; - // FORMATTING - addFormatToken('X', 0, 0, 'unix'); - addFormatToken('x', 0, 0, 'valueOf'); - // PARSING +/***/ }), - addRegexToken('x', matchSigned); - addRegexToken('X', matchTimestamp); - addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input) * 1000); - }); - addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); - }); +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js ***! + \***************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - //! moment.js +(function () { + "use strict"; - hooks.version = '2.26.0'; + function defineString(extended, is, date, arr) { - setHookCallback(createLocal); + var stringify; + if (typeof JSON === "undefined") { + /* + json2.js + 2012-10-08 - hooks.fn = proto; - hooks.min = min; - hooks.max = max; - hooks.now = now; - hooks.utc = createUTC; - hooks.unix = createUnix; - hooks.months = listMonths; - hooks.isDate = isDate; - hooks.locale = getSetGlobalLocale; - hooks.invalid = createInvalid; - hooks.duration = createDuration; - hooks.isMoment = isMoment; - hooks.weekdays = listWeekdays; - hooks.parseZone = createInZone; - hooks.localeData = getLocale; - hooks.isDuration = isDuration; - hooks.monthsShort = listMonthsShort; - hooks.weekdaysMin = listWeekdaysMin; - hooks.defineLocale = defineLocale; - hooks.updateLocale = updateLocale; - hooks.locales = listLocales; - hooks.weekdaysShort = listWeekdaysShort; - hooks.normalizeUnits = normalizeUnits; - hooks.relativeTimeRounding = getSetRelativeTimeRounding; - hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; - hooks.calendarFormat = getCalendarFormat; - hooks.prototype = proto; + Public Domain. - // currently HTML5 input type only supports 24-hour formats - hooks.HTML5_FMT = { - DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // - DATE: 'YYYY-MM-DD', // - TIME: 'HH:mm', // - TIME_SECONDS: 'HH:mm:ss', // - TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'GGGG-[W]WW', // - MONTH: 'YYYY-MM', // - }; + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + */ - return hooks; + (function () { + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } -}))); + var isPrimitive = is.tester().isString().isNumber().isBoolean().tester(); + function toJSON(obj) { + if (is.isDate(obj)) { + return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' + + f(obj.getUTCMonth() + 1) + '-' + + f(obj.getUTCDate()) + 'T' + + f(obj.getUTCHours()) + ':' + + f(obj.getUTCMinutes()) + ':' + + f(obj.getUTCSeconds()) + 'Z' + : null; + } else if (isPrimitive(obj)) { + return obj.valueOf(); + } + return obj; + } -/***/ }), + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"': '\\"', + '\\': '\\\\' + }, + rep; -/***/ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/src/index.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/calendar-interval/src/index.js ***! - \*******************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const moment = __webpack_require__(/*! moment */ "./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js"); + function quote(string) { + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } -const normalizeStartDate = (intervalStartDate) => { - intervalStartDate = parseInt(intervalStartDate); - if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) { - intervalStartDate = 1; - } + function str(key, holder) { - return intervalStartDate; -}; + var i, k, v, length, mind = gap, partial, value = holder[key]; + if (value) { + value = toJSON(value); + } + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + switch (typeof value) { + case 'string': + return quote(value); + case 'number': + return isFinite(value) ? String(value) : 'null'; + case 'boolean': + case 'null': + return String(value); + case 'object': + if (!value) { + return 'null'; + } + gap += indent; + partial = []; + if (Object.prototype.toString.apply(value) === '[object Array]') { + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } -const getMinimumStartDate = (intervalStartDate, relativeDate) => { - return moment - .min( - relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'), - relativeDate.clone().startOf('month') - ) - .valueOf(); -}; + stringify = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + } else if (typeof space === 'string') { + indent = space; + } + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + return str('', {'': value}); + }; + }()); + } else { + stringify = JSON.stringify; + } -const getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => { - return moment - .min( - relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'), - relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month') - ) - .valueOf(); -}; -const getInterval = (intervalStartDate, referenceDate = moment()) => { - intervalStartDate = normalizeStartDate(intervalStartDate); - if (intervalStartDate === 1) { - return { - start: referenceDate.startOf('month').valueOf(), - end: referenceDate.endOf('month').valueOf() - }; - } + var isHash = is.isHash, aSlice = Array.prototype.slice; - if (intervalStartDate <= referenceDate.date()) { - return { - start: referenceDate.date(intervalStartDate).startOf('day').valueOf(), - end: getMinimumEndDate(intervalStartDate, true, referenceDate) - }; - } + var FORMAT_REGEX = /%((?:-?\+?.?\d*)?|(?:\[[^\[|\]]*\]))?([sjdDZ])/g; + var INTERP_REGEX = /\{(?:\[([^\[|\]]*)\])?(\w+)\}/g; + var STR_FORMAT = /(-?)(\+?)([A-Z|a-z|\W]?)([1-9][0-9]*)?$/; + var OBJECT_FORMAT = /([1-9][0-9]*)$/g; - return { - start: getMinimumStartDate(intervalStartDate, referenceDate), - end: getMinimumEndDate(intervalStartDate, false, referenceDate) - }; -}; + function formatString(string, format) { + var ret = string; + if (STR_FORMAT.test(format)) { + var match = format.match(STR_FORMAT); + var isLeftJustified = match[1], padChar = match[3], width = match[4]; + if (width) { + width = parseInt(width, 10); + if (ret.length < width) { + ret = pad(ret, width, padChar, isLeftJustified); + } else { + ret = truncate(ret, width); + } + } + } + return ret; + } -module.exports = { - // Returns the timestamps of the start and end of the current calendar interval - // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) - // - // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned - // f.e. `intervalStartDate` === 31 would generate next intervals : - // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30] - getCurrent: (intervalStartDate) => getInterval(intervalStartDate), + function formatNumber(number, format) { + var ret; + if (is.isNumber(number)) { + ret = "" + number; + if (STR_FORMAT.test(format)) { + var match = format.match(STR_FORMAT); + var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4]; + if (signed) { + ret = (number > 0 ? "+" : "") + ret; + } + if (width) { + width = parseInt(width, 10); + if (ret.length < width) { + ret = pad(ret, width, padChar || "0", isLeftJustified); + } else { + ret = truncate(ret, width); + } + } - /** - * Returns the timestamps of the start and end of the a calendar interval that contains a reference date - * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) - * @param {Number} timestamp - the reference date the interval should include - * @returns { start: number, end: number } - timestamps that define the calendar interval - */ - getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)), -}; + } + } else { + throw new Error("stringExtended.format : when using %d the parameter must be a number!"); + } + return ret; + } + function formatObject(object, format) { + var ret, match = format.match(OBJECT_FORMAT), spacing = 0; + if (match) { + spacing = parseInt(match[0], 10); + if (isNaN(spacing)) { + spacing = 0; + } + } + try { + ret = stringify(object, null, spacing); + } catch (e) { + throw new Error("stringExtended.format : Unable to parse json from ", object); + } + return ret; + } -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js": -/*!*************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js ***! - \*************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var styles = { + //styles + bold: 1, + bright: 1, + italic: 3, + underline: 4, + blink: 5, + inverse: 7, + crossedOut: 9, -const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); -_.uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); -const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js"); + red: 31, + green: 32, + yellow: 33, + blue: 34, + magenta: 35, + cyan: 36, + white: 37, -const deepCopy = obj => JSON.parse(JSON.stringify(obj)); + redBackground: 41, + greenBackground: 42, + yellowBackground: 43, + blueBackground: 44, + magentaBackground: 45, + cyanBackground: 46, + whiteBackground: 47, -const selfAndParents = function(self) { - const parents = []; - let current = self; - while (current) { - if (parents.includes(current)) { - return parents; - } + encircled: 52, + overlined: 53, + grey: 90, + black: 90 + }; - parents.push(current); - current = current.parent; - } - return parents; -}; + var characters = { + SMILEY: "☺", + SOLID_SMILEY: "☻", + HEART: "♥", + DIAMOND: "♦", + CLOVE: "♣", + SPADE: "♠", + DOT: "•", + SQUARE_CIRCLE: "◘", + CIRCLE: "○", + FILLED_SQUARE_CIRCLE: "◙", + MALE: "♂", + FEMALE: "♀", + EIGHT_NOTE: "♪", + DOUBLE_EIGHTH_NOTE: "♫", + SUN: "☼", + PLAY: "►", + REWIND: "◄", + UP_DOWN: "↕", + PILCROW: "¶", + SECTION: "§", + THICK_MINUS: "▬", + SMALL_UP_DOWN: "↨", + UP_ARROW: "↑", + DOWN_ARROW: "↓", + RIGHT_ARROW: "→", + LEFT_ARROW: "←", + RIGHT_ANGLE: "∟", + LEFT_RIGHT_ARROW: "↔", + TRIANGLE: "▲", + DOWN_TRIANGLE: "▼", + HOUSE: "⌂", + C_CEDILLA: "Ç", + U_UMLAUT: "ü", + E_ACCENT: "é", + A_LOWER_CIRCUMFLEX: "â", + A_LOWER_UMLAUT: "ä", + A_LOWER_GRAVE_ACCENT: "à", + A_LOWER_CIRCLE_OVER: "å", + C_LOWER_CIRCUMFLEX: "ç", + E_LOWER_CIRCUMFLEX: "ê", + E_LOWER_UMLAUT: "ë", + E_LOWER_GRAVE_ACCENT: "è", + I_LOWER_UMLAUT: "ï", + I_LOWER_CIRCUMFLEX: "î", + I_LOWER_GRAVE_ACCENT: "ì", + A_UPPER_UMLAUT: "Ä", + A_UPPER_CIRCLE: "Å", + E_UPPER_ACCENT: "É", + A_E_LOWER: "æ", + A_E_UPPER: "Æ", + O_LOWER_CIRCUMFLEX: "ô", + O_LOWER_UMLAUT: "ö", + O_LOWER_GRAVE_ACCENT: "ò", + U_LOWER_CIRCUMFLEX: "û", + U_LOWER_GRAVE_ACCENT: "ù", + Y_LOWER_UMLAUT: "ÿ", + O_UPPER_UMLAUT: "Ö", + U_UPPER_UMLAUT: "Ü", + CENTS: "¢", + POUND: "£", + YEN: "¥", + CURRENCY: "¤", + PTS: "₧", + FUNCTION: "ƒ", + A_LOWER_ACCENT: "á", + I_LOWER_ACCENT: "í", + O_LOWER_ACCENT: "ó", + U_LOWER_ACCENT: "ú", + N_LOWER_TILDE: "ñ", + N_UPPER_TILDE: "Ñ", + A_SUPER: "ª", + O_SUPER: "º", + UPSIDEDOWN_QUESTION: "¿", + SIDEWAYS_L: "⌐", + NEGATION: "¬", + ONE_HALF: "½", + ONE_FOURTH: "¼", + UPSIDEDOWN_EXCLAMATION: "¡", + DOUBLE_LEFT: "«", + DOUBLE_RIGHT: "»", + LIGHT_SHADED_BOX: "░", + MEDIUM_SHADED_BOX: "▒", + DARK_SHADED_BOX: "▓", + VERTICAL_LINE: "│", + MAZE__SINGLE_RIGHT_T: "┤", + MAZE_SINGLE_RIGHT_TOP: "┐", + MAZE_SINGLE_RIGHT_BOTTOM_SMALL: "┘", + MAZE_SINGLE_LEFT_TOP_SMALL: "┌", + MAZE_SINGLE_LEFT_BOTTOM_SMALL: "└", + MAZE_SINGLE_LEFT_T: "├", + MAZE_SINGLE_BOTTOM_T: "┴", + MAZE_SINGLE_TOP_T: "┬", + MAZE_SINGLE_CENTER: "┼", + MAZE_SINGLE_HORIZONTAL_LINE: "─", + MAZE_SINGLE_RIGHT_DOUBLECENTER_T: "╡", + MAZE_SINGLE_RIGHT_DOUBLE_BL: "╛", + MAZE_SINGLE_RIGHT_DOUBLE_T: "╢", + MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: "╖", + MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: "╕", + MAZE_SINGLE_LEFT_DOUBLE_T: "╞", + MAZE_SINGLE_BOTTOM_DOUBLE_T: "╧", + MAZE_SINGLE_TOP_DOUBLE_T: "╤", + MAZE_SINGLE_TOP_DOUBLECENTER_T: "╥", + MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: "╨", + MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: "╘", + MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: "╒", + MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: "╓", + MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: "╙", + MAZE_SINGLE_LEFT_TOP: "Γ", + MAZE_SINGLE_RIGHT_BOTTOM: "╜", + MAZE_SINGLE_LEFT_CENTER: "╟", + MAZE_SINGLE_DOUBLECENTER_CENTER: "╫", + MAZE_SINGLE_DOUBLECROSS_CENTER: "╪", + MAZE_DOUBLE_LEFT_CENTER: "╣", + MAZE_DOUBLE_VERTICAL: "║", + MAZE_DOUBLE_RIGHT_TOP: "╗", + MAZE_DOUBLE_RIGHT_BOTTOM: "╝", + MAZE_DOUBLE_LEFT_BOTTOM: "╚", + MAZE_DOUBLE_LEFT_TOP: "╔", + MAZE_DOUBLE_BOTTOM_T: "╩", + MAZE_DOUBLE_TOP_T: "╦", + MAZE_DOUBLE_LEFT_T: "╠", + MAZE_DOUBLE_HORIZONTAL: "═", + MAZE_DOUBLE_CROSS: "╬", + SOLID_RECTANGLE: "█", + THICK_LEFT_VERTICAL: "▌", + THICK_RIGHT_VERTICAL: "▐", + SOLID_SMALL_RECTANGLE_BOTTOM: "▄", + SOLID_SMALL_RECTANGLE_TOP: "▀", + PHI_UPPER: "Φ", + INFINITY: "∞", + INTERSECTION: "∩", + DEFINITION: "≡", + PLUS_MINUS: "±", + GT_EQ: "≥", + LT_EQ: "≤", + THEREFORE: "⌠", + SINCE: "∵", + DOESNOT_EXIST: "∄", + EXISTS: "∃", + FOR_ALL: "∀", + EXCLUSIVE_OR: "⊕", + BECAUSE: "⌡", + DIVIDE: "÷", + APPROX: "≈", + DEGREE: "°", + BOLD_DOT: "∙", + DOT_SMALL: "·", + CHECK: "√", + ITALIC_X: "✗", + SUPER_N: "ⁿ", + SQUARED: "²", + CUBED: "³", + SOLID_BOX: "■", + PERMILE: "‰", + REGISTERED_TM: "®", + COPYRIGHT: "©", + TRADEMARK: "™", + BETA: "β", + GAMMA: "γ", + ZETA: "ζ", + ETA: "η", + IOTA: "ι", + KAPPA: "κ", + LAMBDA: "λ", + NU: "ν", + XI: "ξ", + OMICRON: "ο", + RHO: "ρ", + UPSILON: "υ", + CHI_LOWER: "φ", + CHI_UPPER: "χ", + PSI: "ψ", + ALPHA: "α", + ESZETT: "ß", + PI: "π", + SIGMA_UPPER: "Σ", + SIGMA_LOWER: "σ", + MU: "µ", + TAU: "τ", + THETA: "Θ", + OMEGA: "Ω", + DELTA: "δ", + PHI_LOWER: "φ", + EPSILON: "ε" + }; -const extractParentIds = current => selfAndParents(current) - .map(parent => parent._id) - .filter(id => id); + function pad(string, length, ch, end) { + string = "" + string; //check for numbers + ch = ch || " "; + var strLen = string.length; + while (strLen < length) { + if (end) { + string += ch; + } else { + string = ch + string; + } + strLen++; + } + return string; + } -const getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id); + function truncate(string, length, end) { + var ret = string; + if (is.isString(ret)) { + if (string.length > length) { + if (end) { + var l = string.length; + ret = string.substring(l - length, l); + } else { + ret = string.substring(0, length); + } + } + } else { + ret = truncate("" + ret, length); + } + return ret; + } -const getContactIds = (contacts) => { - const ids = []; - contacts.forEach(doc => { - if (!doc) { - return; - } + function format(str, obj) { + if (obj instanceof Array) { + var i = 0, len = obj.length; + //find the matches + return str.replace(FORMAT_REGEX, function (m, format, type) { + var replacer, ret; + if (i < len) { + replacer = obj[i++]; + } else { + //we are out of things to replace with so + //just return the match? + return m; + } + if (m === "%s" || m === "%d" || m === "%D") { + //fast path! + ret = replacer + ""; + } else if (m === "%Z") { + ret = replacer.toUTCString(); + } else if (m === "%j") { + try { + ret = stringify(replacer); + } catch (e) { + throw new Error("stringExtended.format : Unable to parse json from ", replacer); + } + } else { + format = format.replace(/^\[|\]$/g, ""); + switch (type) { + case "s": + ret = formatString(replacer, format); + break; + case "d": + ret = formatNumber(replacer, format); + break; + case "j": + ret = formatObject(replacer, format); + break; + case "D": + ret = date.format(replacer, format); + break; + case "Z": + ret = date.format(replacer, format, true); + break; + } + } + return ret; + }); + } else if (isHash(obj)) { + return str.replace(INTERP_REGEX, function (m, format, value) { + value = obj[value]; + if (!is.isUndefined(value)) { + if (format) { + if (is.isString(value)) { + return formatString(value, format); + } else if (is.isNumber(value)) { + return formatNumber(value, format); + } else if (is.isDate(value)) { + return date.format(value, format); + } else if (is.isObject(value)) { + return formatObject(value, format); + } + } else { + return "" + value; + } + } + return m; + }); + } else { + var args = aSlice.call(arguments).slice(1); + return format(str, args); + } + } - const id = utils.getId(doc.contact); - id && ids.push(id); + function toArray(testStr, delim) { + var ret = []; + if (testStr) { + if (testStr.indexOf(delim) > 0) { + ret = testStr.replace(/\s+/g, "").split(delim); + } + else { + ret.push(testStr); + } + } + return ret; + } - if (!utils.validLinkedDocs(doc)) { - return; - } - Object.keys(doc.linked_docs).forEach(key => { - const id = utils.getId(doc.linked_docs[key]); - id && ids.push(id); - }); - }); + function multiply(str, times) { + var ret = []; + if (times) { + for (var i = 0; i < times; i++) { + ret.push(str); + } + } + return ret.join(""); + } - return _.uniq(ids); -}; -module.exports = function(Promise, DB) { - const fillParentsInDocs = function(doc, lineage) { - if (!doc || !lineage.length) { - return doc; - } + function style(str, options) { + var ret, i, l; + if (options) { + if (is.isArray(str)) { + ret = []; + for (i = 0, l = str.length; i < l; i++) { + ret.push(style(str[i], options)); + } + } else if (options instanceof Array) { + ret = str; + for (i = 0, l = options.length; i < l; i++) { + ret = style(ret, options[i]); + } + } else if (options in styles) { + ret = '\x1B[' + styles[options] + 'm' + str + '\x1B[0m'; + } + } + return ret; + } - // Parent hierarchy starts at the contact for data_records - let currentParent; - if (doc.type === 'data_record') { - currentParent = doc.contact = lineage.shift() || doc.contact; - } else { - // It's a contact - currentParent = doc; - } + function escape(str, except) { + return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function (ch) { + if (except && arr.indexOf(except, ch) !== -1) { + return ch; + } + return "\\" + ch; + }); + } - const parentIds = extractParentIds(currentParent.parent); - lineage.forEach(function(l, i) { - currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] }; - currentParent = currentParent.parent; - }); + function trim(str) { + return str.replace(/^\s*|\s*$/g, ""); + } - return doc; - }; + function trimLeft(str) { + return str.replace(/^\s*/, ""); + } - const fillContactsInDocs = function(docs, contacts) { - if (!contacts || !contacts.length) { - return; - } + function trimRight(str) { + return str.replace(/\s*$/, ""); + } - docs.forEach(function(doc) { - if (!doc) { - return; - } - const id = utils.getId(doc.contact); - const contactDoc = getContactById(contacts, id); - if (contactDoc) { - doc.contact = deepCopy(contactDoc); - } + function isEmpty(str) { + return str.length === 0; + } - if (!utils.validLinkedDocs(doc)) { - return; - } - Object.keys(doc.linked_docs).forEach(key => { - const id = utils.getId(doc.linked_docs[key]); - const contactDoc = getContactById(contacts, id); - if (contactDoc) { - doc.linked_docs[key] = deepCopy(contactDoc); - } - }); - }); - }; + var string = { + toArray: toArray, + pad: pad, + truncate: truncate, + multiply: multiply, + format: format, + style: style, + escape: escape, + trim: trim, + trimLeft: trimLeft, + trimRight: trimRight, + isEmpty: isEmpty + }; + return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters}); + } - const fetchContacts = function(lineage) { - const contactIds = getContactIds(lineage); + if (true) { + if ( true && module.exports) { + module.exports = defineString(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")); - // Only fetch docs that are new to us - const lineageContacts = []; - const contactsToFetch = []; - contactIds.forEach(function(id) { - const contact = getContactById(lineage, id); - if (contact) { - lineageContacts.push(deepCopy(contact)); - } else { - contactsToFetch.push(id); - } - }); + } + } else {} - return fetchDocs(contactsToFetch) - .then(function(fetchedContacts) { - return lineageContacts.concat(fetchedContacts); - }); - }; +}).call(this); - const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage) { - const doc = lineage.shift(); - fillParentsInDocs(doc, lineage); - if (patientLineage && patientLineage.length) { - const patientDoc = patientLineage.shift(); - fillParentsInDocs(patientDoc, patientLineage); - doc.patient = patientDoc; - } - return doc; - }; - const findPatientId = function(doc) { - return ( - doc.type === 'data_record' && - ( - (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || - doc.patient_id - ) - ); - }; - const fetchPatientUuids = function(records) { - const patientIds = records.map(record => findPatientId(record)); - if (!patientIds.some(patientId => patientId)) { - return Promise.resolve([]); - } - return contactUuidByPatientIds(patientIds); - }; - const fetchPatientLineage = function(record) { - return fetchPatientUuids([record]) - .then(function([uuid]) { - if (!uuid) { - return []; - } - return fetchLineageById(uuid); - }); - }; - const contactUuidByPatientIds = function(patientIds) { - const keys = patientIds - .filter(patientId => patientId) - .map(patientId => [ 'shortcode', patientId ]); - return DB.query('medic-client/contacts_by_reference', { keys }) - .then(function(results) { - const findIdWithKey = key => { - const matchingRow = results.rows.find(row => row.key[1] === key); - return matchingRow && matchingRow.id; - }; - return patientIds.map(patientId => findIdWithKey(patientId) || patientId); - }); - }; +/***/ }), - const fetchLineageById = function(id) { - const options = { - startkey: [id], - endkey: [id, {}], - include_docs: true - }; - return DB.query('medic-client/docs_by_id_lineage', options) - .then(function(result) { - return result.rows.map(function(row) { - return row.doc; - }); - }); - }; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs ***! + \***********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { - const fetchLineageByIds = function(ids) { - return fetchDocs(ids).then(function(docs) { - return hydrateDocs(docs).then(function(hydratedDocs) { - // Returning a list of docs just like fetchLineageById - const docsList = []; - hydratedDocs.forEach(function(hdoc) { - const docLineage = selfAndParents(hdoc); - docsList.push(docLineage); - }); - return docsList; - }); - }); - }; +// Underscore.js 1.13.1 +// https://underscorejs.org +// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. - const fetchDoc = function(id) { - return DB.get(id) - .catch(function(err) { - if (err.status === 404) { - err.statusCode = 404; - } - throw err; - }); - }; +Object.defineProperty(exports, "__esModule", ({ value: true })); - const fetchHydratedDoc = function(id, options = {}, callback) { - let lineage; - let patientLineage; - if (typeof options === 'function') { - callback = options; - options = {}; - } +// Current version. +var VERSION = '1.13.1'; - _.defaults(options, { - throwWhenMissingLineage: false, - }); +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = typeof self == 'object' && self.self === self && self || + typeof global == 'object' && global.global === global && global || + Function('return this')() || + {}; - return fetchLineageById(id) - .then(function(result) { - lineage = result; +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; - if (lineage.length === 0) { - if (options.throwWhenMissingLineage) { - const err = new Error(`Document not found: ${id}`); - err.code = 404; - throw err; - } else { - // Not a doc that has lineage, just do a normal fetch. - return fetchDoc(id); - } - } +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; - return fetchPatientLineage(lineage[0]) - .then(function(result) { - patientLineage = result; - return fetchContacts(lineage.concat(patientLineage)); - }) - .then(function(contacts) { - fillContactsInDocs(lineage, contacts); - fillContactsInDocs(patientLineage, contacts); - return mergeLineagesIntoDoc(lineage, contacts, patientLineage); - }); - }) - .then(function(result) { - if (callback) { - callback(null, result); - } - return result; - }) - .catch(function(err) { - if (callback) { - callback(err); - } else { - throw err; - } - }); - }; +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; - // for data_records, include the first-level contact. - const collectParentIds = function(docs) { - const ids = []; - docs.forEach(function(doc) { - let parent = doc.parent; - if (doc.type === 'data_record') { - const contactId = utils.getId(doc.contact); - if (!contactId) { - return; - } - ids.push(contactId); - parent = doc.contact; - } +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; - ids.push(...extractParentIds(parent)); - }); - return _.uniq(ids); - }; +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; - // for data_records, doesn't include the first-level contact (it counts as a parent). - const collectLeafContactIds = function(partiallyHydratedDocs) { - const ids = []; - partiallyHydratedDocs.forEach(function(doc) { - const startLineageFrom = doc.type === 'data_record' ? doc.contact : doc; - ids.push(...getContactIds(selfAndParents(startLineageFrom))); - }); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; - return _.uniq(ids); - }; +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; - const fetchDocs = function(ids) { - if (!ids || !ids.length) { - return Promise.resolve([]); +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; } - const keys = _.uniq(ids.filter(id => id)); - if (keys.length === 0) { - return Promise.resolve([]); + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); } - - return DB.allDocs({ keys, include_docs: true }) - .then(function(results) { - return results.rows - .map(function(row) { - return row.doc; - }) - .filter(function(doc) { - return !!doc; - }); - }); + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); }; +} - const hydrateDocs = function(docs) { - if (!docs.length) { - return Promise.resolve([]); - } +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; +} - const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return - const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - let patientUuids; - let patientDocs; +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; +} - return fetchPatientUuids(hydratedDocs) - .then(function(uuids) { - patientUuids = uuids; - return fetchDocs(patientUuids); - }) - .then(function(patients) { - patientDocs = patients; - knownDocs.push(...patients); +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; +} - const firstRoundIdsToFetch = _.uniq([ - ...collectParentIds(hydratedDocs), - ...collectLeafContactIds(hydratedDocs), +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} - ...collectParentIds(patientDocs), - ...collectLeafContactIds(patientDocs), - ]); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return toString.call(obj) === tag; + }; +} - return fetchDocs(firstRoundIdsToFetch); - }) - .then(function(firstRoundFetched) { - knownDocs.push(...firstRoundFetched); - const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched) - .filter(id => !knownDocs.some(doc => doc._id === id)); - return fetchDocs(secondRoundIdsToFetch); - }) - .then(function(secondRoundFetched) { - knownDocs.push(...secondRoundFetched); +var isString = tagTester('String'); - fillContactsInDocs(knownDocs, knownDocs); - hydratedDocs.forEach((doc, i) => { - const reconstructLineage = (docWithLineage, parents) => { - const parentIds = extractParentIds(docWithLineage); - return parentIds.map(id => { - // how can we use hashmaps? - return getContactById(parents, id); - }); - }; +var isNumber = tagTester('Number'); - const isReport = doc.type === 'data_record'; - const findParentsFor = isReport ? doc.contact : doc; - const lineage = reconstructLineage(findParentsFor, knownDocs); +var isDate = tagTester('Date'); - if (isReport) { - lineage.unshift(doc); - } +var isRegExp = tagTester('RegExp'); + +var isError = tagTester('Error'); - const patientDoc = getContactById(patientDocs, patientUuids[i]); - const patientLineage = reconstructLineage(patientDoc, knownDocs); +var isSymbol = tagTester('Symbol'); - mergeLineagesIntoDoc(lineage, knownDocs, patientLineage); - }); +var isArrayBuffer = tagTester('ArrayBuffer'); - return hydratedDocs; - }); +var isFunction = tagTester('Function'); + +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; }; +} - const fetchHydratedDocs = docIds => { - if (!Array.isArray(docIds)) { - return Promise.reject(new Error('Invalid parameter: "docIds" must be an array')); - } +var isFunction$1 = isFunction; - if (!docIds.length) { - return Promise.resolve([]); - } +var hasObjectTag = tagTester('Object'); - if (docIds.length === 1) { - return fetchHydratedDoc(docIds[0]) - .then(doc => [doc]) - .catch(err => { - if (err.status === 404) { - return []; - } +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); - throw err; - }); - } +var isDataView = tagTester('DataView'); - return DB - .allDocs({ keys: docIds, include_docs: true }) - .then(result => { - const docs = result.rows.map(row => row.doc).filter(doc => doc); - return hydrateDocs(docs); - }); - }; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +} - return { - /** - * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) - * @param {String} id The id of the doc to fetch and hydrate - * @param {Object} [options] Options for the behavior of the hydration - * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate. - * When false, does a best effort to return the document regardless of content. - * @returns {Promise} A promise to return the hydrated doc. - */ - fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback), +var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); - /** - * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc) - * If a doc is not found, it's simply excluded from the results list - * @param {Object[]} docs The array of docs to hydrate - * @returns {Promise} A promise to return the hydrated docs - */ - fetchHydratedDocs: docIds => fetchHydratedDocs(docIds), +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +var isArray = nativeIsArray || tagTester('Array'); - /** - * Given an array of docs bind the parents, contact (and parents) and patient (and parents) - * @param {Object[]} docs The array of docs to hydrate - * @returns {Promise} - */ - hydrateDocs: docs => hydrateDocs(docs), +// Internal function to check whether `key` is an own property name of `obj`. +function has$1(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); +} - fetchLineageById, - fetchLineageByIds, - fillContactsInDocs, - fillParentsInDocs, - fetchContacts, - }; -}; +var isArguments = tagTester('Arguments'); + +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has$1(obj, 'callee'); + }; + } +}()); +var isArguments$1 = isArguments; -/***/ }), +// Is a given object a finite number? +function isFinite$1(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} -/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/index.js": -/*!*********************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/index.js ***! - \*********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Is the given value `NaN`? +function isNaN$1(obj) { + return isNumber(obj) && _isNaN(obj); +} -/** - * @module lineage - */ -module.exports = (Promise, DB) => Object.assign( - {}, - __webpack_require__(/*! ./hydration */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js")(Promise, DB), - __webpack_require__(/*! ./minify */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js") -); +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; + } +} -/***/ }), +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js": -/*!**********************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js ***! - \**********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Internal helper to obtain the `byteLength` property of an object. +var getByteLength = shallowProperty('byteLength'); -const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js"); -const RECURSION_LIMIT = 50; +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +var isBufferLike = createSizePropertyCheck(getByteLength); -// Minifies things you would attach to another doc: -// doc.parent = minify(doc.parent) -// Not: -// minify(doc) -function minifyLineage(parent) { - if (!parent || !parent._id) { - return parent; - } +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : + isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +} - const docId = parent._id; - const result = { _id: parent._id }; - let minified = result; - for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) { - if (guard === 0) { - throw Error(`Could not minify ${docId}, possible parent recursion.`); - } +var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); - minified.parent = { _id: parent.parent._id }; - minified = minified.parent; - parent = parent.parent; - } +// Internal helper to obtain the `length` property of an object. +var getLength = shallowProperty('length'); - return result; +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key]; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; } -/** - * Remove all hyrdrated items and leave just the ids - * @param {Object} doc The doc to minify - */ -function minify(doc) { - if (!doc) { - return; - } - if (doc.parent) { - doc.parent = minifyLineage(doc.parent); - } - if (doc.contact && doc.contact._id) { - const miniContact = { _id: doc.contact._id }; - if (doc.contact.parent) { - miniContact.parent = minifyLineage(doc.contact.parent); +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = isFunction$1(constructor) && constructor.prototype || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); } - doc.contact = miniContact; - } - if (doc.type === 'data_record') { - delete doc.patient; - delete doc.place; } +} - if (utils.validLinkedDocs(doc)) { - Object.keys(doc.linked_docs).forEach(key => { - doc.linked_docs[key] = utils.getId(doc.linked_docs[key]); - }); - } +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has$1(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -module.exports = { - minify, - minifyLineage, -}; +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || isArguments$1(obj) + )) return length === 0; + return getLength(keys(obj)) === 0; +} +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -/***/ }), +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _$1(obj) { + if (obj instanceof _$1) return obj; + if (!(this instanceof _$1)) return new _$1(obj); + this._wrapped = obj; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js": -/*!*********************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js ***! - \*********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +_$1.VERSION = VERSION; -const contactTypeUtils = __webpack_require__(/*! @medic/contact-types-utils */ "./node_modules/cht-core-3-11/shared-libs/contact-types-utils/src/index.js"); -const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); +// Extracts the result from a wrapped and chained object. +_$1.prototype.value = function() { + return this._wrapped; +}; -const isContact = doc => { - if (!doc) { - return; - } +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; - return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type); +_$1.prototype.toString = function() { + return String(this._wrapped); }; -const getId = (item) => item && (typeof item === 'string' ? item : item._id); +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + getByteLength(bufferSource) + ); +} -// don't process linked docs for non-contact types -// linked_docs property should be a key-value object -const validLinkedDocs = doc => { - return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs); -}; +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -module.exports = { - getId, - validLinkedDocs, -}; +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _$1) a = a._wrapped; + if (b instanceof _$1) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { + if (!isDataView$1(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -/***/ }), + var areArrays = className === '[object Array]'; + if (!areArrays && isTypedArray$1(a)) { + var byteLength = getByteLength(a); + if (byteLength !== getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Hash.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Hash.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && + isFunction$1(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashClear.js"), - hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js"), - hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashGet.js"), - hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashHas.js"), - hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashSet.js"); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; } -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); +} -module.exports = Hash; +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!isFunction$1(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + }; +} -/***/ }), +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_ListCache.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_ListCache.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); -var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js"), - listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js"), - listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js"), - listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js"), - listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js"); +var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; +var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); +var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); + +var isWeakSet = tagTester('WeakSet'); + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; +} -module.exports = ListCache; +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; +} +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (isFunction$1(obj[key])) names.push(key); + } + return names.sort(); +} -/***/ }), +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Map.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Map.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Extend a given object with all the properties in passed-in object(s). +var extend = createAssigner(allKeys); -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_root.js"); +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +var extendOwn = createAssigner(keys); -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'); +// Fill in a given object with default properties. +var defaults = createAssigner(allKeys, true); -module.exports = Map; +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; +} +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -/***/ }), +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_MapCache.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_MapCache.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); +} -var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js"), - mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js"), - mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js"), - mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js"), - mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js"); +// Invokes `interceptor` with the `obj` and then returns `obj`. +// The primary purpose of this method is to "tap into" a method chain, in +// order to perform operations on intermediate results within the chain. +function tap(obj, interceptor) { + interceptor(obj); + return obj; +} -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; +// Normalize a (deep) property `path` to array. +// Like `_.iteratee`, this function can be customized. +function toPath$1(path) { + return isArray(path) ? path : [path]; +} +_$1.toPath = toPath$1; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); +// Internal wrapper for `_.toPath` to enable minification. +// Similar to `cb` for `_.iteratee`. +function toPath(path) { + return _$1.toPath(path); +} + +// Internal function to obtain a nested property in `obj` along `path`. +function deepGet(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; } + return length ? obj : void 0; } -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; +// Get the value of the (deep) property on `path` from `object`. +// If any property in `path` does not exist or if the value is +// `undefined`, return `defaultValue` instead. +// The `path` is normalized through `_.toPath`. +function get(object, path, defaultValue) { + var value = deepGet(object, toPath(path)); + return isUndefined(value) ? defaultValue : value; +} -module.exports = MapCache; +// Shortcut function for checking if an object has a given property directly on +// itself (in other words, not on a prototype). Unlike the internal `has` +// function, this public version can also traverse nested properties. +function has(obj, path) { + path = toPath(path); + var length = path.length; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (!has$1(obj, key)) return false; + obj = obj[key]; + } + return !!length; +} +// Keep the identity function around for default iteratees. +function identity(value) { + return value; +} -/***/ }), +// Returns a predicate for checking whether an object has a given set of +// `key:value` pairs. +function matcher(attrs) { + attrs = extendOwn({}, attrs); + return function(obj) { + return isMatch(obj, attrs); + }; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Set.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Set.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Creates a function that, when passed an object, will traverse that object’s +// properties down the given `path`, specified as an array of keys or indices. +function property(path) { + path = toPath(path); + return function(obj) { + return deepGet(obj, path); + }; +} -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_root.js"); +// Internal function that returns an efficient (for current engines) version +// of the passed-in callback, to be repeatedly applied in other Underscore +// functions. +function optimizeCb(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + // The 2-argument case is omitted because we’re not using it. + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; +} -/* Built-in method references that are verified to be native. */ -var Set = getNative(root, 'Set'); +// An internal function to generate callbacks that can be applied to each +// element in a collection, returning the desired result — either `_.identity`, +// an arbitrary callback, a property matcher, or a property accessor. +function baseIteratee(value, context, argCount) { + if (value == null) return identity; + if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (isObject(value) && !isArray(value)) return matcher(value); + return property(value); +} -module.exports = Set; +// External wrapper for our callback generator. Users may customize +// `_.iteratee` if they want additional predicate/iteratee shorthand styles. +// This abstraction hides the internal-only `argCount` argument. +function iteratee(value, context) { + return baseIteratee(value, context, Infinity); +} +_$1.iteratee = iteratee; +// The function we call internally to generate a callback. It invokes +// `_.iteratee` if overridden, otherwise `baseIteratee`. +function cb(value, context, argCount) { + if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + return baseIteratee(value, context, argCount); +} -/***/ }), +// Returns the results of applying the `iteratee` to each element of `obj`. +// In contrast to `_.map` it returns an object. +function mapObject(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = keys(obj), + length = _keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = _keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_SetCache.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_SetCache.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Predicate-generating function. Often useful outside of Underscore. +function noop(){} -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_MapCache.js"), - setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js"), - setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js"); +// Generates a function for a given object that returns a given property. +function propertyOf(obj) { + if (obj == null) return noop; + return function(path) { + return get(obj, path); + }; +} -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; +// Run a function **n** times. +function times(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; +} - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); +// Return a random integer between `min` and `max` (inclusive). +function random(min, max) { + if (max == null) { + max = min; + min = 0; } + return min + Math.floor(Math.random() * (max - min + 1)); } -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; - -module.exports = SetCache; - +// A (possibly faster) way to get the current timestamp as an integer. +var now = Date.now || function() { + return new Date().getTime(); +}; -/***/ }), +// Internal helper to generate functions for escaping and unescaping strings +// to/from HTML interpolation. +function createEscaper(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Symbol.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Symbol.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Internal list of HTML entities for escaping. +var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' +}; -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_root.js"); +// Function for escaping strings to HTML interpolation. +var _escape = createEscaper(escapeMap); -/** Built-in value references. */ -var Symbol = root.Symbol; +// Internal list of HTML entities for unescaping. +var unescapeMap = invert(escapeMap); -module.exports = Symbol; +// Function for unescaping strings from HTML interpolation. +var _unescape = createEscaper(unescapeMap); +// By default, Underscore uses ERB-style template delimiters. Change the +// following template settings to use alternative delimiters. +var templateSettings = _$1.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g +}; -/***/ }), +// When customizing `_.templateSettings`, if you don't want to define an +// interpolation, evaluation or escaping regex, we need one that is +// guaranteed not to match. +var noMatch = /(.)^/; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Certain characters need to be escaped so that they can be put into a +// string literal. +var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' +}; -var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js"); +var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; -/** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; +function escapeChar(match) { + return '\\' + escapes[match]; } -module.exports = arrayIncludes; - +// In order to prevent third-party code injection through +// `_.templateSettings.variable`, we test it against the following regular +// expression. It is intentionally a bit more liberal than just matching valid +// identifiers, but still prevents possible loopholes through defaults or +// destructuring assignment. +var bareIdentifier = /^\s*(\w|\$)+\s*$/; -/***/ }), +// JavaScript micro-templating, similar to John Resig's implementation. +// Underscore templating handles arbitrary delimiters, preserves whitespace, +// and correctly escapes quotes within interpolated code. +// NB: `oldSettings` only exists for backwards compatibility. +function template(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = defaults({}, settings, _$1.templateSettings); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js ***! - \*************************************************************************************************************/ -/***/ ((module) => { + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); -/** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; - while (++index < length) { - if (comparator(value, array[index])) { - return true; + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; } - } - return false; -} -module.exports = arrayIncludesWith; - - -/***/ }), + // Adobe VMs need the match returned to produce the correct offset. + return match; + }); + source += "';\n"; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var argument = settings.variable; + if (argument) { + // Insure against third-party code injection. (CVE-2021-23358) + if (!bareIdentifier.test(argument)) throw new Error( + 'variable is not a bare identifier: ' + argument + ); + } else { + // If a variable is not specified, place data values in local scope. + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } -var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/eq.js"); + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } + var render; + try { + render = new Function(argument, '_', source); + } catch (e) { + e.source = source; + throw e; } - return -1; -} - -module.exports = assocIndexOf; - -/***/ }), + var template = function(data) { + return render.call(this, data, _$1); + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js ***! - \*********************************************************************************************************/ -/***/ ((module) => { + // Provide the compiled source as a convenience for precompilation. + template.source = 'function(' + argument + '){\n' + source + '}'; -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); + return template; +} - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; +// Traverses the children of `obj` along `path`. If a child is a function, it +// is invoked with its parent as context. Returns the value of the final +// child, or `fallback` if any child is undefined. +function result(obj, path, fallback) { + path = toPath(path); + var length = path.length; + if (!length) { + return isFunction$1(fallback) ? fallback.call(obj) : fallback; + } + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. } + obj = isFunction$1(prop) ? prop.call(obj) : prop; } - return -1; + return obj; } -module.exports = baseFindIndex; +// Generate a unique integer id (unique within the entire client session). +// Useful for temporary DOM ids. +var idCounter = 0; +function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; +} +// Start chaining a wrapped Underscore object. +function chain(obj) { + var instance = _$1(obj); + instance._chain = true; + return instance; +} -/***/ }), +// Internal function to execute `sourceFunc` bound to `context` with optional +// `args`. Determines whether to execute a function as a constructor or as a +// normal function. +function executeBound(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (isObject(result)) return result; + return self; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Partially apply a function by creating a version that has had some of its +// arguments pre-filled, without changing its dynamic `this` context. `_` acts +// as a placeholder by default, allowing any combination of arguments to be +// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. +var partial = restArguments(function(func, boundArgs) { + var placeholder = partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; +}); -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Symbol.js"), - getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js"), - objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_objectToString.js"); +partial.placeholder = _$1; -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; +// Create a function bound to a given object (assigning `this`, and arguments, +// optionally). +var bind = restArguments(function(func, context, args) { + if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArguments(function(callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); + }); + return bound; +}); -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; +// Internal helper for collection methods to determine whether a collection +// should be iterated as an array or as an object. +// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength +// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 +var isArrayLike = createSizePropertyCheck(getLength); -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; +// Internal implementation of a recursive `flatten` function. +function flatten$1(input, depth, strict, output) { + output = output || []; + if (!depth && depth !== 0) { + depth = Infinity; + } else if (depth <= 0) { + return output.concat(input); } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); + var idx = output.length; + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + // Flatten current level of array or arguments object. + if (depth > 1) { + flatten$1(value, depth - 1, strict, output); + idx = output.length; + } else { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; } -module.exports = baseGetTag; - - -/***/ }), +// Bind a number of an object's methods to that object. Remaining arguments +// are the method names to be bound. Useful for ensuring that all callbacks +// defined on an object belong to it. +var bindAll = restArguments(function(obj, keys) { + keys = flatten$1(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = bind(obj[key], obj); + } + return obj; +}); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Memoize an expensive function by storing its results. +function memoize(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; +} -var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js"), - baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js"), - strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js"); +// Delays a function for the given number of milliseconds, and then calls +// it with the arguments supplied. +var delay = restArguments(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); +}); -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); -} +// Defers a function, scheduling it to run after the current call stack has +// cleared. +var defer = partial(delay, _$1, 1); -module.exports = baseIndexOf; +// Returns a function, that, when invoked, will only be triggered at most once +// during a given window of time. Normally, the throttled function will run +// as much as it can, without ever going more than once per `wait` duration; +// but if you'd like to disable the execution on the leading edge, pass +// `{leading: false}`. To disable execution on the trailing edge, ditto. +function throttle(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; -/***/ }), + var throttled = function() { + var _now = now(); + if (!previous && options.leading === false) previous = _now; + var remaining = wait - (_now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = _now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js ***! - \*****************************************************************************************************/ -/***/ ((module) => { + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; + return throttled; } -module.exports = baseIsNaN; +// When a sequence of calls of the returned function ends, the argument +// function is triggered. The end of a sequence is defined by the `wait` +// parameter. If `immediate` is passed, the argument function will be +// triggered at the beginning of the sequence instead of at the end. +function debounce(func, wait, immediate) { + var timeout, previous, args, result, context; + var later = function() { + var passed = now() - previous; + if (wait > passed) { + timeout = setTimeout(later, wait - passed); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); + // This check is needed because `func` can recursively invoke `debounced`. + if (!timeout) args = context = null; + } + }; -/***/ }), + var debounced = restArguments(function(_args) { + context = this; + args = _args; + previous = now(); + if (!timeout) { + timeout = setTimeout(later, wait); + if (immediate) result = func.apply(context, args); + } + return result; + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + debounced.cancel = function() { + clearTimeout(timeout); + timeout = args = context = null; + }; -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isFunction.js"), - isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isMasked.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isObject.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_toSource.js"); + return debounced; +} -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +// Returns the first function passed as an argument to the second, +// allowing you to adjust arguments, run code before and after, and +// conditionally execute the original function. +function wrap(func, wrapper) { + return partial(wrapper, func); +} -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; +// Returns a negated version of the passed-in predicate. +function negate(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; +} -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; +// Returns a function that is the composition of a list of functions, each +// consuming the return value of the function that follows. +function compose() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; +} -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; +// Returns a function that will only be executed on and after the Nth call. +function after(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; +} -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +// Returns a function that will only be executed up to (but not including) the +// Nth call. +function before(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; +} -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); +// Returns a function that will be executed at most one time, no matter how +// often you call it. Useful for lazy initialization. +var once = partial(before, 2); -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; +// Returns the first key on an object that passes a truth test. +function findKey(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = keys(obj), key; + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) return key; } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); } -module.exports = baseIsNative; - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_SetCache.js"), - arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js"), - arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js"), - createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_createSet.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setToArray.js"); +// Internal function to generate `_.findIndex` and `_.findLastIndex`. +function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; +} -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; +// Returns the first index on an array-like that passes a truth test. +var findIndex = createPredicateIndexFinder(1); -/** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; +// Returns the last index on an array-like that passes a truth test. +var findLastIndex = createPredicateIndexFinder(-1); - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; +// Use a comparator function to figure out the smallest index at which +// an object should be inserted so as to maintain order. Uses binary search. +function sortedIndex(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; + return low; +} - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); +// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. +function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; } - result.push(value); + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), isNaN$1); + return idx >= 0 ? idx + i : -1; } - } - return result; + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; } -module.exports = baseUniq; +// Return the position of the first occurrence of an item in an array, +// or -1 if the item is not included in the array. +// If the array is large and already in sort order, pass `true` +// for **isSorted** to use binary search. +var indexOf = createIndexFinder(1, findIndex, sortedIndex); +// Return the position of the last occurrence of an item in an array, +// or -1 if the item is not included in the array. +var lastIndexOf = createIndexFinder(-1, findLastIndex); -/***/ }), +// Return the first value which passes a truth test. +function find(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js ***! - \****************************************************************************************************/ -/***/ ((module) => { +// Convenience version of a common use case of `_.find`: getting the first +// object containing specific `key:value` pairs. +function findWhere(obj, attrs) { + return find(obj, matcher(attrs)); +} -/** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); +// The cornerstone for collection functions, an `each` +// implementation, aka `forEach`. +// Handles raw objects in addition to array-likes. Treats all +// sparse array-likes as if they were dense. +function each(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var _keys = keys(obj); + for (i = 0, length = _keys.length; i < length; i++) { + iteratee(obj[_keys[i]], _keys[i], obj); + } + } + return obj; } -module.exports = cacheHas; +// Return the results of applying the iteratee to each element. +function map(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; +} +// Internal helper to create a reducing function, iterating left or right. +function createReduce(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function(obj, iteratee, memo, initial) { + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[_keys ? _keys[index] : index]; + index += dir; + } + for (; index >= 0 && index < length; index += dir) { + var currentKey = _keys ? _keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; -/***/ }), + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); + }; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// **Reduce** builds up a single result from a list of values, aka `inject`, +// or `foldl`. +var reduce = createReduce(1); -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_root.js"); +// The right-associative version of reduce, also known as `foldr`. +var reduceRight = createReduce(-1); -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; +// Return all the elements that pass a truth test. +function filter(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; +} -module.exports = coreJsData; +// Return all the elements for which a truth test fails. +function reject(obj, predicate, context) { + return filter(obj, negate(cb(predicate)), context); +} +// Determine whether all of the elements pass a truth test. +function every(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; +} -/***/ }), +// Determine if at least one element in the object passes a truth test. +function some(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_createSet.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_createSet.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Determine if the array or object contains a given item (using `===`). +function contains(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return indexOf(obj, item, fromIndex) >= 0; +} -var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Set.js"), - noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/noop.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setToArray.js"); +// Invoke a method (with arguments) on every item in a collection. +var invoke = restArguments(function(obj, path, args) { + var contextPath, func; + if (isFunction$1(path)) { + func = path; + } else { + path = toPath(path); + contextPath = path.slice(0, -1); + path = path[path.length - 1]; + } + return map(obj, function(context) { + var method = func; + if (!method) { + if (contextPath && contextPath.length) { + context = deepGet(context, contextPath); + } + if (context == null) return void 0; + method = context[path]; + } + return method == null ? method : method.apply(context, args); + }); +}); -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; +// Convenience version of a common use case of `_.map`: fetching a property. +function pluck(obj, key) { + return map(obj, property(key)); +} -/** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ -var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); -}; +// Convenience version of a common use case of `_.filter`: selecting only +// objects containing specific `key:value` pairs. +function where(obj, attrs) { + return filter(obj, matcher(attrs)); +} -module.exports = createSet; +// Return the maximum element (or element-based computation). +function max(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; +} +// Return the minimum element (or element-based computation). +function min(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; +} -/***/ }), +// Sample **n** random values from a collection using the modern version of the +// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). +// If **n** is not specified, returns a single random element. +// The internal `guard` argument allows it to work with `_.map`. +function sample(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = values(obj); + return obj[random(obj.length - 1)]; + } + var sample = isArrayLike(obj) ? clone(obj) : values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js ***! - \******************************************************************************************************/ -/***/ ((module) => { +// Shuffle a collection. +function shuffle(obj) { + return sample(obj, Infinity); +} -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; +// Sort the object's values by a criterion produced by an iteratee. +function sortBy(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return pluck(map(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); +} -module.exports = freeGlobal; +// An internal function used for aggregate "group by" operations. +function group(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; +} +// Groups the object's values by a criterion. Pass either a string attribute +// to group by, or a function that returns the criterion. +var groupBy = group(function(result, value, key) { + if (has$1(result, key)) result[key].push(value); else result[key] = [value]; +}); -/***/ }), +// Indexes the object's values by a criterion, similar to `_.groupBy`, but for +// when you know that your index values will be unique. +var indexBy = group(function(result, value, key) { + result[key] = value; +}); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getMapData.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getMapData.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Counts instances of an object that group by a certain criterion. Pass +// either a string attribute to count by, or a function that returns the +// criterion. +var countBy = group(function(result, value, key) { + if (has$1(result, key)) result[key]++; else result[key] = 1; +}); -var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js"); +// Split a collection into two arrays: one whose elements all pass the given +// truth test, and one whose elements all do not pass the truth test. +var partition = group(function(result, value, pass) { + result[pass ? 0 : 1].push(value); +}, true); -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; +// Safely create a real, live array from anything iterable. +var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; +function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return slice.call(obj); + if (isString(obj)) { + // Keep surrogate pair characters together. + return obj.match(reStrSymbol); + } + if (isArrayLike(obj)) return map(obj, identity); + return values(obj); } -module.exports = getMapData; +// Return the number of elements in a collection. +function size(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : keys(obj).length; +} +// Internal `_.pick` helper function to determine whether `key` is an enumerable +// property name of `obj`. +function keyInObj(value, key, obj) { + return key in obj; +} -/***/ }), +// Return a copy of the object only containing the allowed properties. +var pick = restArguments(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (isFunction$1(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten$1(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; +}); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getNative.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getNative.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Return a copy of the object without the disallowed properties. +var omit = restArguments(function(obj, keys) { + var iteratee = keys[0], context; + if (isFunction$1(iteratee)) { + iteratee = negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = map(flatten$1(keys, false, false), String); + iteratee = function(value, key) { + return !contains(keys, key); + }; + } + return pick(obj, iteratee, context); +}); + +// Returns everything but the last entry of the array. Especially useful on +// the arguments object. Passing **n** will return all the values in +// the array, excluding the last N. +function initial(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); +} -var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js"), - getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getValue.js"); +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); } -module.exports = getNative; +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} -/***/ }), +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten(array, depth) { + return flatten$1(array, depth, false); +} -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +var difference = restArguments(function(array, rest) { + rest = flatten$1(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +}); -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Symbol.js"); +// Return a version of the array that does not contain the specified value(s). +var without = restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +}); -/** Used for built-in method references. */ -var objectProto = Object.prototype; +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +var union = restArguments(function(arrays) { + return uniq(flatten$1(arrays, true, true)); +}); -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = array && max(array, getLength).length || 0; + var result = Array(length); -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} +// Zip together multiple lists into a single array -- elements that share +// an index go together. +var zip = restArguments(unzip); - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; } else { - delete value[symToStringTag]; + result[list[i][0]] = list[i][1]; } } return result; } -module.exports = getRawTag; - +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } -/***/ }), + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getValue.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getValue.js ***! - \****************************************************************************************************/ -/***/ ((module) => { + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; + return range; } -module.exports = getValue; - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashClear.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashClear.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _$1(obj).chain() : obj; +} -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _$1[name] = obj[name]; + _$1.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_$1, args)); + }; + }); + return _$1; } -module.exports = hashClear; +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); -/***/ }), +// Named Exports -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js ***! - \******************************************************************************************************/ -/***/ ((module) => { +var allExports = { + __proto__: null, + VERSION: VERSION, + restArguments: restArguments, + isObject: isObject, + isNull: isNull, + isUndefined: isUndefined, + isBoolean: isBoolean, + isElement: isElement, + isString: isString, + isNumber: isNumber, + isDate: isDate, + isRegExp: isRegExp, + isError: isError, + isSymbol: isSymbol, + isArrayBuffer: isArrayBuffer, + isDataView: isDataView$1, + isArray: isArray, + isFunction: isFunction$1, + isArguments: isArguments$1, + isFinite: isFinite$1, + isNaN: isNaN$1, + isTypedArray: isTypedArray$1, + isEmpty: isEmpty, + isMatch: isMatch, + isEqual: isEqual, + isMap: isMap, + isWeakMap: isWeakMap, + isSet: isSet, + isWeakSet: isWeakSet, + keys: keys, + allKeys: allKeys, + values: values, + pairs: pairs, + invert: invert, + functions: functions, + methods: functions, + extend: extend, + extendOwn: extendOwn, + assign: extendOwn, + defaults: defaults, + create: create, + clone: clone, + tap: tap, + get: get, + has: has, + mapObject: mapObject, + identity: identity, + constant: constant, + noop: noop, + toPath: toPath$1, + property: property, + propertyOf: propertyOf, + matcher: matcher, + matches: matcher, + times: times, + random: random, + now: now, + escape: _escape, + unescape: _unescape, + templateSettings: templateSettings, + template: template, + result: result, + uniqueId: uniqueId, + chain: chain, + iteratee: iteratee, + partial: partial, + bind: bind, + bindAll: bindAll, + memoize: memoize, + delay: delay, + defer: defer, + throttle: throttle, + debounce: debounce, + wrap: wrap, + negate: negate, + compose: compose, + after: after, + before: before, + once: once, + findKey: findKey, + findIndex: findIndex, + findLastIndex: findLastIndex, + sortedIndex: sortedIndex, + indexOf: indexOf, + lastIndexOf: lastIndexOf, + find: find, + detect: find, + findWhere: findWhere, + each: each, + forEach: each, + map: map, + collect: map, + reduce: reduce, + foldl: reduce, + inject: reduce, + reduceRight: reduceRight, + foldr: reduceRight, + filter: filter, + select: filter, + reject: reject, + every: every, + all: every, + some: some, + any: some, + contains: contains, + includes: contains, + include: contains, + invoke: invoke, + pluck: pluck, + where: where, + max: max, + min: min, + shuffle: shuffle, + sample: sample, + sortBy: sortBy, + groupBy: groupBy, + indexBy: indexBy, + countBy: countBy, + partition: partition, + toArray: toArray, + size: size, + pick: pick, + omit: omit, + first: first, + head: first, + take: first, + initial: initial, + last: last, + rest: rest, + tail: rest, + drop: rest, + compact: compact, + flatten: flatten, + without: without, + uniq: uniq, + unique: uniq, + union: union, + intersection: intersection, + difference: difference, + unzip: unzip, + transpose: unzip, + zip: zip, + object: object, + range: range, + chunk: chunk, + mixin: mixin, + 'default': _$1 +}; -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} +// Default Export -module.exports = hashDelete; +// Add all of the Underscore functions to the wrapper object. +var _ = mixin(allExports); +// Legacy Node.js API. +_._ = _; + +exports.VERSION = VERSION; +exports._ = _; +exports._escape = _escape; +exports._unescape = _unescape; +exports.after = after; +exports.allKeys = allKeys; +exports.before = before; +exports.bind = bind; +exports.bindAll = bindAll; +exports.chain = chain; +exports.chunk = chunk; +exports.clone = clone; +exports.compact = compact; +exports.compose = compose; +exports.constant = constant; +exports.contains = contains; +exports.countBy = countBy; +exports.create = create; +exports.debounce = debounce; +exports.defaults = defaults; +exports.defer = defer; +exports.delay = delay; +exports.difference = difference; +exports.each = each; +exports.every = every; +exports.extend = extend; +exports.extendOwn = extendOwn; +exports.filter = filter; +exports.find = find; +exports.findIndex = findIndex; +exports.findKey = findKey; +exports.findLastIndex = findLastIndex; +exports.findWhere = findWhere; +exports.first = first; +exports.flatten = flatten; +exports.functions = functions; +exports.get = get; +exports.groupBy = groupBy; +exports.has = has; +exports.identity = identity; +exports.indexBy = indexBy; +exports.indexOf = indexOf; +exports.initial = initial; +exports.intersection = intersection; +exports.invert = invert; +exports.invoke = invoke; +exports.isArguments = isArguments$1; +exports.isArray = isArray; +exports.isArrayBuffer = isArrayBuffer; +exports.isBoolean = isBoolean; +exports.isDataView = isDataView$1; +exports.isDate = isDate; +exports.isElement = isElement; +exports.isEmpty = isEmpty; +exports.isEqual = isEqual; +exports.isError = isError; +exports.isFinite = isFinite$1; +exports.isFunction = isFunction$1; +exports.isMap = isMap; +exports.isMatch = isMatch; +exports.isNaN = isNaN$1; +exports.isNull = isNull; +exports.isNumber = isNumber; +exports.isObject = isObject; +exports.isRegExp = isRegExp; +exports.isSet = isSet; +exports.isString = isString; +exports.isSymbol = isSymbol; +exports.isTypedArray = isTypedArray$1; +exports.isUndefined = isUndefined; +exports.isWeakMap = isWeakMap; +exports.isWeakSet = isWeakSet; +exports.iteratee = iteratee; +exports.keys = keys; +exports.last = last; +exports.lastIndexOf = lastIndexOf; +exports.map = map; +exports.mapObject = mapObject; +exports.matcher = matcher; +exports.max = max; +exports.memoize = memoize; +exports.min = min; +exports.mixin = mixin; +exports.negate = negate; +exports.noop = noop; +exports.now = now; +exports.object = object; +exports.omit = omit; +exports.once = once; +exports.pairs = pairs; +exports.partial = partial; +exports.partition = partition; +exports.pick = pick; +exports.pluck = pluck; +exports.property = property; +exports.propertyOf = propertyOf; +exports.random = random; +exports.range = range; +exports.reduce = reduce; +exports.reduceRight = reduceRight; +exports.reject = reject; +exports.rest = rest; +exports.restArguments = restArguments; +exports.result = result; +exports.sample = sample; +exports.shuffle = shuffle; +exports.size = size; +exports.some = some; +exports.sortBy = sortBy; +exports.sortedIndex = sortedIndex; +exports.tap = tap; +exports.template = template; +exports.templateSettings = templateSettings; +exports.throttle = throttle; +exports.times = times; +exports.toArray = toArray; +exports.toPath = toPath$1; +exports.union = union; +exports.uniq = uniq; +exports.uniqueId = uniqueId; +exports.unzip = unzip; +exports.values = values; +exports.where = where; +exports.without = without; +exports.wrap = wrap; +exports.zip = zip; +//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashGet.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashGet.js ***! - \***************************************************************************************************/ +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs ***! + \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; +// Underscore.js 1.13.1 +// https://underscorejs.org +// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. -/** Used for built-in method references. */ -var objectProto = Object.prototype; +var underscoreNodeF = __webpack_require__(/*! ./underscore-node-f.cjs */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs"); -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} -module.exports = hashGet; +module.exports = underscoreNodeF._; +//# sourceMappingURL=underscore-node.cjs.map /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashHas.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashHas.js ***! - \***************************************************************************************************/ +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/index.js": +/*!**************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/index.js ***! + \**************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - /** - * Checks if a hash value for `key` exists. + * @module rules-engine * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * Business logic for interacting with rules documents */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); -} -module.exports = hashHas; +const pouchdbProvider = __webpack_require__(/*! ./pouchdb-provider */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js"); +const wireupToProvider = __webpack_require__(/*! ./provider-wireup */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js"); +/** + * @param {Object} db Medic pouchdb database + */ +module.exports = db => { + const provider = pouchdbProvider(db); + return { + /** + * @param {Object} settings Settings for the behavior of the rules engine + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object[]} settings.targets Target definitions from settings doc + * @param {Boolean} settings.enableTasks Flag to enable tasks + * @param {Boolean} settings.enableTargets Flag to enable targets + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's settings document + */ + initialize: (settings) => wireupToProvider.initialize(provider, settings), -/***/ }), + /** + * @returns {Boolean} True if the rules engine is enabled and ready for use + */ + isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashSet.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashSet.js ***! - \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + /** + * Refreshes all rules documents for a set of contacts and returns their task documents + * + * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are + * @returns {Promise} All the fresh task docs owned by contactIds + */ + fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds), -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); + /** + * Refreshes all rules documents and returns the latest target document + * + * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the + * target scores + * @param {Integer} filterInterval.start Start timestamp of interval + * @param {Integer} filterInterval.end End timestamp of interval + * @returns {Promise} Array of fresh targets + */ + fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval), -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; + /** + * Indicate that the task documents associated with a given subjectId are dirty. + * + * @param {string[]} subjectIds An array of subject ids + * + * @returns {Promise} To mark the subjectIds as dirty + */ + updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds), -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} + /** + * Determines if either the settings or user's hydrated contact document have changed in a way which will impact + * the result of rules calculations. + * If they have changed in a meaningful way, the calculation state of all contacts is reset + * + * @param {Object} settings Updated settings + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object[]} settings.targets Target definitions from settings doc + * @param {Boolean} settings.enableTasks Flag to enable tasks + * @param {Boolean} settings.enableTargets Flag to enable targets + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's user-settings document + */ + rulesConfigChange: (settings) => { + const cacheIsReset = rulesStateStore.rulesConfigChange(settings); + if (cacheIsReset) { + rulesEmitter.shutdown(); + rulesEmitter.initialize(settings); + } + }, -module.exports = hashSet; + /** + * Returns a list of UUIDs of tracked contacts that are marked as dirty + * @returns {Array} list of dirty contacts UUIDs + */ + getDirtyContacts: () => rulesStateStore.getDirtyContacts(), + }; +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js ***! - \*****************************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js ***! + \*************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** - * Checks if `value` is suitable for use as unique object key. + * @module pouchdb-provider * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + * Wireup for accessing rules document data via medic pouch db */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} -module.exports = isKeyable; +// TODO work out how to pass in the logger from node/browser +/* eslint-disable no-console */ +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); +const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); +const RULES_STATE_DOCID = '_local/rulesStateStore'; +const docsOf = (query) => { + return query.then(result => { + const rows = uniqBy(result.rows, 'id'); + return rows.map(row => row.doc).filter(existing => existing); + }); +}; -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isMasked.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isMasked.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const medicPouchProvider = db => { + const self = { + // PouchDB.query slows down when provided with a large keys array. + // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids + allTasks: prefix => { + const options = { startkey: `${prefix}-`, endkey: `${prefix}-\ufff0`, include_docs: true }; + return docsOf(db.query('medic-client/tasks_by_contact', options)); + }, -var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js"); + allTaskData: userSettingsDoc => { + const userSettingsId = userSettingsDoc && userSettingsDoc._id; + return Promise.all([ + docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })), + docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })), + self.allTasks('requester'), + ]) + .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId })); + }, -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); + contactsBySubjectId: subjectIds => { + const keys = subjectIds.map(key => ['shortcode', key]); + return db.query('medic-client/contacts_by_reference', { keys, include_docs: true }) + .then(results => { + const shortcodeIds = results.rows.map(result => result.doc._id); + const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id)); -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} + return [...shortcodeIds, ...idsThatArentShortcodes]; + }); + }, -module.exports = isMasked; + stateChangeCallback: docUpdateClosure(db), + commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => { + const userContactId = userContactDoc && userContactDoc._id; + const userSettingsId = userSettingsDoc && userSettingsDoc._id; + const _id = `target~${docTag}~${userContactId}~${userSettingsId}`; + const createNew = () => ({ + _id, + type: 'target', + user: userSettingsId, + owner: userContactId, + reporting_period: docTag, + }); -/***/ }), + const today = moment().startOf('day').valueOf(); + return db.get(_id) + .catch(createNew) + .then(existingDoc => { + if (existingDoc.updated_date === today && !force) { + return false; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js ***! - \**********************************************************************************************************/ -/***/ ((module) => { + existingDoc.targets = targets; + existingDoc.updated_date = today; + return db.put(existingDoc); + }); + }, -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} + commitTaskDocs: taskDocs => { + if (!taskDocs || taskDocs.length === 0) { + return Promise.resolve([]); + } -module.exports = listCacheClear; + console.debug(`Committing ${taskDocs.length} task document updates`); + return db.bulkDocs(taskDocs) + .catch(err => console.error('Error committing task documents', err)); + }, + existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })), -/***/ }), + tasksByRelation: (contactIds, prefix) => { + const keys = contactIds.map(contactId => `${prefix}-${contactId}`); + return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true })); + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js ***! - \***********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + taskDataFor: (contactIds, userSettingsDoc) => { + if (!contactIds || contactIds.length === 0) { + return Promise.resolve({}); + } -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); + return docsOf(db.allDocs({ keys: contactIds, include_docs: true })) + .then(contactDocs => { + const subjectIds = contactDocs.reduce((agg, contactDoc) => { + registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId)); + return agg; + }, new Set(contactIds)); -/** Used for built-in method references. */ -var arrayProto = Array.prototype; + const keys = Array.from(subjectIds); + return Promise.all([ + docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })), + self.tasksByRelation(contactIds, 'requester'), + ]) + .then(([reportDocs, taskDocs]) => { + // tighten the connection between reports and contacts + // a report will only be allowed to generate tasks for a single contact! + reportDocs = reportDocs.filter(report => { + const subjectId = registrationUtils.getSubjectId(report); + return subjectIds.has(subjectId); + }); -/** Built-in value references. */ -var splice = arrayProto.splice; + return { + userSettingsId: userSettingsDoc && userSettingsDoc._id, + contactDocs, + reportDocs, + taskDocs, + }; + }); + }); + }, + }; -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + return self; +}; - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} +medicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID; -module.exports = listCacheDelete; +const docUpdateClosure = db => { + // previousResult helps avoid conflict errors if this functions is used asynchronously + let previousResult = Promise.resolve(); + return (baseDoc, assigned) => { + Object.assign(baseDoc, assigned); + + previousResult = previousResult + .then(() => db.put(baseDoc)) + .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; }) + .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`)) + .then(() => { + // unsure of how browsers handle long promise chains, so break the chain when possible + previousResult = Promise.resolve(); + }); + + return previousResult; + }; +}; + +module.exports = medicPouchProvider; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js ***! - \********************************************************************************************************/ +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js": +/*!************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js ***! + \************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); - /** - * Gets the list cache value for `key`. + * @module wireup * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. + * Wireup a data provider to the rules-engine */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - return index < 0 ? undefined : data[index][1]; -} +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); -module.exports = listCacheGet; +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); +const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js"); +const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); +let wireupOptions; -/***/ }), +module.exports = { + /** + * @param {Object} provider A data provider + * @param {Object} settings Settings for the behavior of the provider + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object[]} settings.targets Target definitions from settings doc + * @param {Boolean} settings.enableTasks Flag to enable tasks + * @param {Boolean} settings.enableTargets Flag to enable targets + * @param {number} settings.monthStartDate reporting interval start date + * @param {Object} userDoc User's hydrated contact document + */ + initialize: (provider, settings) => { + const isEnabled = rulesEmitter.initialize(settings); + if (!isEnabled) { + return Promise.resolve(); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const { enableTasks=true, enableTargets=true } = settings; + wireupOptions = { enableTasks, enableTargets }; -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); + return provider + .existingRulesStateStore() + .then(existingStateDoc => { + if (!rulesEmitter.isLatestNoolsSchema()) { + throw Error('Rules Engine: Updates to the nools schema are required'); + } -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} + const contactClosure = updatedState => provider.stateChangeCallback( + existingStateDoc, + { rulesStateStore: updatedState } + ); + const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure); + return handleIntervalTurnover(provider, settings).then(() => { + if (!needsBuilding) { + return; + } -module.exports = listCacheHas; + rulesStateStore.build(settings, contactClosure); + }); + }); + }, + /** + * Refreshes the rules emissions for all contacts + * Fetches all tasks in non-terminal state owned by the contacts + * Updates the temporal states of the task documents + * Commits those changes (async) + * + * @param {Object} provider A data provider + * @param {string[]} contactIds An array of contact ids. If undefined, all task documents + * @returns {Promise} All the fresh task docs owned by contacts + */ + fetchTasksFor: (provider, contactIds) => { + if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) { + return disabledResponse(); + } -/***/ }), + return enqueue(() => { + const calculationTimestamp = Date.now(); + return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds) + .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner')) + .then(tasksToDisplay => { + const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp); + provider.commitTaskDocs(docsToCommit); + return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready); + }); + }); + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + /** + * Refreshes the rules emissions for all contacts + * + * @param {Object} provider A data provider + * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target + * scores + * @param {Integer} filterInterval.start Start timestamp of interval + * @param {Integer} filterInterval.end End timestamp of interval + * @returns {Promise} The fresh aggregate target doc + */ + fetchTargets: (provider, filterInterval) => { + if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) { + return disabledResponse(); + } -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); + const calculationTimestamp = Date.now(); + const targetEmissionFilter = filterInterval && (emission => { + // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive + return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]'); + }); -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); + return enqueue(() => { + return refreshRulesEmissionForContacts(provider, calculationTimestamp) + .then(() => { + const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter); + return storeTargetsDoc(provider, targets, filterInterval).then(() => targets); + }); + }); + }, - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} + /** + * Indicate that the rules emissions associated with a given subjectId are dirty + * + * @param {Object} provider A data provider + * @param {string[]} subjectIds An array of subject ids + * + * @returns {Promise} To complete the transaction marking the subjectIds as dirty + */ + updateEmissionsFor: (provider, subjectIds) => { + if (!subjectIds) { + subjectIds = []; + } + + if (subjectIds && !Array.isArray(subjectIds)) { + subjectIds = [subjectIds]; + } + + // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required + return provider.contactsBySubjectId(subjectIds) + .then(contactIds => rulesStateStore.markDirty(contactIds)); + }, +}; + +let refreshQueue = Promise.resolve(); +const enqueue = callback => { + const listeners = []; + const eventQueue = []; + const emit = evtName => { + // we have to emit `queued` immediately, but there are no listeners listening at this point + // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they + // have events in eventQueue, and call their callback immediately for each matching queued event. + if (!listeners[evtName]) { + return eventQueue.push(evtName); + } + listeners[evtName].forEach(callback => callback()); + }; + + emit('queued'); + refreshQueue = refreshQueue.then(() => { + emit('running'); + return callback(); + }); -module.exports = listCacheSet; + refreshQueue.on = (evtName, callback) => { + listeners[evtName] = listeners[evtName] || []; + listeners[evtName].push(callback); + eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback()); + return refreshQueue; + }; + return refreshQueue; +}; -/***/ }), +const disabledResponse = () => { + const p = Promise.resolve([]); + p.on = () => p; + return p; +}; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => { + const refreshAndSave = (freshData, updatedContactIds) => ( + refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions) + .then(refreshed => Promise.all([ + rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions), + provider.commitTaskDocs(refreshed.updatedTaskDocs), + ])) + ); -var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Hash.js"), - ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Map.js"); + const refreshForAllContacts = (calculationTimestamp) => ( + provider.allTaskData(rulesStateStore.currentUserSettings()) + .then(freshData => ( + refreshAndSave(freshData) + .then(() => { + const contactIds = freshData.contactDocs.map(doc => doc._id); -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} + const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => { + registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId)); + return agg; + }, new Set()); -module.exports = mapCacheClear; + const headlessSubjectIds = freshData.reportDocs + .map(doc => registrationUtils.getSubjectId(doc)) + .filter(subjectId => !subjectIds.has(subjectId)); + rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]); + }) + )) + ); -/***/ }), + const refreshForKnownContacts = (calculationTimestamp, contactIds) => { + const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId)); + return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings()) + .then(freshData => refreshAndSave(freshData, dirtyContactIds)) + .then(() => { + rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds); + }); + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => { + if (contactIds) { + return refreshForKnownContacts(calculationTimestamp, contactIds); + } -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); + // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in + // reports/tasks) + if (!rulesStateStore.hasAllContacts()) { + return refreshForAllContacts(calculationTimestamp); + } -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} + // Once the contact state store has all contacts, trust it and only refresh those marked dirty + return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds()); + }); +}; -module.exports = mapCacheDelete; +const storeTargetsDoc = (provider, targets, filterInterval, force = false) => { + const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest'; + const minifyTarget = target => ({ id: target.id, value: target.value }); + return provider.commitTargetDoc( + targets.map(minifyTarget), + rulesStateStore.currentUserContact(), + rulesStateStore.currentUserSettings(), + targetDocTag, + force + ); +}; -/***/ }), +// Because we only save the `target` document once per day (when we calculate targets for the first time), +// we're losing all updates to targets that happened in the last day of the reporting period. +// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding +// reporting interval (that includes the date when the state was calculated). +// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`, +// which means that they would all be excluded from the emission filter (being outside the past reporting interval). +// https://github.com/medic/cht-core/issues/6209 +const handleIntervalTurnover = (provider, { monthStartDate }) => { + if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) { + return Promise.resolve(); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt(); + if (!stateCalculatedAt) { + return Promise.resolve(); + } -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); + const currentInterval = calendarInterval.getCurrent(monthStartDate); + // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive + if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) { + return Promise.resolve(); + } -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} + const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt); + const targetEmissionFilter = (emission => { + // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive + return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]'); + }); -module.exports = mapCacheGet; + const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter); + return storeTargetsDoc(provider, targets, filterInterval, true); +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js ***! - \*******************************************************************************************************/ +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js ***! + \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); - /** - * Checks if a map value for `key` exists. + * @module refresh-rules-emissions + * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks + * Creates or updates one task document per unique emission id + * Cancels task documents in non-terminal states if they were not emitted * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @requires rules-emitter to be initialized */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} - -module.exports = mapCacheHas; - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); +const transformTaskEmissionToDoc = __webpack_require__(/*! ./transform-task-emission-to-doc */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js"); /** - * Sets the map `key` to `value`. + * @param {Object[]} freshData.contactDocs A set of contact documents + * @param {Object[]} freshData.reportDocs All of the contacts' reports + * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact) + * @param {Object[]} freshData.userSettingsId The id of the user's settings document * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. + * @param {int} calculationTimestamp Timestamp for the round of rules calculations + * + * @param {Object=} [options] Options for the behavior when refreshing rules + * @param {Boolean} [options.enableTasks=true] Flag to enable tasks + * @param {Boolean} [options.enableTargets=true] Flag to enable targets + * + * @returns {Object} result + * @returns {Object[]} result.targetEmissions Array of raw target emissions + * @returns {Object[]} result.updatedTaskDocs Array of updated task documents */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} - -module.exports = mapCacheSet; - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getNative.js"); - -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); - -module.exports = nativeCreate; - +module.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => { + const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData; + return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs) + .then(emissions => Promise.all([ + enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [], + enableTargets ? emissions.targets : [], + ])) + .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions })); +}; -/***/ }), +const getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => { + const { taskDocs = [], userSettingsId } = freshData; + const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs( + taskDocs, + calculationTimestamp + ); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_objectToString.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_objectToString.js ***! - \**********************************************************************************************************/ -/***/ ((module) => { + const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp)); + const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp) + .map(taskEmission => { + const existingDoc = emissionIdToLatestDocMap[taskEmission._id]; + return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc); + }); -/** Used for built-in method references. */ -var objectProto = Object.prototype; + const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc); + const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp); + const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp); + const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc); + return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs]; +}; /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. + * Examine the existing task documents which were previously emitted by the same contact + * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive */ -var nativeObjectToString = objectProto.toString; +const getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => { + const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state)); + const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id)); + + return existingNonTerminalTaskDocs + .filter(doc => !currentEmissionIds.has(doc.emission._id)) + .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt)); +}; /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. + * All duplicate task docs that are not in a terminal state are "Cancelled" with a "duplicate" reason + * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB + * @param {number} calculatedAt - Timestamp for the round of rules calculations + * @returns {Array} - task docs with updated state */ -function objectToString(value) { - return nativeObjectToString.call(value); -} +const getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => { + return duplicatedTaskDocs + .filter(doc => !TaskStates.isTerminal(doc.state)) + .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate')); +}; -module.exports = objectToString; +/* +It is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner. +We pick the "most ready" emission. +*/ +const disambiguateEmissions = (taskEmissions, forTime) => { + const winners = taskEmissions.reduce((agg, emission) => { + if (!agg[emission._id]) { + agg[emission._id] = emission; + } else { + const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled; + const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled; + if (TaskStates.isMoreReadyThan(incomingState, currentState)) { + agg[emission._id] = emission; + } + } + return agg; + }, {}); + return Object.keys(winners).map(key => winners[key]); // Object.values() +}; -/***/ }), +/** + * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in + * on multiple devices). When this happens, we pick the "most ready" most recent task. However, tasks that are authored + * in the future are discarded. + * @param {Array} taskDocs - An array of already exiting task documents + * @param {number} forTime - current calculation timestamp + * @returns {Object} result + * @returns {Object} result.winners - A map of emission id to task pairs + * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled + */ +const disambiguateTaskDocs = (taskDocs, forTime) => { + const duplicates = []; + const winners = {}; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_root.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_root.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime); -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js"); + Object.keys(taskDocsByEmissionId).forEach(emissionId => { + taskDocsByEmissionId[emissionId].forEach(taskDoc => { + if (!winners[emissionId]) { + winners[emissionId] = taskDoc; + return; + } -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state); + if ( + // if taskDoc is more ready + stateComparison < 0 || + // or taskDoc is more recent, when having the same state + (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn) + ) { + duplicates.push(winners[emissionId]); + winners[emissionId] = taskDoc; + } else { + duplicates.push(taskDoc); + } + }); + }); -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); + return { winners, duplicates }; +}; -module.exports = root; +const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { + const tasksByEmission = {}; + taskDocs + // mitigate the fallout of a user who rewinds their system-clock after creating task docs + .filter(doc => doc.authoredOn <= maxTimestamp) + .forEach(doc => { + const emissionId = doc.emission._id; + if (!tasksByEmission[emissionId]) { + tasksByEmission[emissionId] = []; + } + tasksByEmission[emissionId].push(doc); + }); + return tasksByEmission; +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js ***! - \*******************************************************************************************************/ -/***/ ((module) => { - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js ***! + \**********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. + * @module rules-emitter + * Encapsulates interactions with the nools library + * Handles marshaling of documents into nools facts + * Promisifies the execution of partner "rules" code + * Ensures memory allocated by nools is freed after each run */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} - -module.exports = setCacheAdd; - - -/***/ }), +const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js"); +const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js ***! - \*******************************************************************************************************/ -/***/ ((module) => { +let flow; /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} - -module.exports = setCacheHas; - - -/***/ }), +* Sets the rules emitter to an uninitialized state. +*/ +const shutdown = () => { + nools.deleteFlows(); + flow = undefined; +}; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setToArray.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setToArray.js ***! - \******************************************************************************************************/ -/***/ ((module) => { +module.exports = { + /** + * Initializes the rules emitter + * + * @param {Object} settings Settings for the behavior of the rules emitter + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object} settings.contact The logged in user's contact document + * @returns {Boolean} Success + */ + initialize: (settings) => { + if (flow) { + throw Error('Attempted to initialize the rules emitter multiple times.'); + } -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); + if (!settings.rules) { + return false; + } - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} + shutdown(); -module.exports = setToArray; + try { + const settingsDoc = { tasks: { schedules: settings.taskSchedules } }; + const nootilsInstance = nootils(settingsDoc); + flow = nools.compile(settings.rules, { + name: 'medic', + scope: { + Utils: nootilsInstance, + user: settings.contact, + cht: settings.chtScriptApi, + }, + }); + } catch (err) { + shutdown(); + throw err; + } + return !!flow; + }, -/***/ }), + /** + * When upgrading to version 3.8, partners are required to make schema changes in their partner code + * TODO: Add link to documentation + * + * @returns True if the schema changes are in place + */ + isLatestNoolsSchema: () => { + if (!flow) { + throw Error('task emitter is not enabled -- cannot determine schema version'); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js ***! - \*********************************************************************************************************/ -/***/ ((module) => { + const Task = flow.getDefined('task'); + const Target = flow.getDefined('target'); + const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr); + return hasProperty(Task.prototype, 'readyStart') && + hasProperty(Task.prototype, 'readyEnd') && + hasProperty(Target.prototype, 'contact'); + }, -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; + /** + * Runs the partner's rules code for a set of documents and returns all emissions from nools + * + * @param {Object[]} contactDocs A set of contact documents + * @param {Object[]} reportDocs All of the contacts' reports + * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact) + * + * @returns {Promise} emissions The raw emissions from nools + * @returns {Object[]} emissions.tasks Array of task emissions + * @returns {Object[]} emissions.targets Array of target emissions + */ + getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => { + if (!flow) { + throw Error('task emitter is not enabled -- cannot get emissions'); + } - while (++index < length) { - if (array[index] === value) { - return index; + if (!Array.isArray(contactDocs)) { + throw Error('invalid argument: contactDocs is expected to be an array'); } - } - return -1; -} -module.exports = strictIndexOf; + if (!Array.isArray(reportDocs)) { + throw Error('invalid argument: reportDocs is expected to be an array'); + } + if (!Array.isArray(taskDocs)) { + throw Error('invalid argument: taskDocs is expected to be an array'); + } -/***/ }), + const session = startSession(); + try { + const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs); + facts.forEach(session.assert); + } catch (err) { + session.dispose(); + throw err; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_toSource.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_toSource.js ***! - \****************************************************************************************************/ -/***/ ((module) => { + return session.match(); + }, -/** Used for built-in method references. */ -var funcProto = Function.prototype; + /** + * @returns True if the rules emitter is initialized and ready for use + */ + isEnabled: () => !!flow, -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; + shutdown, +}; -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} +const startSession = function() { + if (!flow) { + throw Error('Failed to start task session. Not initialized'); } - return ''; -} -module.exports = toSource; - - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/eq.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/eq.js ***! - \*********************************************************************************************/ -/***/ ((module) => { + const session = flow.getSession(); + const tasks = []; + const targets = []; + session.on('task', task => tasks.push(task)); + session.on('target', target => targets.push(target)); -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} + return { + assert: session.assert.bind(session), + dispose: session.dispose.bind(session), -module.exports = eq; + // session.match can return a thenable but not a promise. so wrap it in a real promise + match: () => new Promise((resolve, reject) => { + session.match(err => { + session.dispose(); + if (err) { + return reject(err); + } + resolve({ tasks, targets }); + }); + }), + }; +}; -/***/ }), +const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { + const Contact = flow.getDefined('contact'); -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isFunction.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isFunction.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const factByContactId = contactDocs.reduce((agg, contact) => { + agg[contact._id] = new Contact({ contact, reports: [], tasks: [] }); + return agg; + }, {}); -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isObject.js"); + const factBySubjectId = contactDocs.reduce((agg, contactDoc) => { + const subjectIds = registrationUtils.getSubjectIds(contactDoc); + for (const subjectId of subjectIds) { + if (!agg[subjectId]) { + agg[subjectId] = factByContactId[contactDoc._id]; + } + } + return agg; + }, {}); -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; + const addHeadlessContact = (contactId) => { + const contact = contactId ? { _id: contactId } : undefined; + const newFact = new Contact({ contact, reports: [], tasks: [] }); + factByContactId[contactId] = factBySubjectId[contactId] = newFact; + return newFact; + }; -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; + for (const report of reportDocs) { + const subjectIdInReport = registrationUtils.getSubjectId(report); + const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport); + factOfPatient.reports.push(report); } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} - -module.exports = isFunction; - - -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isObject.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isObject.js ***! - \***************************************************************************************************/ -/***/ ((module) => { + if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) { + for (const task of taskDocs) { + const sourceId = task.requester; + const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId); + factOfPatient.tasks.push(task); + } + } -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} -module.exports = isObject; + return Object.keys(factByContactId).map(key => { + factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date); + return factByContactId[key]; + }); // Object.values(factByContactId) +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/noop.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/noop.js ***! - \***********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js ***! + \**************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] + * @module rules-state-store + * In-memory datastore containing + * 1. Details on the state of each contact's rules calculations + * 2. Target emissions @see target-state */ -function noop() { - // No operation performed. -} - -module.exports = noop; - +const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); +const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js"); -/***/ }), +const EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000; +let state; +let currentUserContact; +let currentUserSettings; +let onStateChange; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/uniq.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/uniq.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const self = { + /** + * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state. + * + * @param {Object} existingState State object previously passed to the stateChangeCallback + * @param {Object} settings Settings for the behavior of the rules store + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's user-settings document + * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes. + * Receives the updated state as the only parameter. + * @returns {Boolean} that represents whether or not the state needs to be rebuilt + */ + load: (existingState, settings, stateChangeCallback) => { + if (state) { + throw Error('Attempted to initialize the rules-state-store multiple times.'); + } -var baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js"); + state = existingState; + currentUserContact = settings.contact; + currentUserSettings = settings.user; + setOnChangeState(stateChangeCallback); -/** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ -function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; -} + const rulesConfigHash = hashRulesConfig(settings); + if (state && state.rulesConfigHash !== rulesConfigHash) { + state.stale = true; + } -module.exports = uniq; + return !state || state.stale; + }, + /** + * Initializes an empty rules-state-store. + * + * @param {Object} settings Settings for the behavior of the rules store + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's user-settings document + * @param {number} settings.monthStartDate reporting interval start date + * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes. + * Receives the updated state as the only parameter. + */ + build: (settings, stateChangeCallback) => { + if (state && !state.stale) { + throw Error('Attempted to initialize the rules-state-store multiple times.'); + } -/***/ }), + state = { + rulesConfigHash: hashRulesConfig(settings), + contactState: {}, + targetState: targetState.createEmptyState(settings.targets), + monthStartDate: settings.monthStartDate, + }; + currentUserContact = settings.contact; + currentUserSettings = settings.user; -/***/ "./node_modules/cht-core-3-10/shared-libs/registration-utils/src/index.js": -/*!********************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/registration-utils/src/index.js ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + setOnChangeState(stateChangeCallback); + return onStateChange(state); + }, -const uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/uniq.js"); + /** + * "Dirty" indicates that the contact's task documents are not up to date. They should be refreshed before being used. + * + * The dirty state can be due to: + * 1. The time of a contact's most recent task calculation is unknown + * 2. The contact's most recent task calculation expires + * 3. The contact is explicitly marked as dirty + * 4. Configurations impacting rules calculations have changed + * + * @param {string} contactId The id of the contact to test for dirtiness + * @returns {Boolean} True if dirty + */ + isDirty: contactId => { + if (!contactId) { + return false; + } -const formCodeMatches = (conf, form) => { - return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form); -}; + if (!state.contactState[contactId]) { + return true; + } -// Returns whether `doc` is a valid registration against a configuration -// This is done by checks roughly similar to the `registration` transition filter function -// Serves as a replacement for checking for `transitions` metadata within the doc itself -exports.isValidRegistration = (doc, settings) => { - if (!doc || - (doc.errors && doc.errors.length) || - !settings || - !settings.registrations || - doc.type !== 'data_record' || - !doc.form) { - return false; - } + const now = Date.now(); + const { calculatedAt, expireAt, isDirty } = state.contactState[contactId]; + return !expireAt || + isDirty || + calculatedAt > now || /* system clock changed */ + expireAt < now; /* isExpired */ + }, - // Registration transition should be configured for this form - const registrationConfiguration = settings.registrations.find((conf) => { - return conf && - conf.form && - formCodeMatches(conf.form, doc.form); - }); - if (!registrationConfiguration) { - return false; - } + /** + * Determines if either the settings document or user's hydrated contact document have changed in a way which + * will impact the result of rules calculations. + * If they have changed in a meaningful way, the calculation state of all contacts is reset + * + * @param {Object} settings Settings for the behavior of the rules store + * @returns {Boolean} True if the state of all contacts has been reset + */ + rulesConfigChange: (settings) => { + const rulesConfigHash = hashRulesConfig(settings); + if (state.rulesConfigHash !== rulesConfigHash) { + state = { + rulesConfigHash, + contactState: {}, + targetState: targetState.createEmptyState(settings.targets), + monthStartDate: settings.monthStartDate, + }; + currentUserContact = settings.contact; + currentUserSettings = settings.user; - if (doc.content_type === 'xml') { - return true; - } + onStateChange(state); + return true; + } - // SMS forms need to be configured - const form = settings.forms && settings.forms[doc.form]; - if (!form) { return false; - } - - // Require a known submitter or the form to be public. - return Boolean(form.public_form || doc.contact); -}; - -exports._formCodeMatches = formCodeMatches; + }, -const CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id']; -const REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid']; + /** + * @param {int} calculatedAt Timestamp of the calculation + * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated + */ + markFresh: (calculatedAt, contactIds) => { + if (!Array.isArray(contactIds)) { + contactIds = [contactIds]; + } + contactIds = contactIds.filter(id => id); -exports.getSubjectIds = (doc) => { - const subjectIds = []; + if (contactIds.length === 0) { + return; + } - if (!doc) { - return subjectIds; - } + const reportingInterval = calendarInterval.getCurrent(state.monthStartDate); + const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS; - if (doc.type === 'data_record') { - REPORT_SUBJECT_PROPERTIES.forEach(prop => { - if (doc[prop]) { - subjectIds.push(doc[prop]); - } - if (doc.fields && doc.fields[prop]) { - subjectIds.push(doc.fields[prop]); - } - }); - } else { - CONTACT_SUBJECT_PROPERTIES.forEach(prop => { - if (doc[prop]) { - subjectIds.push(doc[prop]); - } - }); - } + for (const contactId of contactIds) { + state.contactState[contactId] = { + calculatedAt, + expireAt: Math.min(reportingInterval.end, defaultExpiry), + }; + } - return uniq(subjectIds); -}; + return onStateChange(state); + }, -exports.getSubjectId = report => { - if (!report) { - return false; - } - for (const prop of REPORT_SUBJECT_PROPERTIES) { - if (report[prop]) { - return report[prop]; + /** + * @param {string[]} contactIds Array of contact ids to be marked as dirty + */ + markDirty: contactIds => { + if (!Array.isArray(contactIds)) { + contactIds = [contactIds]; } - if (report.fields && report.fields[prop]) { - return report.fields[prop]; + contactIds = contactIds.filter(id => id); + + if (contactIds.length === 0) { + return; } - } -}; + for (const contactId of contactIds) { + if (!state.contactState[contactId]) { + state.contactState[contactId] = {}; + } -/***/ }), + state.contactState[contactId].isDirty = true; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js ***! - \******************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + return onStateChange(state); + }, -(function () { - "use strict"; + /** + * @returns {string[]} The id of all contacts tracked by the store + */ + getContactIds: () => Object.keys(state.contactState), - function defineArgumentsExtended(extended, is) { + /** + * The rules system supports the concept of "headless" reports and "headless" task documents. In these scenarios, + * a report exists on a user's device while the associated contact document of that report is not on the device. + * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the + * needs_signoff attribute but not the associated patient. + * + * In these cases, getting a list of "all the contacts with rules" requires us to look not just through contact + * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which + * indicates if the contact ids in the store can serve as a trustworthy authority. + * + * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with + * rules + */ + markAllFresh: (calculatedAt, contactIds) => { + state.allContactIds = true; + return self.markFresh(calculatedAt, contactIds); + }, - var pSlice = Array.prototype.slice, - isArguments = is.isArguments; + /** + * @returns True if markAllFresh has been called on the current store state. + */ + hasAllContacts: () => !!state.allContactIds, - function argsToArray(args, slice) { - var i = -1, j = 0, l = args.length, ret = []; - slice = slice || 0; - i += slice; - while (++i < l) { - ret[j++] = args[i]; - } - return ret; - } + /** + * @returns {string} User contact document + */ + currentUserContact: () => currentUserContact, + + /** + * @returns {string} User settings document + */ + currentUserSettings: () => currentUserSettings, + /** + * @returns {number} The timestamp when the current loaded state was last updated + */ + stateLastUpdatedAt: () => state.calculatedAt, - return extended - .define(isArguments, { - toArray: argsToArray - }) - .expose({ - argsToArray: argsToArray - }); + /** + * @returns {number} current monthStartDate + */ + getMonthStartDate: () => state.monthStartDate, + + /** + * @returns {boolean} whether or not the state is loaded + */ + isLoaded: () => !!state, + + /** + * Store a set of target emissions which were emitted by refreshing a set of contacts + * + * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed. + * If undefined, all contacts are updated. + * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter). + */ + storeTargetEmissions: (contactIds, targetEmissions) => { + const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions); + if (isUpdated) { + return onStateChange(state); } + }, - if (true) { - if ( true && module.exports) { - module.exports = defineArgumentsExtended(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")); + /** + * Aggregates the stored target emissions into target models + * + * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should + * be aggregated + * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf()) + * + * @returns {Object[]} result + * @returns {string} result[n].* All attributes of the target as defined in the settings doc + * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter + * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the + * latest emission with truthy "pass" + * @returns {Integer} result[n].percent The percentage of pass/total + */ + aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions( + state.targetState, + targetEmissionFilter + ), - } - } else {} + /** + * Returns a list of UUIDs of tracked contacts that are marked as dirty + * @returns {Array} list of dirty contacts UUIDs + */ + getDirtyContacts: () => self.getContactIds().filter(self.isDirty), +}; -}).call(this); +const hashRulesConfig = (settings) => { + const asString = JSON.stringify(settings); + return md5(asString); +}; +const setOnChangeState = (stateChangeCallback) => { + onStateChange = (state) => { + state.calculatedAt = new Date().getTime(); + if (stateChangeCallback && typeof stateChangeCallback === 'function') { + return stateChangeCallback(state); + } + }; +}; -/***/ }), +// ensure all exported functions are only ever called after initialization +module.exports = Object.keys(self).reduce((agg, key) => { + agg[key] = (...args) => { + if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) { + throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js ***! - \**************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + return self[key](...args); + }; + return agg; +}, {}); -(function () { - "use strict"; - /*global define*/ - function defineArray(extended, is, args) { +/***/ }), - var isString = is.isString, - isArray = Array.isArray || is.isArray, - isDate = is.isDate, - floor = Math.floor, - abs = Math.abs, - mathMax = Math.max, - mathMin = Math.min, - arrayProto = Array.prototype, - arrayIndexOf = arrayProto.indexOf, - arrayForEach = arrayProto.forEach, - arrayMap = arrayProto.map, - arrayReduce = arrayProto.reduce, - arrayReduceRight = arrayProto.reduceRight, - arrayFilter = arrayProto.filter, - arrayEvery = arrayProto.every, - arraySome = arrayProto.some, - argsToArray = args.argsToArray; +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js ***! + \*********************************************************************************/ +/***/ ((module) => { +/** + * @module target-state + * + * Stores raw target-emissions in a minified, efficient, deterministic structure + * Handles removal of "cancelled" target emissions + * Aggregates target emissions into targets + */ - function cross(num, cros) { - return reduceRight(cros, function (a, b) { - if (!isArray(b)) { - b = [b]; - } - b.unshift(num); - a.unshift(b); - return a; - }, []); - } +/** @summary state + * Functions in this module all accept a "state" parameter or return a "state" object. + * This state has the following structure: + * + * @example + * { + * target.id: { + * id: 'target_id', + * type: 'count', + * goal: 0, + * .. + * + * emissions: { + * emission.id: { + * requestor.id: { + * pass: boolean, + * date: timestamp, + * order: timestamp, + * }, + * .. + * }, + * .. + * } + * }, + * .. + * } + */ - function permute(num, cross, length) { - var ret = []; - for (var i = 0; i < cross.length; i++) { - ret.push([num].concat(rotate(cross, i)).slice(0, length)); - } - return ret; - } +module.exports = { + /** + * Builds an empty target-state. + * + * @param {Object[]} targets An array of target definitions + */ + createEmptyState: (targets=[]) => { + return targets + .reduce((agg, definition) => { + agg[definition.id] = Object.assign({}, definition, { emissions: {} }); + return agg; + }, {}); + }, + storeTargetEmissions: (state, contactIds, targetEmissions) => { + let isUpdated = false; + if (!Array.isArray(targetEmissions)) { + throw Error('targetEmissions argument must be an array'); + } - function intersection(a, b) { - var ret = [], aOne, i = -1, l; - l = a.length; - while (++i < l) { - aOne = a[i]; - if (indexOf(b, aOne) !== -1) { - ret.push(aOne); - } + // Remove all emissions that were previously emitted by the contact ("cancelled emissions") + if (!contactIds) { + for (const targetId of Object.keys(state)) { + state[targetId].emissions = {}; + } + } else { + for (const contactId of contactIds) { + for (const targetId of Object.keys(state)) { + for (const emissionId of Object.keys(state[targetId].emissions)) { + const emission = state[targetId].emissions[emissionId]; + if (emission[contactId]) { + delete emission[contactId]; + isUpdated = true; } - return ret; + } } + } + } + // Merge the emission data into state + for (const emission of targetEmissions) { + const target = state[emission.type]; + const requestor = emission.contact && emission.contact._id; + if (target && requestor && !emission.deleted) { + const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {}; + targetRequestors[requestor] = { + pass: !!emission.pass, + groupBy: emission.groupBy, + date: emission.date, + order: emission.contact.reported_date || -1, + }; + isUpdated = true; + } + } - var _sort = (function () { + return isUpdated; + }, - var isAll = function (arr, test) { - return every(arr, test); - }; + aggregateStoredTargetEmissions: (state, targetEmissionFilter) => { + const pick = (obj, attrs) => attrs + .reduce((agg, attr) => { + if (Object.hasOwnProperty.call(obj, attr)) { + agg[attr] = obj[attr]; + } + return agg; + }, {}); - var defaultCmp = function (a, b) { - return a - b; - }; + const scoreTarget = target => { + const emissionIds = Object.keys(target.emissions); + const relevantEmissions = emissionIds + // emissions passing the "targetEmissionFilter" + .map(emissionId => { + const requestorIds = Object.keys(target.emissions[emissionId]); + const filteredInstanceIds = requestorIds.filter(requestorId => { + return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]); + }); + return pick(target.emissions[emissionId], filteredInstanceIds); + }) - var dateSort = function (a, b) { - return a.getTime() - b.getTime(); - }; + // if there are multiple emissions with the same id emitted by different contacts, disambiguate them + .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor)) + .filter(emission => emission); - return function _sort(arr, property) { - var ret = []; - if (isArray(arr)) { - ret = arr.slice(); - if (property) { - if (typeof property === "function") { - ret.sort(property); - } else { - ret.sort(function (a, b) { - var aProp = a[property], bProp = b[property]; - if (isString(aProp) && isString(bProp)) { - return aProp > bProp ? 1 : aProp < bProp ? -1 : 0; - } else if (isDate(aProp) && isDate(bProp)) { - return aProp.getTime() - bProp.getTime(); - } else { - return aProp - bProp; - } - }); - } - } else { - if (isAll(ret, isString)) { - ret.sort(); - } else if (isAll(ret, isDate)) { - ret.sort(dateSort); - } else { - ret.sort(defaultCmp); - } - } - } - return ret; - }; + const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte; + if (!passingThreshold) { + return { + pass: relevantEmissions.filter(emission => emission.pass).length, + total: relevantEmissions.length, + }; + } - })(); + const countPassedEmissionsByGroup = {}; + const countEmissionsByGroup = {}; - function indexOf(arr, searchElement, from) { - var index = (from || 0) - 1, - length = arr.length; - while (++index < length) { - if (arr[index] === searchElement) { - return index; - } - } - return -1; + relevantEmissions.forEach(emission => { + const groupBy = emission.groupBy; + if (!groupBy) { + return; + } + if (!countPassedEmissionsByGroup[groupBy]) { + countPassedEmissionsByGroup[groupBy] = 0; + countEmissionsByGroup[groupBy] = 0; + } + countEmissionsByGroup[groupBy]++; + if (emission.pass) { + countPassedEmissionsByGroup[groupBy]++; } + }); - function lastIndexOf(arr, searchElement, from) { - if (!isArray(arr)) { - throw new TypeError(); - } + const groups = Object.keys(countEmissionsByGroup); - var t = Object(arr); - var len = t.length >>> 0; - if (len === 0) { - return -1; - } + return { + pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length, + total: groups.length, + }; + }; - var n = len; - if (arguments.length > 2) { - n = Number(arguments[2]); - if (n !== n) { - n = 0; - } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { - n = (n > 0 || -1) * floor(abs(n)); - } - } + const aggregateTarget = target => { + const aggregated = pick( + target, + ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible'] + ); + aggregated.value = scoreTarget(target); - var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n); + if (aggregated.type === 'percent') { + aggregated.value.percent = aggregated.value.total ? + Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0; + } - for (; k >= 0; k--) { - if (k in t && t[k] === searchElement) { - return k; - } - } - return -1; + return aggregated; + }; + + const emissionOfLatestRequestor = emissionsByRequestor => { + return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => { + const current = emissionsByRequestor[requestorId]; + if (!previousValue || !previousValue.order || current.order > previousValue.order) { + return current; } + return previousValue; + }, undefined); + }; - function filter(arr, iterator, scope) { - if (arr && arrayFilter && arrayFilter === arr.filter) { - return arr.filter(iterator, scope); - } - if (!isArray(arr) || typeof iterator !== "function") { - throw new TypeError(); - } + return Object.keys(state).map(targetId => aggregateTarget(state[targetId])); + }, +}; - var t = Object(arr); - var len = t.length >>> 0; - var res = []; - for (var i = 0; i < len; i++) { - if (i in t) { - var val = t[i]; // in case fun mutates this - if (iterator.call(scope, val, i, t)) { - res.push(val); - } - } - } - return res; - } - function forEach(arr, iterator, scope) { - if (!isArray(arr) || typeof iterator !== "function") { - throw new TypeError(); - } - if (arr && arrayForEach && arrayForEach === arr.forEach) { - arr.forEach(iterator, scope); - return arr; - } - for (var i = 0, len = arr.length; i < len; ++i) { - iterator.call(scope || arr, arr[i], i, arr); - } +/***/ }), - return arr; - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js": +/*!********************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js ***! + \********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function every(arr, iterator, scope) { - if (arr && arrayEvery && arrayEvery === arr.every) { - return arr.every(iterator, scope); - } - if (!isArray(arr) || typeof iterator !== "function") { - throw new TypeError(); - } - var t = Object(arr); - var len = t.length >>> 0; - for (var i = 0; i < len; i++) { - if (i in t && !iterator.call(scope, t[i], i, t)) { - return false; - } - } - return true; - } +/** + * @module task-states + * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine + */ - function some(arr, iterator, scope) { - if (arr && arraySome && arraySome === arr.some) { - return arr.some(iterator, scope); - } - if (!isArray(arr) || typeof iterator !== "function") { - throw new TypeError(); - } - var t = Object(arr); - var len = t.length >>> 0; - for (var i = 0; i < len; i++) { - if (i in t && iterator.call(scope, t[i], i, t)) { - return true; - } - } - return false; - } +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); - function map(arr, iterator, scope) { - if (arr && arrayMap && arrayMap === arr.map) { - return arr.map(iterator, scope); - } - if (!isArray(arr) || typeof iterator !== "function") { - throw new TypeError(); - } +/** + * Problems: + * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading + * to this rules-engine. + * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged. + * The two scenarios above are important for maintaining the client-side performance of the app. + * + * Therefore, we only consider task emissions "timely" if they end within a fixed time period. + * However, if this window is too short then users who don't login frequently may fail to create a task document at all. + * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are + * recorded as docs. + */ +const TIMELY_WHEN_NEWER_THAN_DAYS = 60; - var t = Object(arr); - var len = t.length >>> 0; - var res = []; - for (var i = 0; i < len; i++) { - if (i in t) { - res.push(iterator.call(scope, t[i], i, t)); - } - } - return res; - } +// This must be a comparable string format to avoid a bunch of parsing. For example, "2000-01-01" < "2010-11-31" +const formatString = 'YYYY-MM-DD'; - function reduce(arr, accumulator, curr) { - var initial = arguments.length > 2; - if (arr && arrayReduce && arrayReduce === arr.reduce) { - return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator); - } - if (!isArray(arr) || typeof accumulator !== "function") { - throw new TypeError(); - } - var i = 0, l = arr.length >> 0; - if (arguments.length < 3) { - if (l === 0) { - throw new TypeError("Array length is 0 and no second argument"); - } - curr = arr[0]; - i = 1; // start accumulating at the second element - } else { - curr = arguments[2]; - } - while (i < l) { - if (i in arr) { - curr = accumulator.call(undefined, curr, arr[i], i, arr); - } - ++i; - } - return curr; - } +const States = { + /** + * Task has been calculated but it is scheduled in the future + */ + Draft: 'Draft', - function reduceRight(arr, accumulator, curr) { - var initial = arguments.length > 2; - if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) { - return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator); - } - if (!isArray(arr) || typeof accumulator !== "function") { - throw new TypeError(); - } + /** + * Task is currently showing to the user + */ + Ready: 'Ready', - var t = Object(arr); - var len = t.length >>> 0; + /** + * Task was not emitted when refreshing the contact + * Task resulted from invalid emissions + */ + Cancelled: 'Cancelled', - // no value to return if no initial value, empty array - if (len === 0 && arguments.length === 2) { - throw new TypeError(); - } + /** + * Task was emitted with { resolved: true } + */ + Completed: 'Completed', - var k = len - 1; - if (arguments.length >= 3) { - curr = arguments[2]; - } else { - do { - if (k in arr) { - curr = arr[k--]; - break; - } - } - while (true); - } - while (k >= 0) { - if (k in t) { - curr = accumulator.call(undefined, curr, t[k], k, t); - } - k--; - } - return curr; - } + /** + * Task was never terminated and is now outside the allowed time window + */ + Failed: 'Failed', +}; +const getDisplayWindow = (taskEmission) => { + const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate; + if (hasExistingDisplayWindow) { + return { + dueDate: taskEmission.dueDate, + startDate: taskEmission.startDate, + endDate: taskEmission.endDate, + }; + } - function toArray(o) { - var ret = []; - if (o !== null) { - var args = argsToArray(arguments); - if (args.length === 1) { - if (isArray(o)) { - ret = o; - } else if (is.isHash(o)) { - for (var i in o) { - if (o.hasOwnProperty(i)) { - ret.push([i, o[i]]); - } - } - } else { - ret.push(o); - } - } else { - forEach(args, function (a) { - ret = ret.concat(toArray(a)); - }); - } - } - return ret; - } + const dueDate = moment(taskEmission.date); + if (!dueDate.isValid()) { + return { dueDate: NaN, startDate: NaN, endDate: NaN }; + } - function sum(array) { - array = array || []; - if (array.length) { - return reduce(array, function (a, b) { - return a + b; - }); - } else { - return 0; - } - } + return { + dueDate: dueDate.format(formatString), + startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString), + endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString), + }; +}; - function avg(arr) { - arr = arr || []; - if (arr.length) { - var total = sum(arr); - if (is.isNumber(total)) { - return total / arr.length; - } else { - throw new Error("Cannot average an array of non numbers."); - } - } else { - return 0; - } - } +const mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled]; +const orderOf = state => { + const order = mostReadyOrder.indexOf(state); + return order >= 0 ? order : mostReadyOrder.length; +}; - function sort(arr, cmp) { - return _sort(arr, cmp); - } +module.exports = { + isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state), - function min(arr, cmp) { - return _sort(arr, cmp)[0]; - } + isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB), - function max(arr, cmp) { - return _sort(arr, cmp)[arr.length - 1]; - } + compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB), - function difference(arr1) { - var ret = arr1, args = flatten(argsToArray(arguments, 1)); - if (isArray(arr1)) { - ret = filter(arr1, function (a) { - return indexOf(args, a) === -1; - }); - } - return ret; - } + calculateState: (taskEmission, timestamp) => { + if (!taskEmission) { + return false; + } - function removeDuplicates(arr) { - var ret = [], i = -1, l, retLength = 0; - if (arr) { - l = arr.length; - while (++i < l) { - var item = arr[i]; - if (indexOf(ret, item) === -1) { - ret[retLength++] = item; - } - } - } - return ret; - } + if (taskEmission.resolved) { + return States.Completed; + } + + if (taskEmission.deleted) { + return States.Cancelled; + } + // invalid data yields falsey + if (!taskEmission.date && !taskEmission.dueDate) { + return false; + } - function unique(arr) { - return removeDuplicates(arr); - } + const { startDate, endDate } = getDisplayWindow(taskEmission); + if (!startDate || !endDate || startDate > endDate || endDate < startDate) { + return false; + } + const timestampAsDate = moment(timestamp).format(formatString); + if (startDate > timestampAsDate) { + return States.Draft; + } - function rotate(arr, numberOfTimes) { - var ret = arr.slice(); - if (typeof numberOfTimes !== "number") { - numberOfTimes = 1; - } - if (numberOfTimes && isArray(arr)) { - if (numberOfTimes > 0) { - ret.push(ret.shift()); - numberOfTimes--; - } else { - ret.unshift(ret.pop()); - numberOfTimes++; - } - return rotate(ret, numberOfTimes); - } else { - return ret; - } - } + if (endDate < timestampAsDate) { + return States.Failed; + } - function permutations(arr, length) { - var ret = []; - if (isArray(arr)) { - var copy = arr.slice(0); - if (typeof length !== "number") { - length = arr.length; - } - if (!length) { - ret = [ - [] - ]; - } else if (length <= arr.length) { - ret = reduce(arr, function (a, b, i) { - var ret; - if (length > 1) { - ret = permute(b, rotate(copy, i).slice(1), length); - } else { - ret = [ - [b] - ]; - } - return a.concat(ret); - }, []); - } - } - return ret; - } + return States.Ready; + }, - function zip() { - var ret = []; - var arrs = argsToArray(arguments); - if (arrs.length > 1) { - var arr1 = arrs.shift(); - if (isArray(arr1)) { - ret = reduce(arr1, function (a, b, i) { - var curr = [b]; - for (var j = 0; j < arrs.length; j++) { - var currArr = arrs[j]; - if (isArray(currArr) && !is.isUndefined(currArr[i])) { - curr.push(currArr[i]); - } else { - curr.push(null); - } - } - a.push(curr); - return a; - }, []); - } - } - return ret; - } + getDisplayWindow, - function transpose(arr) { - var ret = []; - if (isArray(arr) && arr.length) { - var last; - forEach(arr, function (a) { - if (isArray(a) && (!last || a.length === last.length)) { - forEach(a, function (b, i) { - if (!ret[i]) { - ret[i] = []; - } - ret[i].push(b); - }); - last = a; - } - }); - } - return ret; - } + isTimely: (taskEmission, timestamp) => { + const { endDate } = getDisplayWindow(taskEmission); + return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString); + }, - function valuesAt(arr, indexes) { - var ret = []; - indexes = argsToArray(arguments); - arr = indexes.shift(); - if (isArray(arr) && indexes.length) { - for (var i = 0, l = indexes.length; i < l; i++) { - ret.push(arr[indexes[i]] || null); - } - } - return ret; - } + setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => { + if (!taskDoc) { + return; + } - function union() { - var ret = []; - var arrs = argsToArray(arguments); - if (arrs.length > 1) { - for (var i = 0, l = arrs.length; i < l; i++) { - ret = ret.concat(arrs[i]); - } - ret = removeDuplicates(ret); - } - return ret; - } + if (!updatedState) { + taskDoc.state = States.Cancelled; + taskDoc.stateReason = 'invalid'; + } else { + taskDoc.state = updatedState; + if (reason) { + taskDoc.stateReason = reason; + } + } - function intersect() { - var collect = [], sets, i = -1 , l; - if (arguments.length > 1) { - //assume we are intersections all the lists in the array - sets = argsToArray(arguments); - } else { - sets = arguments[0]; - } - if (isArray(sets)) { - collect = sets[0]; - i = 0; - l = sets.length; - while (++i < l) { - collect = intersection(collect, sets[i]); - } - } - return removeDuplicates(collect); - } + const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || []; + const mostRecentState = stateHistory[stateHistory.length - 1]; + if (!mostRecentState || taskDoc.state !== mostRecentState.state) { + const stateChange = { state: taskDoc.state, timestamp }; + stateHistory.push(stateChange); + } - function powerSet(arr) { - var ret = []; - if (isArray(arr) && arr.length) { - ret = reduce(arr, function (a, b) { - var ret = map(a, function (c) { - return c.concat(b); - }); - return a.concat(ret); - }, [ - [] - ]); - } - return ret; - } + return taskDoc; + }, +}; - function cartesian(a, b) { - var ret = []; - if (isArray(a) && isArray(b) && a.length && b.length) { - ret = cross(a[0], b).concat(cartesian(a.slice(1), b)); - } - return ret; - } +Object.assign(module.exports, States); - function compact(arr) { - var ret = []; - if (isArray(arr) && arr.length) { - ret = filter(arr, function (item) { - return !is.isUndefinedOrNull(item); - }); - } - return ret; - } - function multiply(arr, times) { - times = is.isNumber(times) ? times : 1; - if (!times) { - //make sure times is greater than zero if it is zero then dont multiply it - times = 1; - } - arr = toArray(arr || []); - var ret = [], i = 0; - while (++i <= times) { - ret = ret.concat(arr); - } - return ret; - } +/***/ }), - function flatten(arr) { - var set; - var args = argsToArray(arguments); - if (args.length > 1) { - //assume we are intersections all the lists in the array - set = args; - } else { - set = toArray(arr); - } - return reduce(set, function (a, b) { - return a.concat(b); - }, []); - } +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js ***! + \***************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function pluck(arr, prop) { - prop = prop.split("."); - var result = arr.slice(0); - forEach(prop, function (prop) { - var exec = prop.match(/(\w+)\(\)$/); - result = map(result, function (item) { - return exec ? item[exec[1]]() : item[prop]; - }); - }); - return result; - } +/** + * @module transform-task-emission-to-doc + * Transforms a task emission into the schema used by task documents + * Minifies all unneeded data from the emission + * Merges emission data into an existing document, or creates a new task document (as appropriate) + */ + +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); - function invoke(arr, func, args) { - args = argsToArray(arguments, 2); - return map(arr, function (item) { - var exec = isString(func) ? item[func] : func; - return exec.apply(item, args); - }); - } +/** + * @param {Object} taskEmission A task emission from the rules engine + * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated + * @param {Object} existingDoc The most recent taskDocument with the same emission id + * @returns {Object} result + * @returns {Object} result.taskDoc The result of the transformation + * @returns {Boolean} result.isUpdated True if the document is new or has been altered + */ +module.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => { + const emittedState = TaskStates.calculateState(taskEmission, calculatedAt); + const baseFromExistingDoc = !!existingDoc && + (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState); - var array = { - toArray: toArray, - sum: sum, - avg: avg, - sort: sort, - min: min, - max: max, - difference: difference, - removeDuplicates: removeDuplicates, - unique: unique, - rotate: rotate, - permutations: permutations, - zip: zip, - transpose: transpose, - valuesAt: valuesAt, - union: union, - intersect: intersect, - powerSet: powerSet, - cartesian: cartesian, - compact: compact, - multiply: multiply, - flatten: flatten, - pluck: pluck, - invoke: invoke, - forEach: forEach, - map: map, - filter: filter, - reduce: reduce, - reduceRight: reduceRight, - some: some, - every: every, - indexOf: indexOf, - lastIndexOf: lastIndexOf - }; + // reduce document churn - don't tweak data on existing docs in terminal states + const baselineStateOfExistingDoc = baseFromExistingDoc && + !TaskStates.isTerminal(existingDoc.state) && + JSON.stringify(existingDoc); + const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt); + taskDoc.user = userSettingsId; + taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id; + taskDoc.owner = taskEmission.contact && taskEmission.contact._id; + minifyEmission(taskDoc, taskEmission); + TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt); - return extended.define(isArray, array).expose(array); + const isUpdated = (() => { + if (!baseFromExistingDoc) { + // do not create new documents where the initial state is cancelled (invalid emission) + return taskDoc.state !== TaskStates.Cancelled; } - if (true) { - if ( true && module.exports) { - module.exports = defineArray(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); - } - } else {} - -}).call(this); + return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc; + })(); + return { + isUpdated, + taskDoc, + }; +}; +const minifyEmission = (taskDoc, emission) => { + const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ] + .reduce((agg, attr) => { + if (Object.hasOwnProperty.call(emission, attr)) { + agg[attr] = emission[attr]; + } + return agg; + }, {}); + /* + The declarative configuration "contactLabel" results in a task emission with a contact with only a name attribute. + For backward compatibility, contacts which don't provide an id should not be minified and rehydrated. + */ + if (emission.contact) { + minified.contact = { name: emission.contact.name }; + } + if (emission.date || emission.dueDate) { + const timeWindow = TaskStates.getDisplayWindow(emission); + Object.assign(minified, timeWindow); + } + minified.actions && minified.actions + .filter(action => action && action.content) + .forEach(action => { + if (!minified.forId) { + minified.forId = action.content.contact && action.content.contact._id; + } + delete action.content.contact; + }); + taskDoc.emission = minified; + return taskDoc; +}; +const newTaskDoc = (emission, userSettingsId, calculatedAt) => ({ + _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`, + type: 'task', + authoredOn: calculatedAt, + stateHistory: [], +}); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js ***! - \*********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var charenc = { - // UTF-8 encoding - utf8: { - // Convert a string to a byte array - stringToBytes: function(str) { - return charenc.bin.stringToBytes(unescape(encodeURIComponent(str))); - }, +/** + * @module update-temporal-states + * As time elapses, documents change state because the timing window has been reached. + * Eg. Documents with state Draft move to state Ready just because it is now after midnight + */ +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); - // Convert a byte array to a string - bytesToString: function(bytes) { - return decodeURIComponent(escape(charenc.bin.bytesToString(bytes))); +/** + * @param {Object[]} taskDocs A list of task documents to evaluate + * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents + */ +module.exports = (taskDocs, timestamp = Date.now()) => { + const docsToCommit = []; + for (const taskDoc of taskDocs) { + let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp); + if (taskDoc.authoredOn > timestamp) { + updatedState = TaskStates.Cancelled; } - }, - - // Binary encoding - bin: { - // Convert a string to a byte array - stringToBytes: function(str) { - for (var bytes = [], i = 0; i < str.length; i++) - bytes.push(str.charCodeAt(i) & 0xFF); - return bytes; - }, - // Convert a byte array to a string - bytesToString: function(bytes) { - for (var str = [], i = 0; i < bytes.length; i++) - str.push(String.fromCharCode(bytes[i])); - return str.join(''); + if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) { + TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp); + docsToCommit.push(taskDoc); } } + + return docsToCommit; }; -module.exports = charenc; + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Afrikaans [af] +//! author : Werner Mollentze : https://github.com/wernerm + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var af = moment.defineLocale('af', { + months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split( + '_' + ), + weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), + weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + meridiemParse: /vm|nm/i, + isPM: function (input) { + return /^nm$/i.test(input); + }, + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'vm' : 'VM'; + } else { + return isLower ? 'nm' : 'NM'; + } + }, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Vandag om] LT', + nextDay: '[Môre om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[Gister om] LT', + lastWeek: '[Laas] dddd [om] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'oor %s', + past: '%s gelede', + s: "'n paar sekondes", + ss: '%d sekondes', + m: "'n minuut", + mm: '%d minute', + h: "'n uur", + hh: '%d ure', + d: "'n dag", + dd: '%d dae', + M: "'n maand", + MM: '%d maande', + y: "'n jaar", + yy: '%d jaar', + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week: { + dow: 1, // Maandag is die eerste dag van die week. + doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + }, + }); + + return af; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js ***! - \*****************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -(function() { - var base64map - = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', +//! moment.js locale configuration +//! locale : Arabic (Algeria) [ar-dz] +//! author : Amine Roukh: https://github.com/Amine27 +//! author : Abdel Said: https://github.com/abdelsaid +//! author : Ahmed Elkhatib +//! author : forabi https://github.com/forabi +//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem - crypt = { - // Bit-wise rotation left - rotl: function(n, b) { - return (n << b) | (n >>> (32 - b)); - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - // Bit-wise rotation right - rotr: function(n, b) { - return (n << (32 - b)) | (n >>> b); - }, + //! moment.js locale configuration - // Swap big-endian to little-endian and vice versa - endian: function(n) { - // If number given, swap endian - if (n.constructor == Number) { - return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; - } + var pluralForm = function (n) { + return n === 0 + ? 0 + : n === 1 + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; + }, + plurals = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, + months = [ + 'جانفي', + 'فيفري', + 'مارس', + 'أفريل', + 'ماي', + 'جوان', + 'جويلية', + 'أوت', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; - // Else, assume array and swap all items - for (var i = 0; i < n.length; i++) - n[i] = crypt.endian(n[i]); - return n; - }, + var arDz = moment.defineLocale('ar-dz', { + months: months, + monthsShort: months, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/\u200FM/\u200FYYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar: { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize('s'), + ss: pluralize('s'), + m: pluralize('m'), + mm: pluralize('m'), + h: pluralize('h'), + hh: pluralize('h'), + d: pluralize('d'), + dd: pluralize('d'), + M: pluralize('M'), + MM: pluralize('M'), + y: pluralize('y'), + yy: pluralize('y'), + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - // Generate an array of any length of random bytes - randomBytes: function(n) { - for (var bytes = []; n > 0; n--) - bytes.push(Math.floor(Math.random() * 256)); - return bytes; - }, + return arDz; - // Convert a byte array to big-endian 32-bit words - bytesToWords: function(bytes) { - for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) - words[b >>> 5] |= bytes[i] << (24 - b % 32); - return words; - }, +}))); - // Convert big-endian 32-bit words to a byte array - wordsToBytes: function(words) { - for (var bytes = [], b = 0; b < words.length * 32; b += 8) - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); - return bytes; - }, - // Convert a byte array to a hex string - bytesToHex: function(bytes) { - for (var hex = [], i = 0; i < bytes.length; i++) { - hex.push((bytes[i] >>> 4).toString(16)); - hex.push((bytes[i] & 0xF).toString(16)); - } - return hex.join(''); - }, +/***/ }), - // Convert a hex string to a byte array - hexToBytes: function(hex) { - for (var bytes = [], c = 0; c < hex.length; c += 2) - bytes.push(parseInt(hex.substr(c, 2), 16)); - return bytes; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - // Convert a byte array to a base-64 string - bytesToBase64: function(bytes) { - for (var base64 = [], i = 0; i < bytes.length; i += 3) { - var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; - for (var j = 0; j < 4; j++) - if (i * 8 + j * 6 <= bytes.length * 8) - base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); - else - base64.push('='); - } - return base64.join(''); - }, +//! moment.js locale configuration +//! locale : Arabic (Kuwait) [ar-kw] +//! author : Nusret Parlak: https://github.com/nusretparlak - // Convert a base-64 string to a byte array - base64ToBytes: function(base64) { - // Remove non-base-64 characters - base64 = base64.replace(/[^A-Z0-9+\/]/ig, ''); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - for (var bytes = [], i = 0, imod4 = 0; i < base64.length; - imod4 = ++i % 4) { - if (imod4 == 0) continue; - bytes.push(((base64map.indexOf(base64.charAt(i - 1)) - & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) - | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); - } - return bytes; - } - }; + //! moment.js locale configuration - module.exports = crypt; -})(); + var arKw = moment.defineLocale('ar-kw', { + months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( + '_' + ), + monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( + '_' + ), + weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); + + return arKw; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js ***! - \*************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -(function () { - "use strict"; +//! moment.js locale configuration +//! locale : Arabic (Lybia) [ar-ly] +//! author : Ali Hmer: https://github.com/kikoanis - function defineDate(extended, is, array) { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function _pad(string, length, ch, end) { - string = "" + string; //check for numbers - ch = ch || " "; - var strLen = string.length; - while (strLen < length) { - if (end) { - string += ch; - } else { - string = ch + string; - } - strLen++; - } - return string; - } + //! moment.js locale configuration - function _truncate(string, length, end) { - var ret = string; - if (is.isString(ret)) { - if (string.length > length) { - if (end) { - var l = string.length; - ret = string.substring(l - length, l); - } else { - ret = string.substring(0, length); - } + var symbolMap = { + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '0': '0', + }, + pluralForm = function (n) { + return n === 0 + ? 0 + : n === 1 + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; + }, + plurals = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; } + return str.replace(/%d/i, number); + }; + }, + months = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; + + var arLy = moment.defineLocale('ar-ly', { + months: months, + monthsShort: months, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/\u200FM/\u200FYYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; } else { - ret = _truncate("" + ret, length); + return 'م'; } - return ret; - } + }, + calendar: { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize('s'), + ss: pluralize('s'), + m: pluralize('m'), + mm: pluralize('m'), + h: pluralize('h'), + hh: pluralize('h'), + d: pluralize('d'), + dd: pluralize('d'), + M: pluralize('M'), + MM: pluralize('M'), + y: pluralize('y'), + yy: pluralize('y'), + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); - function every(arr, iterator, scope) { - if (!is.isArray(arr) || typeof iterator !== "function") { - throw new TypeError(); - } - var t = Object(arr); - var len = t.length >>> 0; - for (var i = 0; i < len; i++) { - if (i in t && !iterator.call(scope, t[i], i, t)) { - return false; - } - } - return true; - } + return arLy; +}))); - var transforms = (function () { - var floor = Math.floor, round = Math.round; - var addMap = { - day: function addDay(date, amount) { - return [amount, "Date", false]; - }, - weekday: function addWeekday(date, amount) { - // Divide the increment time span into weekspans plus leftover days - // e.g., 8 days is one 5-day weekspan / and two leftover days - // Can't have zero leftover days, so numbers divisible by 5 get - // a days value of 5, and the remaining days make up the number of weeks - var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0; - if (!mod) { - days = (amount > 0) ? 5 : -5; - weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5); - } else { - days = mod; - weeks = parseInt(amount / 5, 10); - } - if (strt === 6 && amount > 0) { - adj = 1; - } else if (strt === 0 && amount < 0) { - // Orig date is Sun / negative increment - // Jump back over Sat - adj = -1; - } - // Get weekday val for the new date - var trgt = strt + days; - // New date is on Sat or Sun - if (trgt === 0 || trgt === 6) { - adj = (amount > 0) ? 2 : -2; - } - // Increment by number of weeks plus leftover days plus - // weekend adjustments - return [(7 * weeks) + days + adj, "Date", false]; - }, - year: function addYear(date, amount) { - return [amount, "FullYear", true]; - }, - week: function addWeek(date, amount) { - return [amount * 7, "Date", false]; - }, - quarter: function addYear(date, amount) { - return [amount * 3, "Month", true]; - }, - month: function addYear(date, amount) { - return [amount, "Month", true]; - } - }; +/***/ }), - function addTransform(interval, date, amount) { - interval = interval.replace(/s$/, ""); - if (addMap.hasOwnProperty(interval)) { - return addMap[interval](date, amount); - } - return [amount, "UTC" + interval.charAt(0).toUpperCase() + interval.substring(1) + "s", false]; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Morocco) [ar-ma] +//! author : ElFadili Yassine : https://github.com/ElFadiliY +//! author : Abdel Said : https://github.com/abdelsaid + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var arMa = moment.defineLocale('ar-ma', { + months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( + '_' + ), + monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( + '_' + ), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); + + return arMa; + +}))); + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Arabic (Saudi Arabia) [ar-sa] +//! author : Suhail Alkowaileet : https://github.com/xsoh + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; + var arSa = moment.defineLocale('ar-sa', { + months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), + monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + preparse: function (string) { + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); - var differenceMap = { - "quarter": function quarterDifference(date1, date2, utc) { - var yearDiff = date2.getFullYear() - date1.getFullYear(); - var m1 = date1[utc ? "getUTCMonth" : "getMonth"](); - var m2 = date2[utc ? "getUTCMonth" : "getMonth"](); - // Figure out which quarter the months are in - var q1 = floor(m1 / 3) + 1; - var q2 = floor(m2 / 3) + 1; - // Add quarters for any year difference between the dates - q2 += (yearDiff * 4); - return q2 - q1; - }, + return arSa; - "weekday": function weekdayDifference(date1, date2, utc) { - var days = differenceTransform("day", date1, date2, utc), weeks; - var mod = days % 7; - // Even number of weeks - if (mod === 0) { - days = differenceTransform("week", date1, date2, utc) * 5; - } else { - // Weeks plus spare change (< 7 days) - var adj = 0, aDay = date1[utc ? "getUTCDay" : "getDay"](), bDay = date2[utc ? "getUTCDay" : "getDay"](); - weeks = parseInt(days / 7, 10); - // Mark the date advanced by the number of - // round weeks (may be zero) - var dtMark = new Date(+date1); - dtMark.setDate(dtMark[utc ? "getUTCDate" : "getDate"]() + (weeks * 7)); - var dayMark = dtMark[utc ? "getUTCDay" : "getDay"](); +}))); - // Spare change days -- 6 or less - if (days > 0) { - if (aDay === 6 || bDay === 6) { - adj = -1; - } else if (aDay === 0) { - adj = 0; - } else if (bDay === 0 || (dayMark + mod) > 5) { - adj = -2; - } - } else if (days < 0) { - if (aDay === 6) { - adj = 0; - } else if (aDay === 0 || bDay === 0) { - adj = 1; - } else if (bDay === 6 || (dayMark + mod) < 0) { - adj = 2; - } - } - days += adj; - days -= (weeks * 2); - } - return days; - }, - year: function (date1, date2) { - return date2.getFullYear() - date1.getFullYear(); - }, - month: function (date1, date2, utc) { - var m1 = date1[utc ? "getUTCMonth" : "getMonth"](); - var m2 = date2[utc ? "getUTCMonth" : "getMonth"](); - return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12); - }, - week: function (date1, date2, utc) { - return round(differenceTransform("day", date1, date2, utc) / 7); - }, - day: function (date1, date2) { - return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime()); - }, - hour: function (date1, date2) { - return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime()); - }, - minute: function (date1, date2) { - return 0.000016666666666666667 * (date2.getTime() - date1.getTime()); - }, - second: function (date1, date2) { - return 0.001 * (date2.getTime() - date1.getTime()); - }, - millisecond: function (date1, date2) { - return date2.getTime() - date1.getTime(); - } - }; +/***/ }), - function differenceTransform(interval, date1, date2, utc) { - interval = interval.replace(/s$/, ""); - return round(differenceMap[interval](date1, date2, utc)); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Arabic (Tunisia) [ar-tn] +//! author : Nader Toukabri : https://github.com/naderio - return { - addTransform: addTransform, - differenceTransform: differenceTransform - }; - }()), - addTransform = transforms.addTransform, - differenceTransform = transforms.differenceTransform; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - /** - * @ignore - * Based on DOJO Date Implementation - * - * Dojo is available under *either* the terms of the modified BSD license *or* the - * Academic Free License version 2.1. As a recipient of Dojo, you may choose which - * license to receive this code under (except as noted in per-module LICENSE - * files). Some modules may not be the copyright of the Dojo Foundation. These - * modules contain explicit declarations of copyright in both the LICENSE files in - * the directories in which they reside and in the code itself. No external - * contributions are allowed under licenses which are fundamentally incompatible - * with the AFL or BSD licenses that Dojo is distributed under. - * - */ + var arTn = moment.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs; - var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; - var monthAbbr = ["Jan.", "Feb.", "Mar.", "Apr.", "May.", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]; - var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; - var dayAbbr = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - var eraNames = ["Before Christ", "Anno Domini"]; - var eraAbbr = ["BC", "AD"]; + return arTn; +}))); - function getDayOfYear(/*Date*/dateObject, utc) { - // summary: gets the day of the year as represented by dateObject - return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number - } - function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) { - firstDayOfWeek = firstDayOfWeek || 0; - var fullYear = dateObject[utc ? "getUTCFullYear" : "getFullYear"](); - var firstDayOfYear = new Date(fullYear, 0, 1).getDay(), - adj = (firstDayOfYear - firstDayOfWeek + 7) % 7, - week = floor((getDayOfYear(dateObject) + adj - 1) / 7); +/***/ }), - // if year starts on the specified day, start counting weeks at 1 - if (firstDayOfYear === firstDayOfWeek) { - week++; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - return week; // Number - } +//! moment.js locale configuration +//! locale : Arabic [ar] +//! author : Abdel Said: https://github.com/abdelsaid +//! author : Ahmed Elkhatib +//! author : forabi https://github.com/forabi - function getTimezoneName(/*Date*/dateObject) { - var str = dateObject.toString(); - var tz = ''; - var pos = str.indexOf('('); - if (pos > -1) { - tz = str.substring(++pos, str.indexOf(')')); - } - return tz; // String - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - function buildDateEXP(pattern, tokens) { - return pattern.replace(/([a-z])\1*/ig,function (match) { - // Build a simple regexp. Avoid captures, which would ruin the tokens list - var s, - c = match.charAt(0), - l = match.length, - p2 = '0?', - p3 = '0{0,2}'; - if (c === 'y') { - s = '\\d{2,4}'; - } else if (c === "M") { - s = (l > 2) ? '\\S+?' : '1[0-2]|' + p2 + '[1-9]'; - } else if (c === "D") { - s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]'; - } else if (c === "d") { - s = '3[01]|[12]\\d|' + p2 + '[1-9]'; - } else if (c === "w") { - s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]'; - } else if (c === "E") { - s = '\\S+'; - } else if (c === "h") { - s = '1[0-2]|' + p2 + '[1-9]'; - } else if (c === "K") { - s = '1[01]|' + p2 + '\\d'; - } else if (c === "H") { - s = '1\\d|2[0-3]|' + p2 + '\\d'; - } else if (c === "k") { - s = '1\\d|2[0-4]|' + p2 + '[1-9]'; - } else if (c === "m" || c === "s") { - s = '[0-5]\\d'; - } else if (c === "S") { - s = '\\d{' + l + '}'; - } else if (c === "a") { - var am = 'AM', pm = 'PM'; - s = am + '|' + pm; - if (am !== am.toLowerCase()) { - s += '|' + am.toLowerCase(); - } - if (pm !== pm.toLowerCase()) { - s += '|' + pm.toLowerCase(); - } - s = s.replace(/\./g, "\\."); - } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') { - s = ".*"; - } else { - s = c === " " ? "\\s*" : c + "*"; - } - if (tokens) { - tokens.push(match); + var symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + pluralForm = function (n) { + return n === 0 + ? 0 + : n === 1 + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; + }, + plurals = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; } + return str.replace(/%d/i, number); + }; + }, + months = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; - return "(" + s + ")"; // add capture - }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace. Need explicit handling of \xa0 for IE. - } - + var ar = moment.defineLocale('ar', { + months: months, + monthsShort: months, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/\u200FM/\u200FYYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar: { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize('s'), + ss: pluralize('s'), + m: pluralize('m'), + mm: pluralize('m'), + h: pluralize('h'), + hh: pluralize('h'), + d: pluralize('d'), + dd: pluralize('d'), + M: pluralize('M'), + MM: pluralize('M'), + y: pluralize('y'), + yy: pluralize('y'), + }, + preparse: function (string) { + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); - /** - * @namespace Utilities for Dates - */ - var date = { + return ar; - /**@lends date*/ +}))); - /** - * Returns the number of days in the month of a date - * - * @example - * - * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28 - * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29 - * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31 - * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30 - * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31 - * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30 - * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31 - * @param {Date} dateObject the date containing the month - * @return {Number} the number of days in the month - */ - getDaysInMonth: function (/*Date*/dateObject) { - // summary: - // Returns the number of days in the month used by dateObject - var month = dateObject.getMonth(); - var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - if (month === 1 && date.isLeapYear(dateObject)) { - return 29; - } // Number - return days[month]; // Number - }, - /** - * Determines if a date is a leap year - * - * @example - * - * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true - * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true - * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true - * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false - * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false - * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false - * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false - * - * @param {Date} dateObject - * @returns {Boolean} true if it is a leap year false otherwise - */ - isLeapYear: function (/*Date*/dateObject, utc) { - var year = dateObject[utc ? "getUTCFullYear" : "getFullYear"](); - return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0); +/***/ }), - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - /** - * Determines if a date is on a weekend - * - * @example - * - * var thursday = new Date(2006, 8, 21); - * var saturday = new Date(2006, 8, 23); - * var sunday = new Date(2006, 8, 24); - * var monday = new Date(2006, 8, 25); - * dateExtender.isWeekend(thursday)); //false - * dateExtender.isWeekend(saturday); //true - * dateExtender.isWeekend(sunday); //true - * dateExtender.isWeekend(monday)); //false - * - * @param {Date} dateObject the date to test - * - * @returns {Boolean} true if the date is a weekend - */ - isWeekend: function (/*Date?*/dateObject, utc) { - // summary: - // Determines if the date falls on a weekend, according to local custom. - var day = (dateObject || new Date())[utc ? "getUTCDay" : "getDay"](); - return day === 0 || day === 6; - }, +//! moment.js locale configuration +//! locale : Azerbaijani [az] +//! author : topchiyev : https://github.com/topchiyev - /** - * Get the timezone of a date - * - * @example - * //just setting the strLocal to simulate the toString() of a date - * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)'; - * //just setting the strLocal to simulate the locale - * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT'; - * dateExtender.getTimezoneName(dt); //'CDT' - * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)'; - * dt.strLocale = 'Sun Sep 17 22:57:18 2006'; - * dateExtender.getTimezoneName(dt); //'CDT' - * @param dateObject the date to get the timezone from - * - * @returns {String} the timezone of the date - */ - getTimezoneName: getTimezoneName, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - /** - * Compares two dates - * - * @example - * - * var d1 = new Date(); - * d1.setHours(0); - * dateExtender.compare(d1, d1); // 0 - * - * var d1 = new Date(); - * d1.setHours(0); - * var d2 = new Date(); - * d2.setFullYear(2005); - * d2.setHours(12); - * dateExtender.compare(d1, d2, "date"); // 1 - * dateExtender.compare(d1, d2, "datetime"); // 1 - * - * var d1 = new Date(); - * d1.setHours(0); - * var d2 = new Date(); - * d2.setFullYear(2005); - * d2.setHours(12); - * dateExtender.compare(d2, d1, "date"); // -1 - * dateExtender.compare(d1, d2, "time"); //-1 - * - * @param {Date|String} date1 the date to comapare - * @param {Date|String} [date2=new Date()] the date to compare date1 againse - * @param {"date"|"time"|"datetime"} portion compares the portion specified - * - * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2 - */ - compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) { - date1 = new Date(+date1); - date2 = new Date(+(date2 || new Date())); + //! moment.js locale configuration - if (portion === "date") { - // Ignore times and compare dates. - date1.setHours(0, 0, 0, 0); - date2.setHours(0, 0, 0, 0); - } else if (portion === "time") { - // Ignore dates and compare times. - date1.setFullYear(0, 0, 0); - date2.setFullYear(0, 0, 0); - } - return date1 > date2 ? 1 : date1 < date2 ? -1 : 0; - }, + var suffixes = { + 1: '-inci', + 5: '-inci', + 8: '-inci', + 70: '-inci', + 80: '-inci', + 2: '-nci', + 7: '-nci', + 20: '-nci', + 50: '-nci', + 3: '-üncü', + 4: '-üncü', + 100: '-üncü', + 6: '-ncı', + 9: '-uncu', + 10: '-uncu', + 30: '-uncu', + 60: '-ıncı', + 90: '-ıncı', + }; + var az = moment.defineLocale('az', { + months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split( + '_' + ), + monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), + weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( + '_' + ), + weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[bugün saat] LT', + nextDay: '[sabah saat] LT', + nextWeek: '[gələn həftə] dddd [saat] LT', + lastDay: '[dünən] LT', + lastWeek: '[keçən həftə] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s sonra', + past: '%s əvvəl', + s: 'birneçə saniyə', + ss: '%d saniyə', + m: 'bir dəqiqə', + mm: '%d dəqiqə', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir il', + yy: '%d il', + }, + meridiemParse: /gecə|səhər|gündüz|axşam/, + isPM: function (input) { + return /^(gündüz|axşam)$/.test(input); + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'gecə'; + } else if (hour < 12) { + return 'səhər'; + } else if (hour < 17) { + return 'gündüz'; + } else { + return 'axşam'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, + ordinal: function (number) { + if (number === 0) { + // special case for zero + return number + '-ıncı'; + } + var a = number % 10, + b = (number % 100) - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); - /** - * Adds a specified interval and amount to a date - * - * @example - * var dtA = new Date(2005, 11, 27); - * dateExtender.add(dtA, "year", 1); //new Date(2006, 11, 27); - * dateExtender.add(dtA, "years", 1); //new Date(2006, 11, 27); - * - * dtA = new Date(2000, 0, 1); - * dateExtender.add(dtA, "quarter", 1); //new Date(2000, 3, 1); - * dateExtender.add(dtA, "quarters", 1); //new Date(2000, 3, 1); - * - * dtA = new Date(2000, 0, 1); - * dateExtender.add(dtA, "month", 1); //new Date(2000, 1, 1); - * dateExtender.add(dtA, "months", 1); //new Date(2000, 1, 1); - * - * dtA = new Date(2000, 0, 31); - * dateExtender.add(dtA, "month", 1); //new Date(2000, 1, 29); - * dateExtender.add(dtA, "months", 1); //new Date(2000, 1, 29); - * - * dtA = new Date(2000, 0, 1); - * dateExtender.add(dtA, "week", 1); //new Date(2000, 0, 8); - * dateExtender.add(dtA, "weeks", 1); //new Date(2000, 0, 8); - * - * dtA = new Date(2000, 0, 1); - * dateExtender.add(dtA, "day", 1); //new Date(2000, 0, 2); - * - * dtA = new Date(2000, 0, 1); - * dateExtender.add(dtA, "weekday", 1); //new Date(2000, 0, 3); - * - * dtA = new Date(2000, 0, 1, 11); - * dateExtender.add(dtA, "hour", 1); //new Date(2000, 0, 1, 12); - * - * dtA = new Date(2000, 11, 31, 23, 59); - * dateExtender.add(dtA, "minute", 1); //new Date(2001, 0, 1, 0, 0); - * - * dtA = new Date(2000, 11, 31, 23, 59, 59); - * dateExtender.add(dtA, "second", 1); //new Date(2001, 0, 1, 0, 0, 0); - * - * dtA = new Date(2000, 11, 31, 23, 59, 59, 999); - * dateExtender.add(dtA, "millisecond", 1); //new Date(2001, 0, 1, 0, 0, 0, 0); - * - * @param {Date} date - * @param {String} interval the interval to add - *
    - *
  • day | days
  • - *
  • weekday | weekdays
  • - *
  • year | years
  • - *
  • week | weeks
  • - *
  • quarter | quarters
  • - *
  • months | months
  • - *
  • hour | hours
  • - *
  • minute | minutes
  • - *
  • second | seconds
  • - *
  • millisecond | milliseconds
  • - *
- * @param {Number} [amount=0] the amount to add - */ - add: function (/*Date*/date, /*String*/interval, /*int*/amount) { - var res = addTransform(interval, date, amount || 0); - amount = res[0]; - var property = res[1]; - var sum = new Date(+date); - var fixOvershoot = res[2]; - if (property) { - sum["set" + property](sum["get" + property]() + amount); - } + return az; - if (fixOvershoot && (sum.getDate() < date.getDate())) { - sum.setDate(0); - } +}))); - return sum; // Date - }, - /** - * Finds the difference between two dates based on the specified interval - * - * @example - * - * var dtA, dtB; - * - * dtA = new Date(2005, 11, 27); - * dtB = new Date(2006, 11, 27); - * dateExtender.difference(dtA, dtB, "year"); //1 - * - * dtA = new Date(2000, 1, 29); - * dtB = new Date(2001, 2, 1); - * dateExtender.difference(dtA, dtB, "quarter"); //4 - * dateExtender.difference(dtA, dtB, "month"); //13 - * - * dtA = new Date(2000, 1, 1); - * dtB = new Date(2000, 1, 8); - * dateExtender.difference(dtA, dtB, "week"); //1 - * - * dtA = new Date(2000, 1, 29); - * dtB = new Date(2000, 2, 1); - * dateExtender.difference(dtA, dtB, "day"); //1 - * - * dtA = new Date(2006, 7, 3); - * dtB = new Date(2006, 7, 11); - * dateExtender.difference(dtA, dtB, "weekday"); //6 - * - * dtA = new Date(2000, 11, 31, 23); - * dtB = new Date(2001, 0, 1, 0); - * dateExtender.difference(dtA, dtB, "hour"); //1 - * - * dtA = new Date(2000, 11, 31, 23, 59); - * dtB = new Date(2001, 0, 1, 0, 0); - * dateExtender.difference(dtA, dtB, "minute"); //1 - * - * dtA = new Date(2000, 11, 31, 23, 59, 59); - * dtB = new Date(2001, 0, 1, 0, 0, 0); - * dateExtender.difference(dtA, dtB, "second"); //1 - * - * dtA = new Date(2000, 11, 31, 23, 59, 59, 999); - * dtB = new Date(2001, 0, 1, 0, 0, 0, 0); - * dateExtender.difference(dtA, dtB, "millisecond"); //1 - * - * - * @param {Date} date1 - * @param {Date} [date2 = new Date()] - * @param {String} [interval = "day"] the intercal to find the difference of. - *
    - *
  • day | days
  • - *
  • weekday | weekdays
  • - *
  • year | years
  • - *
  • week | weeks
  • - *
  • quarter | quarters
  • - *
  • months | months
  • - *
  • hour | hours
  • - *
  • minute | minutes
  • - *
  • second | seconds
  • - *
  • millisecond | milliseconds
  • - *
- */ - difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) { - date2 = date2 || new Date(); - interval = interval || "day"; - return differenceTransform(interval, date1, date2, utc); - }, +/***/ }), - /** - * Formats a date to the specidifed format string - * - * @example - * - * var date = new Date(2006, 7, 11, 0, 55, 12, 345); - * dateExtender.format(date, "EEEE, MMMM dd, yyyy"); //"Friday, August 11, 2006" - * dateExtender.format(date, "M/dd/yy"); //"8/11/06" - * dateExtender.format(date, "E"); //"6" - * dateExtender.format(date, "h:m a"); //"12:55 AM" - * dateExtender.format(date, 'h:m:s'); //"12:55:12" - * dateExtender.format(date, 'h:m:s.SS'); //"12:55:12.35" - * dateExtender.format(date, 'k:m:s.SS'); //"24:55:12.35" - * dateExtender.format(date, 'H:m:s.SS'); //"0:55:12.35" - * dateExtender.format(date, "ddMMyyyy"); //"11082006" - * - * @param date the date to format - * @param {String} format the format of the date composed of the following options - *
    - *
  • G Era designator Text AD
  • - *
  • y Year Year 1996; 96
  • - *
  • M Month in year Month July; Jul; 07
  • - *
  • w Week in year Number 27
  • - *
  • W Week in month Number 2
  • - *
  • D Day in year Number 189
  • - *
  • d Day in month Number 10
  • - *
  • E Day in week Text Tuesday; Tue
  • - *
  • a Am/pm marker Text PM
  • - *
  • H Hour in day (0-23) Number 0
  • - *
  • k Hour in day (1-24) Number 24
  • - *
  • K Hour in am/pm (0-11) Number 0
  • - *
  • h Hour in am/pm (1-12) Number 12
  • - *
  • m Minute in hour Number 30
  • - *
  • s Second in minute Number 55
  • - *
  • S Millisecond Number 978
  • - *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • - *
  • Z Time zone RFC 822 time zone -0800
  • - *
- */ - format: function (date, format, utc) { - utc = utc || false; - var fullYear, month, day, d, hour, minute, second, millisecond; - if (utc) { - fullYear = date.getUTCFullYear(); - month = date.getUTCMonth(); - day = date.getUTCDay(); - d = date.getUTCDate(); - hour = date.getUTCHours(); - minute = date.getUTCMinutes(); - second = date.getUTCSeconds(); - millisecond = date.getUTCMilliseconds(); - } else { - fullYear = date.getFullYear(); - month = date.getMonth(); - d = date.getDate(); - day = date.getDay(); - hour = date.getHours(); - minute = date.getMinutes(); - second = date.getSeconds(); - millisecond = date.getMilliseconds(); - } - return format.replace(/([A-Za-z])\1*/g, function (match) { - var s, pad, - c = match.charAt(0), - l = match.length; - if (c === 'd') { - s = "" + d; - pad = true; - } else if (c === "H" && !s) { - s = "" + hour; - pad = true; - } else if (c === 'm' && !s) { - s = "" + minute; - pad = true; - } else if (c === 's') { - if (!s) { - s = "" + second; - } - pad = true; - } else if (c === "G") { - s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1]; - } else if (c === "y") { - s = fullYear; - if (l > 1) { - if (l === 2) { - s = _truncate("" + s, 2, true); - } else { - pad = true; - } - } - } else if (c.toUpperCase() === "Q") { - s = ceil((month + 1) / 3); - pad = true; - } else if (c === "M") { - if (l < 3) { - s = month + 1; - pad = true; - } else { - s = (l === 3 ? monthAbbr : monthNames)[month]; - } - } else if (c === "w") { - s = getWeekOfYear(date, 0, utc); - pad = true; - } else if (c === "D") { - s = getDayOfYear(date, utc); - pad = true; - } else if (c === "E") { - if (l < 3) { - s = day + 1; - pad = true; - } else { - s = (l === -3 ? dayAbbr : dayNames)[day]; - } - } else if (c === 'a') { - s = (hour < 12) ? 'AM' : 'PM'; - } else if (c === "h") { - s = (hour % 12) || 12; - pad = true; - } else if (c === "K") { - s = (hour % 12); - pad = true; - } else if (c === "k") { - s = hour || 24; - pad = true; - } else if (c === "S") { - s = round(millisecond * pow(10, l - 3)); - pad = true; - } else if (c === "z" || c === "v" || c === "Z") { - s = getTimezoneName(date); - if ((c === "z" || c === "v") && !s) { - l = 4; - } - if (!s || c === "Z") { - var offset = date.getTimezoneOffset(); - var tz = [ - (offset >= 0 ? "-" : "+"), - _pad(floor(abs(offset) / 60), 2, "0"), - _pad(abs(offset) % 60, 2, "0") - ]; - if (l === 4) { - tz.splice(0, 0, "GMT"); - tz.splice(3, 0, ":"); - } - s = tz.join(""); - } - } else { - s = match; - } - if (pad) { - s = _pad(s, l, '0'); - } - return s; - }); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - }; +//! moment.js locale configuration +//! locale : Belarusian [be] +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire - var numberDate = {}; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function addInterval(interval) { - numberDate[interval + "sFromNow"] = function (val) { - return date.add(new Date(), interval, val); - }; - numberDate[interval + "sAgo"] = function (val) { - return date.add(new Date(), interval, -val); - }; - } + //! moment.js locale configuration - var intervals = ["year", "month", "day", "hour", "minute", "second"]; - for (var i = 0, l = intervals.length; i < l; i++) { - addInterval(intervals[i]); + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 + ? forms[0] + : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) + ? forms[1] + : forms[2]; + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + dd: 'дзень_дні_дзён', + MM: 'месяц_месяцы_месяцаў', + yy: 'год_гады_гадоў', + }; + if (key === 'm') { + return withoutSuffix ? 'хвіліна' : 'хвіліну'; + } else if (key === 'h') { + return withoutSuffix ? 'гадзіна' : 'гадзіну'; + } else { + return number + ' ' + plural(format[key], +number); } + } - var stringDate = { - - parseDate: function (dateStr, format) { - if (!format) { - throw new Error('format required when calling dateExtender.parse'); - } - var tokens = [], regexp = buildDateEXP(format, tokens), - re = new RegExp("^" + regexp + "$", "i"), - match = re.exec(dateStr); - if (!match) { - return null; - } // null - var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end - amPm = "", - valid = every(match, function (v, i) { - if (i) { - var token = tokens[i - 1]; - var l = token.length, type = token.charAt(0); - if (type === 'y') { - if (v < 100) { - v = parseInt(v, 10); - //choose century to apply, according to a sliding window - //of 80 years before and 20 years after present year - var year = '' + new Date().getFullYear(), - century = year.substring(0, 2) * 100, - cutoff = min(year.substring(2, 4) + 20, 99); - result[0] = (v < cutoff) ? century + v : century - 100 + v; - } else { - result[0] = v; - } - } else if (type === "M") { - if (l > 2) { - var months = monthNames, j, k; - if (l === 3) { - months = monthAbbr; - } - //Tolerate abbreviating period in month part - //Case-insensitive comparison - v = v.replace(".", "").toLowerCase(); - var contains = false; - for (j = 0, k = months.length; j < k && !contains; j++) { - var s = months[j].replace(".", "").toLocaleLowerCase(); - if (s === v) { - v = j; - contains = true; - } - } - if (!contains) { - return false; - } - } else { - v--; - } - result[1] = v; - } else if (type === "E" || type === "e") { - var days = dayNames; - if (l === 3) { - days = dayAbbr; - } - //Case-insensitive comparison - v = v.toLowerCase(); - days = array.map(days, function (d) { - return d.toLowerCase(); - }); - var d = array.indexOf(days, v); - if (d === -1) { - v = parseInt(v, 10); - if (isNaN(v) || v > days.length) { - return false; - } - } else { - v = d; - } - } else if (type === 'D' || type === "d") { - if (type === "D") { - result[1] = 0; - } - result[2] = v; - } else if (type === "a") { - var am = "am"; - var pm = "pm"; - var period = /\./g; - v = v.replace(period, '').toLowerCase(); - // we might not have seen the hours field yet, so store the state and apply hour change later - amPm = (v === pm) ? 'p' : (v === am) ? 'a' : ''; - } else if (type === "k" || type === "h" || type === "H" || type === "K") { - if (type === "k" && (+v) === 24) { - v = 0; - } - result[3] = v; - } else if (type === "m") { - result[4] = v; - } else if (type === "s") { - result[5] = v; - } else if (type === "S") { - result[6] = v; - } - } - return true; - }); - if (valid) { - var hours = +result[3]; - //account for am/pm - if (amPm === 'p' && hours < 12) { - result[3] = hours + 12; //e.g., 3pm -> 15 - } else if (amPm === 'a' && hours === 12) { - result[3] = 0; //12am -> 0 - } - var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date - var dateToken = (array.indexOf(tokens, 'd') !== -1), - monthToken = (array.indexOf(tokens, 'M') !== -1), - month = result[1], - day = result[2], - dateMonth = dateObject.getMonth(), - dateDay = dateObject.getDate(); - if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) { - return null; - } - return dateObject; // Date - } else { - return null; + var be = moment.defineLocale('be', { + months: { + format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( + '_' + ), + standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( + '_' + ), + }, + monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split( + '_' + ), + weekdays: { + format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( + '_' + ), + standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( + '_' + ), + isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, + }, + weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., HH:mm', + LLLL: 'dddd, D MMMM YYYY г., HH:mm', + }, + calendar: { + sameDay: '[Сёння ў] LT', + nextDay: '[Заўтра ў] LT', + lastDay: '[Учора ў] LT', + nextWeek: function () { + return '[У] dddd [ў] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'праз %s', + past: '%s таму', + s: 'некалькі секунд', + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: relativeTimeWithPlural, + hh: relativeTimeWithPlural, + d: 'дзень', + dd: relativeTimeWithPlural, + M: 'месяц', + MM: relativeTimeWithPlural, + y: 'год', + yy: relativeTimeWithPlural, + }, + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM: function (input) { + return /^(дня|вечара)$/.test(input); + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'ночы'; + } else if (hour < 12) { + return 'раніцы'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечара'; } - }; + }, + dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && + number % 100 !== 12 && + number % 100 !== 13 + ? number + '-і' + : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); + return be; - var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate); - for (i in date) { - if (date.hasOwnProperty(i)) { - ret[i] = date[i]; - } - } +}))); - for (i in stringDate) { - if (stringDate.hasOwnProperty(i)) { - ret[i] = stringDate[i]; - } - } - for (i in numberDate) { - if (numberDate.hasOwnProperty(i)) { - ret[i] = numberDate[i]; + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Bulgarian [bg] +//! author : Krasen Borisov : https://github.com/kraz + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var bg = moment.defineLocale('bg', { + months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'D.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[Днес в] LT', + nextDay: '[Утре в] LT', + nextWeek: 'dddd [в] LT', + lastDay: '[Вчера в] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Миналата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Миналия] dddd [в] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'след %s', + past: 'преди %s', + s: 'няколко секунди', + ss: '%d секунди', + m: 'минута', + mm: '%d минути', + h: 'час', + hh: '%d часа', + d: 'ден', + dd: '%d дена', + M: 'месец', + MM: '%d месеца', + y: 'година', + yy: '%d години', + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal: function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; } - } - return ret; - } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); - if (true) { - if ( true && module.exports) { - module.exports = defineDate(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")); + return bg; - } - } else {} +}))); -}).call(this); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Bambara [bm] +//! author : Estelle Comment : https://github.com/estellecomment +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration + var bm = moment.defineLocale('bm', { + months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( + '_' + ), + monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), + weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), + weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), + weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'MMMM [tile] D [san] YYYY', + LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', + LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', + }, + calendar: { + sameDay: '[Bi lɛrɛ] LT', + nextDay: '[Sini lɛrɛ] LT', + nextWeek: 'dddd [don lɛrɛ] LT', + lastDay: '[Kunu lɛrɛ] LT', + lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s kɔnɔ', + past: 'a bɛ %s bɔ', + s: 'sanga dama dama', + ss: 'sekondi %d', + m: 'miniti kelen', + mm: 'miniti %d', + h: 'lɛrɛ kelen', + hh: 'lɛrɛ %d', + d: 'tile kelen', + dd: 'tile %d', + M: 'kalo kelen', + MM: 'kalo %d', + y: 'san kelen', + yy: 'san %d', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + return bm; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js ***! - \************************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -(function () { +//! moment.js locale configuration +//! locale : Bengali [bn] +//! author : Kaushik Gandhi : https://github.com/kaushikgandhi - /** - * @projectName declare - * @github http://github.com/doug-martin/declare.js - * @header - * - * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js. - * - * ##Installation - * - * `npm install declare.js` - * - * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js)) - * - * ###Requirejs - * - * To use with requirejs place the `declare` source in the root scripts directory - * - * ``` - * - * define(["declare"], function(declare){ - * return declare({ - * instance : { - * hello : function(){ - * return "world"; - * } - * } - * }); - * }); - * - * ``` - * - * - * ##Usage - * - * declare.js provides - * - * Class methods - * - * * `as(module | object, name)` : exports the object to module or the object with the name - * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class. - * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`; - * - * Instance methods - * - * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super - * * `_getSuper()`: returns a this methods direct super. - * * `_static` : use to reference class properties and methods. - * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object. - * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object. - * - * - * ###Declaring a new Class - * - * Creating a new class with declare is easy! - * - * ``` - * - * var Mammal = declare({ - * //define your instance methods and properties - * instance : { - * - * //will be called whenever a new instance is created - * constructor: function(options) { - * options = options || {}; - * this._super(arguments); - * this._type = options.type || "mammal"; - * }, - * - * speak : function() { - * return "A mammal of type " + this._type + " sounds like"; - * }, - * - * //Define your getters - * getters : { - * - * //can be accessed by using the get method. (mammal.get("type")) - * type : function() { - * return this._type; - * } - * }, - * - * //Define your setters - * setters : { - * - * //can be accessed by using the set method. (mammal.set("type", "mammalType")) - * type : function(t) { - * this._type = t; - * } - * } - * }, - * - * //Define your static methods - * static : { - * - * //Mammal.soundOff(); //"Im a mammal!!" - * soundOff : function() { - * return "Im a mammal!!"; - * } - * } - * }); - * - * - * ``` - * - * You can use Mammal just like you would any other class. - * - * ``` - * Mammal.soundOff("Im a mammal!!"); - * - * var myMammal = new Mammal({type : "mymammal"}); - * myMammal.speak(); // "A mammal of type mymammal sounds like" - * myMammal.get("type"); //"mymammal" - * myMammal.set("type", "mammal"); - * myMammal.get("type"); //"mammal" - * - * - * ``` - * - * ###Extending a class - * - * If you want to just extend a single class use the .extend method. - * - * ``` - * - * var Wolf = Mammal.extend({ - * - * //define your instance method - * instance: { - * - * //You can override super constructors just be sure to call `_super` - * constructor: function(options) { - * options = options || {}; - * this._super(arguments); //call our super constructor. - * this._sound = "growl"; - * this._color = options.color || "grey"; - * }, - * - * //override Mammals `speak` method by appending our own data to it. - * speak : function() { - * return this._super(arguments) + " a " + this._sound; - * }, - * - * //add new getters for sound and color - * getters : { - * - * //new Wolf().get("type") - * //notice color is read only as we did not define a setter - * color : function() { - * return this._color; - * }, - * - * //new Wolf().get("sound") - * sound : function() { - * return this._sound; - * } - * }, - * - * setters : { - * - * //new Wolf().set("sound", "howl") - * sound : function(s) { - * this._sound = s; - * } - * } - * - * }, - * - * static : { - * - * //You can override super static methods also! And you can still use _super - * soundOff : function() { - * //You can even call super in your statics!!! - * //should return "I'm a mammal!! that growls" - * return this._super(arguments) + " that growls"; - * } - * } - * }); - * - * Wolf.soundOff(); //Im a mammal!! that growls - * - * var myWolf = new Wolf(); - * myWolf instanceof Mammal //true - * myWolf instanceof Wolf //true - * - * ``` - * - * You can also extend a class by using the declare method and just pass in the super class. - * - * ``` - * //Typical hierarchical inheritance - * // Mammal->Wolf->Dog - * var Dog = declare(Wolf, { - * instance: { - * constructor: function(options) { - * options = options || {}; - * this._super(arguments); - * //override Wolfs initialization of sound to woof. - * this._sound = "woof"; - * - * }, - * - * speak : function() { - * //Should return "A mammal of type mammal sounds like a growl thats domesticated" - * return this._super(arguments) + " thats domesticated"; - * } - * }, - * - * static : { - * soundOff : function() { - * //should return "I'm a mammal!! that growls but now barks" - * return this._super(arguments) + " but now barks"; - * } - * } - * }); - * - * Dog.soundOff(); //Im a mammal!! that growls but now barks - * - * var myDog = new Dog(); - * myDog instanceof Mammal //true - * myDog instanceof Wolf //true - * myDog instanceof Dog //true - * - * - * //Notice you still get the extend method. - * - * // Mammal->Wolf->Dog->Breed - * var Breed = Dog.extend({ - * instance: { - * - * //initialize outside of constructor - * _pitch : "high", - * - * constructor: function(options) { - * options = options || {}; - * this._super(arguments); - * this.breed = options.breed || "lab"; - * }, - * - * speak : function() { - * //Should return "A mammal of type mammal sounds like a - * //growl thats domesticated with a high pitch!" - * return this._super(arguments) + " with a " + this._pitch + " pitch!"; - * }, - * - * getters : { - * pitch : function() { - * return this._pitch; - * } - * } - * }, - * - * static : { - * soundOff : function() { - * //should return "I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!" - * return this._super(arguments).toUpperCase() + "!"; - * } - * } - * }); - * - * - * Breed.soundOff()//"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!" - * - * var myBreed = new Breed({color : "gold", type : "lab"}), - * myBreed instanceof Dog //true - * myBreed instanceof Wolf //true - * myBreed instanceof Mammal //true - * myBreed.speak() //"A mammal of type lab sounds like a woof thats domesticated with a high pitch!" - * myBreed.get("type") //"lab" - * myBreed.get("color") //"gold" - * myBreed.get("sound")" //"woof" - * ``` - * - * ###Multiple Inheritance / Mixins - * - * declare also allows the use of multiple super classes. - * This is useful if you have generic classes that provide functionality but shouldnt be used on their own. - * - * Lets declare a mixin that allows us to watch for property changes. - * - * ``` - * //Notice that we set up the functions outside of declare because we can reuse them - * - * function _set(prop, val) { - * //get the old value - * var oldVal = this.get(prop); - * //call super to actually set the property - * var ret = this._super(arguments); - * //call our handlers - * this.__callHandlers(prop, oldVal, val); - * return ret; - * } - * - * function _callHandlers(prop, oldVal, newVal) { - * //get our handlers for the property - * var handlers = this.__watchers[prop], l; - * //if the handlers exist and their length does not equal 0 then we call loop through them - * if (handlers && (l = handlers.length) !== 0) { - * for (var i = 0; i < l; i++) { - * //call the handler - * handlers[i].call(null, prop, oldVal, newVal); - * } - * } - * } - * - * - * //the watch function - * function _watch(prop, handler) { - * if ("function" !== typeof handler) { - * //if its not a function then its an invalid handler - * throw new TypeError("Invalid handler."); - * } - * if (!this.__watchers[prop]) { - * //create the watchers if it doesnt exist - * this.__watchers[prop] = [handler]; - * } else { - * //otherwise just add it to the handlers array - * this.__watchers[prop].push(handler); - * } - * } - * - * function _unwatch(prop, handler) { - * if ("function" !== typeof handler) { - * throw new TypeError("Invalid handler."); - * } - * var handlers = this.__watchers[prop], index; - * if (handlers && (index = handlers.indexOf(handler)) !== -1) { - * //remove the handler if it is found - * handlers.splice(index, 1); - * } - * } - * - * declare({ - * instance:{ - * constructor:function () { - * this._super(arguments); - * //set up our watchers - * this.__watchers = {}; - * }, - * - * //override the default set function so we can watch values - * "set":_set, - * //set up our callhandlers function - * __callHandlers:_callHandlers, - * //add the watch function - * watch:_watch, - * //add the unwatch function - * unwatch:_unwatch - * }, - * - * "static":{ - * - * init:function () { - * this._super(arguments); - * this.__watchers = {}; - * }, - * //override the default set function so we can watch values - * "set":_set, - * //set our callHandlers function - * __callHandlers:_callHandlers, - * //add the watch - * watch:_watch, - * //add the unwatch function - * unwatch:_unwatch - * } - * }) - * - * ``` - * - * Now lets use the mixin - * - * ``` - * var WatchDog = declare([Dog, WatchMixin]); - * - * var watchDog = new WatchDog(); - * //create our handler - * function watch(id, oldVal, newVal) { - * console.log("watchdog's %s was %s, now %s", id, oldVal, newVal); - * } - * - * //watch for property changes - * watchDog.watch("type", watch); - * watchDog.watch("color", watch); - * watchDog.watch("sound", watch); - * - * //now set the properties each handler will be called - * watchDog.set("type", "newDog"); - * watchDog.set("color", "newColor"); - * watchDog.set("sound", "newSound"); - * - * - * //unwatch the property changes - * watchDog.unwatch("type", watch); - * watchDog.unwatch("color", watch); - * watchDog.unwatch("sound", watch); - * - * //no handlers will be called this time - * watchDog.set("type", "newDog"); - * watchDog.set("color", "newColor"); - * watchDog.set("sound", "newSound"); - * - * - * ``` - * - * ###Accessing static methods and properties witin an instance. - * - * To access static properties on an instance use the `_static` property which is a reference to your constructor. - * - * For example if your in your constructor and you want to have configurable default values. - * - * ``` - * consturctor : function constructor(opts){ - * this.opts = opts || {}; - * this._type = opts.type || this._static.DEFAULT_TYPE; - * } - * ``` - * - * - * - * ###Creating a new instance of within an instance. - * - * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class. - * - * Lets add a reproduce method `Mammal` - * - * ``` - * reproduce : function(options){ - * return new this._static(options); - * } - * ``` - * - * Now in each subclass you can call reproduce and get the proper type. - * - * ``` - * var myDog = new Dog(); - * var myDogsChild = myDog.reproduce(); - * - * myDogsChild instanceof Dog; //true - * ``` - * - * ###Using the `as` - * - * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module. - * - * ``` - * var animals = {}; - * - * Mammal.as(animals, "Dog"); - * Wolf.as(animals, "Wolf"); - * Dog.as(animals, "Dog"); - * Breed.as(animals, "Breed"); - * - * var myDog = new animals.Dog(); - * - * ``` - * - * Or in node - * - * ``` - * Mammal.as(exports, "Dog"); - * Wolf.as(exports, "Wolf"); - * Dog.as(exports, "Dog"); - * Breed.as(exports, "Breed"); - * - * ``` - * - * To export a class as the `module` in node - * - * ``` - * Mammal.as(module); - * ``` - * - * - */ - function createDeclared() { - var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function(); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - var SUPER_REGEXP = /(super)/g; + //! moment.js locale configuration - function argsToArray(args, slice) { - slice = slice || 0; - return arraySlice.call(args, slice); - } + var symbolMap = { + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০', + }, + numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0', + }; + + var bn = moment.defineLocale('bn', { + months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( + '_' + ), + monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( + '_' + ), + weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( + '_' + ), + weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'), + longDateFormat: { + LT: 'A h:mm সময়', + LTS: 'A h:mm:ss সময়', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm সময়', + LLLL: 'dddd, D MMMM YYYY, A h:mm সময়', + }, + calendar: { + sameDay: '[আজ] LT', + nextDay: '[আগামীকাল] LT', + nextWeek: 'dddd, LT', + lastDay: '[গতকাল] LT', + lastWeek: '[গত] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s পরে', + past: '%s আগে', + s: 'কয়েক সেকেন্ড', + ss: '%d সেকেন্ড', + m: 'এক মিনিট', + mm: '%d মিনিট', + h: 'এক ঘন্টা', + hh: '%d ঘন্টা', + d: 'এক দিন', + dd: '%d দিন', + M: 'এক মাস', + MM: '%d মাস', + y: 'এক বছর', + yy: '%d বছর', + }, + preparse: function (string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ( + (meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল' + ) { + return hour + 12; + } else { + return hour; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'রাত'; + } else if (hour < 10) { + return 'সকাল'; + } else if (hour < 17) { + return 'দুপুর'; + } else if (hour < 20) { + return 'বিকাল'; + } else { + return 'রাত'; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); - function isArray(obj) { - return Object.prototype.toString.call(obj) === "[object Array]"; - } + return bn; - function isObject(obj) { - var undef; - return obj !== null && obj !== undef && typeof obj === "object"; - } +}))); - function isHash(obj) { - var ret = isObject(obj); - return ret && obj.constructor === Object; - } - var isArguments = function _isArguments(object) { - return Object.prototype.toString.call(object) === '[object Arguments]'; - }; +/***/ }), - if (!isArguments(arguments)) { - isArguments = function _isArguments(obj) { - return !!(obj && obj.hasOwnProperty("callee")); - }; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - function indexOf(arr, item) { - if (arr && arr.length) { - for (var i = 0, l = arr.length; i < l; i++) { - if (arr[i] === item) { - return i; - } - } - } - return -1; - } +//! moment.js locale configuration +//! locale : Tibetan [bo] +//! author : Thupten N. Chakrishar : https://github.com/vajradog - function merge(target, source, exclude) { - var name, s; - for (name in source) { - if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) { - s = source[name]; - if (!(name in target) || (target[name] !== s)) { - target[name] = s; - } - } - } - return target; - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function callSuper(args, a) { - var meta = this.__meta, - supers = meta.supers, - l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; - if (l > pos) { - args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args; - var name = superMeta.name, f = superMeta.f, m; - do { - m = supers[pos][name]; - if ("function" === typeof m && (m = m._f || m) !== f) { - superMeta.pos = 1 + pos; - return m.apply(this, args); - } - } while (l > ++pos); - } + //! moment.js locale configuration - return null; - } + var symbolMap = { + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠', + }, + numberMap = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0', + }; - function getSuper() { - var meta = this.__meta, - supers = meta.supers, - l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; - if (l > pos) { - var name = superMeta.name, f = superMeta.f, m; - do { - m = supers[pos][name]; - if ("function" === typeof m && (m = m._f || m) !== f) { - superMeta.pos = 1 + pos; - return m.bind(this); - } - } while (l > ++pos); + var bo = moment.defineLocale('bo', { + months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( + '_' + ), + monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( + '_' + ), + monthsShortRegex: /^(ཟླ་\d{1,2})/, + monthsParseExact: true, + weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( + '_' + ), + weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( + '_' + ), + weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'), + longDateFormat: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm', + LLLL: 'dddd, D MMMM YYYY, A h:mm', + }, + calendar: { + sameDay: '[དི་རིང] LT', + nextDay: '[སང་ཉིན] LT', + nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT', + lastDay: '[ཁ་སང] LT', + lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s ལ་', + past: '%s སྔན་ལ', + s: 'ལམ་སང', + ss: '%d སྐར་ཆ།', + m: 'སྐར་མ་གཅིག', + mm: '%d སྐར་མ', + h: 'ཆུ་ཚོད་གཅིག', + hh: '%d ཆུ་ཚོད', + d: 'ཉིན་གཅིག', + dd: '%d ཉིན་', + M: 'ཟླ་བ་གཅིག', + MM: '%d ཟླ་བ', + y: 'ལོ་གཅིག', + yy: '%d ལོ', + }, + preparse: function (string) { + return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; } - return null; - } - - function getter(name) { - var getters = this.__getters__; - if (getters.hasOwnProperty(name)) { - return getters[name].apply(this); + if ( + (meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག' + ) { + return hour + 12; } else { - return this[name]; + return hour; } - } - - function setter(name, val) { - var setters = this.__setters__; - if (isHash(name)) { - for (var i in name) { - var prop = name[i]; - if (setters.hasOwnProperty(i)) { - setters[name].call(this, prop); - } else { - this[i] = prop; - } - } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'མཚན་མོ'; + } else if (hour < 10) { + return 'ཞོགས་ཀས'; + } else if (hour < 17) { + return 'ཉིན་གུང'; + } else if (hour < 20) { + return 'དགོང་དག'; } else { - if (setters.hasOwnProperty(name)) { - return setters[name].apply(this, argsToArray(arguments, 1)); - } else { - return this[name] = val; - } - } - } - - - function defaultFunction() { - var meta = this.__meta || {}, - supers = meta.supers, - l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; - if (l > pos) { - var name = superMeta.name, f = superMeta.f, m; - do { - m = supers[pos][name]; - if ("function" === typeof m && (m = m._f || m) !== f) { - superMeta.pos = 1 + pos; - return m.apply(this, arguments); - } - } while (l > ++pos); + return 'མཚན་མོ'; } - return null; - } - + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); - function functionWrapper(f, name) { - if (f.toString().match(SUPER_REGEXP)) { - var wrapper = function wrapper() { - var ret, meta = this.__meta || {}; - var orig = meta.superMeta; - meta.superMeta = {f: f, pos: 0, name: name}; - switch (arguments.length) { - case 0: - ret = f.call(this); - break; - case 1: - ret = f.call(this, arguments[0]); - break; - case 2: - ret = f.call(this, arguments[0], arguments[1]); - break; + return bo; - case 3: - ret = f.call(this, arguments[0], arguments[1], arguments[2]); - break; - default: - ret = f.apply(this, arguments); - } - meta.superMeta = orig; - return ret; - }; - wrapper._f = f; - return wrapper; - } else { - f._f = f; - return f; - } - } +}))); - function defineMixinProps(child, proto) { - var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__; - for (var i in operations) { - if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there - __setters[i] = operations[i]; - } - } - operations = proto.getters || {}; - for (i in operations) { - if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there - __getters[i] = operations[i]; - } - } - for (var j in proto) { - if (j !== "getters" && j !== "setters") { - var p = proto[j]; - if ("function" === typeof p) { - if (!child.hasOwnProperty(j)) { - child[j] = functionWrapper(defaultFunction, j); - } - } else { - child[j] = p; - } - } - } - } +/***/ }), - function mixin() { - var args = argsToArray(arguments), l = args.length; - var child = this.prototype; - var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(), - staticSupers = thisMeta.supers || [], supers = childMeta.supers || []; - for (var i = 0; i < l; i++) { - var m = args[i], mProto = m.prototype; - var protoMeta = mProto.__meta, meta = m.__meta; - !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}})); - !meta && (meta = (m.__meta = {proto: m.__proto__ || {}})); - defineMixinProps(child, protoMeta.proto || {}); - defineMixinProps(this, meta.proto || {}); - //copy the bases for static, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - mixinSupers(m.prototype, supers, bases); - mixinSupers(m, staticSupers, staticBases); - } - return this; - } +//! moment.js locale configuration +//! locale : Breton [br] +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - function mixinSupers(sup, arr, bases) { - var meta = sup.__meta; - !meta && (meta = (sup.__meta = {})); - var unique = sup.__meta.unique; - !unique && (meta.unique = "declare" + ++classCounter); - //check it we already have this super mixed into our prototype chain - //if true then we have already looped their supers! - if (indexOf(bases, unique) === -1) { - //add their id to our bases - bases.push(unique); - var supers = sup.__meta.supers || [], i = supers.length - 1 || 0; - while (i >= 0) { - mixinSupers(supers[i--], arr, bases); - } - arr.unshift(sup); - } - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function defineProps(child, proto) { - var operations = proto.setters, - __setters = child.__setters__, - __getters = child.__getters__; - if (operations) { - for (var i in operations) { - __setters[i] = operations[i]; - } - } - operations = proto.getters || {}; - if (operations) { - for (i in operations) { - __getters[i] = operations[i]; - } - } - for (i in proto) { - if (i != "getters" && i != "setters") { - var f = proto[i]; - if ("function" === typeof f) { - var meta = f.__meta || {}; - if (!meta.isConstructor) { - child[i] = functionWrapper(f, i); - } else { - child[i] = f; - } - } else { - child[i] = f; - } - } - } + //! moment.js locale configuration + function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + mm: 'munutenn', + MM: 'miz', + dd: 'devezh', + }; + return number + ' ' + mutation(format[key], number); + } + function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; } - - function _export(obj, name) { - if (obj && name) { - obj[name] = this; - } else { - obj.exports = obj = this; - } - return this; + } + function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); } - - function extend(proto) { - return declare(this, proto); + return number; + } + function mutation(text, number) { + if (number === 2) { + return softMutation(text); } - - function getNew(ctor) { - // create object with correct prototype using a do-nothing - // constructor - forceNew.prototype = ctor.prototype; - var t = new forceNew(); - forceNew.prototype = null; // clean up - return t; + return text; + } + function softMutation(text) { + var mutationTable = { + m: 'v', + b: 'v', + d: 'z', + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; } + return mutationTable[text.charAt(0)] + text.substring(1); + } + var monthsParse = [ + /^gen/i, + /^c[ʼ\']hwe/i, + /^meu/i, + /^ebr/i, + /^mae/i, + /^(mez|eve)/i, + /^gou/i, + /^eos/i, + /^gwe/i, + /^her/i, + /^du/i, + /^ker/i, + ], + monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, + monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i, + monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, + fullWeekdaysParse = [ + /^sul/i, + /^lun/i, + /^meurzh/i, + /^merc[ʼ\']her/i, + /^yaou/i, + /^gwener/i, + /^sadorn/i, + ], + shortWeekdaysParse = [ + /^Sul/i, + /^Lun/i, + /^Meu/i, + /^Mer/i, + /^Yao/i, + /^Gwe/i, + /^Sad/i, + ], + minWeekdaysParse = [ + /^Su/i, + /^Lu/i, + /^Me([^r]|$)/i, + /^Mer/i, + /^Ya/i, + /^Gw/i, + /^Sa/i, + ]; - function __declare(child, sup, proto) { - var childProto = {}, supers = []; - var unique = "declare" + ++classCounter, bases = [], staticBases = []; - var instanceSupers = [], staticSupers = []; - var meta = { - supers: instanceSupers, - unique: unique, - bases: bases, - superMeta: { - f: null, - pos: 0, - name: null - } - }; - var childMeta = { - supers: staticSupers, - unique: unique, - bases: staticBases, - isConstructor: true, - superMeta: { - f: null, - pos: 0, - name: null - } - }; + var br = moment.defineLocale('br', { + months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split( + '_' + ), + monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), + weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'), + weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + weekdaysParse: minWeekdaysParse, + fullWeekdaysParse: fullWeekdaysParse, + shortWeekdaysParse: shortWeekdaysParse, + minWeekdaysParse: minWeekdaysParse, - if (isHash(sup) && !proto) { - proto = sup; - sup = Base; - } + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: monthsStrictRegex, + monthsShortStrictRegex: monthsShortStrictRegex, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, - if ("function" === typeof sup || isArray(sup)) { - supers = isArray(sup) ? sup : [sup]; - sup = supers.shift(); - child.__meta = childMeta; - childProto = getNew(sup); - childProto.__meta = meta; - childProto.__getters__ = merge({}, childProto.__getters__ || {}); - childProto.__setters__ = merge({}, childProto.__setters__ || {}); - child.__getters__ = merge({}, child.__getters__ || {}); - child.__setters__ = merge({}, child.__setters__ || {}); - mixinSupers(sup.prototype, instanceSupers, bases); - mixinSupers(sup, staticSupers, staticBases); - } else { - child.__meta = childMeta; - childProto.__meta = meta; - childProto.__getters__ = childProto.__getters__ || {}; - childProto.__setters__ = childProto.__setters__ || {}; - child.__getters__ = child.__getters__ || {}; - child.__setters__ = child.__setters__ || {}; - } - child.prototype = childProto; - if (proto) { - var instance = meta.proto = proto.instance || {}; - var stat = childMeta.proto = proto.static || {}; - stat.init = stat.init || defaultFunction; - defineProps(childProto, instance); - defineProps(child, stat); - if (!instance.hasOwnProperty("constructor")) { - childProto.constructor = instance.constructor = functionWrapper(defaultFunction, "constructor"); - } else { - childProto.constructor = functionWrapper(instance.constructor, "constructor"); - } - } else { - meta.proto = {}; - childMeta.proto = {}; - child.init = functionWrapper(defaultFunction, "init"); - childProto.constructor = functionWrapper(defaultFunction, "constructor"); - } - if (supers.length) { - mixin.apply(child, supers); - } - if (sup) { - //do this so we mixin our super methods directly but do not ov - merge(child, merge(merge({}, sup), child)); - } - childProto._super = child._super = callSuper; - childProto._getSuper = child._getSuper = getSuper; - childProto._static = child; - } + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [a viz] MMMM YYYY', + LLL: 'D [a viz] MMMM YYYY HH:mm', + LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Hiziv da] LT', + nextDay: '[Warcʼhoazh da] LT', + nextWeek: 'dddd [da] LT', + lastDay: '[Decʼh da] LT', + lastWeek: 'dddd [paset da] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'a-benn %s', + past: '%s ʼzo', + s: 'un nebeud segondennoù', + ss: '%d eilenn', + m: 'ur vunutenn', + mm: relativeTimeWithMutation, + h: 'un eur', + hh: '%d eur', + d: 'un devezh', + dd: relativeTimeWithMutation, + M: 'ur miz', + MM: relativeTimeWithMutation, + y: 'ur bloaz', + yy: specialMutationForYears, + }, + dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, + ordinal: function (number) { + var output = number === 1 ? 'añ' : 'vet'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn + isPM: function (token) { + return token === 'g.m.'; + }, + meridiem: function (hour, minute, isLower) { + return hour < 12 ? 'a.m.' : 'g.m.'; + }, + }); - function declare(sup, proto) { - function declared() { - switch (arguments.length) { - case 0: - this.constructor.call(this); - break; - case 1: - this.constructor.call(this, arguments[0]); - break; - case 2: - this.constructor.call(this, arguments[0], arguments[1]); - break; - case 3: - this.constructor.call(this, arguments[0], arguments[1], arguments[2]); - break; - default: - this.constructor.apply(this, arguments); - } - } + return br; - __declare(declared, sup, proto); - return declared.init() || declared; - } +}))); - function singleton(sup, proto) { - var retInstance; - function declaredSingleton() { - if (!retInstance) { - this.constructor.apply(this, arguments); - retInstance = this; - } - return retInstance; - } +/***/ }), - __declare(declaredSingleton, sup, proto); - return declaredSingleton.init() || declaredSingleton; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - Base = declare({ - instance: { - "get": getter, - "set": setter - }, +//! moment.js locale configuration +//! locale : Bosnian [bs] +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković - "static": { - "get": getter, - "set": setter, - mixin: mixin, - extend: extend, - as: _export - } - }); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - declare.singleton = singleton; - return declare; - } + //! moment.js locale configuration - if (true) { - if ( true && module.exports) { - module.exports = createDeclared(); + function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'ss': + if (number === 1) { + result += 'sekunda'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sekunde'; + } else { + result += 'sekundi'; + } + return result; + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; } - } else {} -}()); - - - + } + var bs = moment.defineLocale('bs', { + months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay: '[jučer u] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: 'dan', + dd: translate, + M: 'mjesec', + MM: translate, + y: 'godinu', + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/***/ }), + return bs; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js"); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js ***! - \********************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -(function () { - "use strict"; - /*global extender is, dateExtended*/ +//! moment.js locale configuration +//! locale : Catalan [ca] +//! author : Juan G. Hurtado : https://github.com/juanghurtado - function defineExtended(extender) { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var merge = (function merger() { - function _merge(target, source) { - var name, s; - for (name in source) { - if (source.hasOwnProperty(name)) { - s = source[name]; - if (!(name in target) || (target[name] !== s)) { - target[name] = s; - } - } - } - return target; + var ca = moment.defineLocale('ca', { + months: { + standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( + '_' + ), + format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, + }, + monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a les] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', + llll: 'ddd D MMM YYYY, H:mm', + }, + calendar: { + sameDay: function () { + return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; + }, + nextDay: function () { + return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; + }, + nextWeek: function () { + return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; + }, + lastDay: function () { + return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; + }, + lastWeek: function () { + return ( + '[el] dddd [passat a ' + + (this.hours() !== 1 ? 'les' : 'la') + + '] LT' + ); + }, + sameElse: 'L', + }, + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'uns segons', + ss: '%d segons', + m: 'un minut', + mm: '%d minuts', + h: 'una hora', + hh: '%d hores', + d: 'un dia', + dd: '%d dies', + M: 'un mes', + MM: '%d mesos', + y: 'un any', + yy: '%d anys', + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; } + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - return function merge(obj) { - if (!obj) { - obj = {}; - } - for (var i = 1, l = arguments.length; i < l; i++) { - _merge(obj, arguments[i]); - } - return obj; // Object - }; - }()); + return ca; - function getExtended() { +}))); - var loaded = {}; +/***/ }), - //getInitial instance; - var extended = extender.define(); - extended.expose({ - register: function register(alias, extendWith) { - if (!extendWith) { - extendWith = alias; - alias = null; - } - var type = typeof extendWith; - if (alias) { - extended[alias] = extendWith; - } else if (extendWith && type === "function") { - extended.extend(extendWith); - } else if (type === "object") { - extended.expose(extendWith); - } else { - throw new TypeError("extended.register must be called with an extender function"); - } - return extended; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - define: function () { - return extender.define.apply(extender, arguments); - } - }); +//! moment.js locale configuration +//! locale : Czech [cs] +//! author : petrbela : https://github.com/petrbela - return extended; - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function extended() { - return getExtended(); - } + //! moment.js locale configuration - extended.define = function define() { - return extender.define.apply(extender, arguments); - }; + var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( + '_' + ), + monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), + monthsParse = [ + /^led/i, + /^úno/i, + /^bře/i, + /^dub/i, + /^kvě/i, + /^(čvn|červen$|června)/i, + /^(čvc|červenec|července)/i, + /^srp/i, + /^zář/i, + /^říj/i, + /^lis/i, + /^pro/i, + ], + // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. + // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. + monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; - return extended; + function plural(n) { + return n > 1 && n < 5 && ~~(n / 10) !== 1; + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; + case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'sekundy' : 'sekund'); + } else { + return result + 'sekundami'; + } + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + } } - if (true) { - if ( true && module.exports) { - module.exports = defineExtended(__webpack_require__(/*! extender */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js")); + var cs = moment.defineLocale('cs', { + months: months, + monthsShort: monthsShort, + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. + // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. + monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, + monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', + l: 'D. M. YYYY', + }, + calendar: { + sameDay: '[dnes v] LT', + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'před %s', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - } - } else {} + return cs; -}).call(this); +}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Chuvash [cv] +//! author : Anatoly Mironov : https://github.com/mirontoli +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration + var cv = moment.defineLocale('cv', { + months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( + '_' + ), + monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( + '_' + ), + weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + }, + calendar: { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ӗнер] LT [сехетре]', + nextWeek: '[Ҫитес] dddd LT [сехетре]', + lastWeek: '[Иртнӗ] dddd LT [сехетре]', + sameElse: 'L', + }, + relativeTime: { + future: function (output) { + var affix = /сехет$/i.exec(output) + ? 'рен' + : /ҫул$/i.exec(output) + ? 'тан' + : 'ран'; + return output + affix; + }, + past: '%s каялла', + s: 'пӗр-ик ҫеккунт', + ss: '%d ҫеккунт', + m: 'пӗр минут', + mm: '%d минут', + h: 'пӗр сехет', + hh: '%d сехет', + d: 'пӗр кун', + dd: '%d кун', + M: 'пӗр уйӑх', + MM: '%d уйӑх', + y: 'пӗр ҫул', + yy: '%d ҫул', + }, + dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, + ordinal: '%d-мӗш', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/***/ }), + return cv; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js ***! - \***********************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +}))); -(function () { - /*jshint strict:false*/ +/***/ }), - /** - * - * @projectName extender - * @github http://github.com/doug-martin/extender - * @header - * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender) - * # Extender - * - * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type. - * - * ## Why Is Extender Different? - * - * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner. - * - * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API. - * - * - * ## Installation - * - * ``` - * npm install extender - * ``` - * - * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js)) - * - * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/). - * - * ### Requirejs - * - * To use with requirejs place the `extend` source in the root scripts directory - * - * ```javascript - * - * define(["extender"], function(extender){ - * }); - * - * ``` - * - * - * ## Usage - * - * **`extender.define(tester, decorations)`** - * - * To create your own extender call the `extender.define` function. - * - * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations` - * - * ```javascript - * function isString(obj) { - * return !isUndefinedOrNull(obj) && (typeof obj === "string" || obj instanceof String); - * } - * - * - * var myExtender = extender.define(isString, { - * multiply: function (str, times) { - * var ret = str; - * for (var i = 1; i < times; i++) { - * ret += str; - * } - * return ret; - * }, - * toArray: function (str, delim) { - * delim = delim || ""; - * return str.split(delim); - * } - * }); - * - * myExtender("hello").multiply(2).value(); //hellohello - * - * ``` - * - * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods. - * - * ```javascript - * - * function isUndefined(obj) { - * var undef; - * return obj === undef; - * } - * - * function isUndefinedOrNull(obj) { - * var undef; - * return obj === undef || obj === null; - * } - * - * function isArray(obj) { - * return Object.prototype.toString.call(obj) === "[object Array]"; - * } - * - * function isBoolean(obj) { - * var undef, type = typeof obj; - * return !isUndefinedOrNull(obj) && type === "boolean" || type === "Boolean"; - * } - * - * function isString(obj) { - * return !isUndefinedOrNull(obj) && (typeof obj === "string" || obj instanceof String); - * } - * - * var myExtender = extender.define({ - * isUndefined : isUndefined, - * isUndefinedOrNull : isUndefinedOrNull, - * isArray : isArray, - * isBoolean : isBoolean, - * isString : isString - * }); - * - * ``` - * - * To use - * - * ``` - * var undef; - * myExtender("hello").isUndefined().value(); //false - * myExtender(undef).isUndefined().value(); //true - * ``` - * - * You can also chain extenders so that they accept multiple types and decorates accordingly. - * - * ```javascript - * myExtender - * .define(isArray, { - * pluck: function (arr, m) { - * var ret = []; - * for (var i = 0, l = arr.length; i < l; i++) { - * ret.push(arr[i][m]); - * } - * return ret; - * } - * }) - * .define(isBoolean, { - * invert: function (val) { - * return !val; - * } - * }); - * - * myExtender([{a: "a"},{a: "b"},{a: "c"}]).pluck("a").value(); //["a", "b", "c"] - * myExtender("I love javascript!").toArray(/\s+/).pluck("0"); //["I", "l", "j"] - * - * ``` - * - * Notice that we reuse the same extender as defined above. - * - * **Return Values** - * - * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned. - * - * **Default decoration methods** - * - * By default every value passed into an extender is decorated with the following methods. - * - * * `value` : The value this extender represents. - * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue` - * * `neq(oterValue)` : Tests strict inequality of the currently represented value. - * * `print` : logs the current value to the console. - * - * **Extender initialization** - * - * When creating an extender you can also specify a constructor which will be invoked with the current value. - * - * ```javascript - * myExtender.define(isString, { - * constructor : function(val){ - * //set our value to the string trimmed - * this._value = val.trimRight().trimLeft(); - * } - * }); - * ``` - * - * **`noWrap`** - * - * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`. - * - * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense. - * - * ``` - * - * var myValidator = extender.define({ - * //chainable validation methods - * //... - * //end chainable validation methods - * - * noWrap : { - * validator : function(){ - * //return your validator - * } - * } - * }); - * - * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value() - * - * - * ``` - * **`extender.extend(extendr)`** - * - * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders. - * - * Suppose you have the following two extenders. - * - * ```javascript - * var myExtender = extender - * .define({ - * isFunction: is.function, - * isNumber: is.number, - * isString: is.string, - * isDate: is.date, - * isArray: is.array, - * isBoolean: is.boolean, - * isUndefined: is.undefined, - * isDefined: is.defined, - * isUndefinedOrNull: is.undefinedOrNull, - * isNull: is.null, - * isArguments: is.arguments, - * isInstanceOf: is.instanceOf, - * isRegExp: is.regExp - * }); - * var myExtender2 = extender.define(is.array, { - * pluck: function (arr, m) { - * var ret = []; - * for (var i = 0, l = arr.length; i < l; i++) { - * ret.push(arr[i][m]); - * } - * return ret; - * }, - * - * noWrap: { - * pluckPlain: function (arr, m) { - * var ret = []; - * for (var i = 0, l = arr.length; i < l; i++) { - * ret.push(arr[i][m]); - * } - * return ret; - * } - * } - * }); - * - * - * ``` - * - * And you do not want to alter either of them but instead what to create a third that is the union of the two. - * - * - * ```javascript - * var composed = extender.extend(myExtender).extend(myExtender2); - * ``` - * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`. - * - * ```javascript - * var extended = composed([ - * {a: "a"}, - * {a: "b"}, - * {a: "c"} - * ]); - * extended.isArray().value(); //true - * extended.pluck("a").value(); // ["a", "b", "c"]); - * - * ``` - * - * **Note** `myExtender` and `myExtender2` will **NOT** be altered. - * - * **`extender.expose(methods)`** - * - * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly. - * - * ``` - * var isMethods = { - * isFunction: is.function, - * isNumber: is.number, - * isString: is.string, - * isDate: is.date, - * isArray: is.array, - * isBoolean: is.boolean, - * isUndefined: is.undefined, - * isDefined: is.defined, - * isUndefinedOrNull: is.undefinedOrNull, - * isNull: is.null, - * isArguments: is.arguments, - * isInstanceOf: is.instanceOf, - * isRegExp: is.regExp - * }; - * - * var myExtender = extender.define(isMethods).expose(isMethods); - * - * myExtender.isArray([]); //true - * myExtender([]).isArray([]).value(); //true - * - * ``` - * - * - * **Using `instanceof`** - * - * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator. - * - * ```javascript - * var str = myExtender("hello"); - * - * str instanceof myExtender; //true - * ``` - * - * ## Examples - * - * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples) - */ - function defineExtender(declare) { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Welsh [cy] +//! author : Robert Allen : https://github.com/robgallen +//! author : https://github.com/ryangreaves +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - var slice = Array.prototype.slice, undef; + //! moment.js locale configuration - function indexOf(arr, item) { - if (arr && arr.length) { - for (var i = 0, l = arr.length; i < l; i++) { - if (arr[i] === item) { - return i; - } + var cy = moment.defineLocale('cy', { + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( + '_' + ), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( + '_' + ), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( + '_' + ), + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + weekdaysParseExact: true, + // time formats are the same as en-gb + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + ss: '%d eiliad', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd', + }, + dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', + 'af', + 'il', + 'ydd', + 'ydd', + 'ed', + 'ed', + 'ed', + 'fed', + 'fed', + 'fed', // 1af to 10fed + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'fed', // 11eg to 20fed + ]; + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; } + } else if (b > 0) { + output = lookup[b]; } - return -1; - } + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - function isArray(obj) { - return Object.prototype.toString.call(obj) === "[object Array]"; - } + return cy; - var merge = (function merger() { - function _merge(target, source, exclude) { - var name, s; - for (name in source) { - if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) { - s = source[name]; - if (!(name in target) || (target[name] !== s)) { - target[name] = s; - } - } - } - return target; - } +}))); - return function merge(obj) { - if (!obj) { - obj = {}; - } - var l = arguments.length; - var exclude = arguments[arguments.length - 1]; - if (isArray(exclude)) { - l--; - } else { - exclude = []; - } - for (var i = 1; i < l; i++) { - _merge(obj, arguments[i], exclude); - } - return obj; // Object - }; - }()); +/***/ }), - function extender(supers) { - supers = supers || []; - var Base = declare({ - instance: { - constructor: function (value) { - this._value = value; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - value: function () { - return this._value; - }, +//! moment.js locale configuration +//! locale : Danish [da] +//! author : Ulrik Nielsen : https://github.com/mrbase - eq: function eq(val) { - return this["__extender__"](this._value === val); - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - neq: function neq(other) { - return this["__extender__"](this._value !== other); - }, - print: function () { - console.log(this._value); - return this; - } - } - }), defined = []; + //! moment.js locale configuration - function addMethod(proto, name, func) { - if ("function" !== typeof func) { - throw new TypeError("when extending type you must provide a function"); - } - var extendedMethod; - if (name === "constructor") { - extendedMethod = function () { - this._super(arguments); - func.apply(this, arguments); - }; - } else { - extendedMethod = function extendedMethod() { - var args = slice.call(arguments); - args.unshift(this._value); - var ret = func.apply(this, args); - return ret !== undef ? this["__extender__"](ret) : this; - }; - } - proto[name] = extendedMethod; - } + var da = moment.defineLocale('da', { + months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'på dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[i] dddd[s kl.] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'få sekunder', + ss: '%d sekunder', + m: 'et minut', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dage', + M: 'en måned', + MM: '%d måneder', + y: 'et år', + yy: '%d år', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - function addNoWrapMethod(proto, name, func) { - if ("function" !== typeof func) { - throw new TypeError("when extending type you must provide a function"); - } - var extendedMethod; - if (name === "constructor") { - extendedMethod = function () { - this._super(arguments); - func.apply(this, arguments); - }; - } else { - extendedMethod = function extendedMethod() { - var args = slice.call(arguments); - args.unshift(this._value); - return func.apply(this, args); - }; - } - proto[name] = extendedMethod; - } + return da; - function decorateProto(proto, decoration, nowrap) { - for (var i in decoration) { - if (decoration.hasOwnProperty(i)) { - if (i !== "getters" && i !== "setters") { - if (i === "noWrap") { - decorateProto(proto, decoration[i], true); - } else if (nowrap) { - addNoWrapMethod(proto, i, decoration[i]); - } else { - addMethod(proto, i, decoration[i]); - } - } else { - proto[i] = decoration[i]; - } - } - } - } +}))); - function _extender(obj) { - var ret = obj, i, l; - if (!(obj instanceof Base)) { - var OurBase = Base; - for (i = 0, l = defined.length; i < l; i++) { - var definer = defined[i]; - if (definer[0](obj)) { - OurBase = OurBase.extend({instance: definer[1]}); - } - } - ret = new OurBase(obj); - ret["__extender__"] = _extender; - } - return ret; - } - function always() { - return true; - } +/***/ }), - function define(tester, decorate) { - if (arguments.length) { - if (typeof tester === "object") { - decorate = tester; - tester = always; - } - decorate = decorate || {}; - var proto = {}; - decorateProto(proto, decorate); - //handle browsers like which skip over the constructor while looping - if (!proto.hasOwnProperty("constructor")) { - if (decorate.hasOwnProperty("constructor")) { - addMethod(proto, "constructor", decorate.constructor); - } else { - proto.constructor = function () { - this._super(arguments); - }; - } - } - defined.push([tester, proto]); - } - return _extender; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : German (Austria) [de-at] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +//! author : Mikolaj Dadela : https://github.com/mik01aj + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + var deAt = moment.defineLocale('de-at', { + months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - function extend(supr) { - if (supr && supr.hasOwnProperty("__defined__")) { - _extender["__defined__"] = defined = defined.concat(supr["__defined__"]); - } - merge(_extender, supr, ["define", "extend", "expose", "__defined__"]); - return _extender; - } + return deAt; - _extender.define = define; - _extender.extend = extend; - _extender.expose = function expose() { - var methods; - for (var i = 0, l = arguments.length; i < l; i++) { - methods = arguments[i]; - if (typeof methods === "object") { - merge(_extender, methods, ["define", "extend", "expose", "__defined__"]); - } - } - return _extender; - }; - _extender["__defined__"] = defined; +}))); - return _extender; - } +/***/ }), - return { - define: function () { - return extender().define.apply(extender, arguments); - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - extend: function (supr) { - return extender().define().extend(supr); - } - }; +//! moment.js locale configuration +//! locale : German (Switzerland) [de-ch] +//! author : sschueller : https://github.com/sschueller - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - if (true) { - if ( true && module.exports) { - module.exports = defineExtender(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")); + //! moment.js locale configuration - } - } else {} + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } -}).call(this); + var deCh = moment.defineLocale('de-ch', { + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/***/ }), + return deCh; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js"); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js ***! - \*****************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - -(function () { - "use strict"; - - function defineFunction(extended, is, args) { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - var isArray = is.isArray, - isObject = is.isObject, - isString = is.isString, - isFunction = is.isFunction, - argsToArray = args.argsToArray; +//! moment.js locale configuration +//! locale : German [de] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Mikolaj Dadela : https://github.com/mik01aj - function spreadArgs(f, args, scope) { - var ret; - switch ((args || []).length) { - case 0: - ret = f.call(scope); - break; - case 1: - ret = f.call(scope, args[0]); - break; - case 2: - ret = f.call(scope, args[0], args[1]); - break; - case 3: - ret = f.call(scope, args[0], args[1], args[2]); - break; - default: - ret = f.apply(scope, args); - } - return ret; - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function hitch(scope, method, args) { - args = argsToArray(arguments, 2); - if ((isString(method) && !(method in scope))) { - throw new Error(method + " property not defined in scope"); - } else if (!isString(method) && !isFunction(method)) { - throw new Error(method + " is not a function"); - } - if (isString(method)) { - return function () { - var func = scope[method]; - if (isFunction(func)) { - return spreadArgs(func, args.concat(argsToArray(arguments)), scope); - } else { - return func; - } - }; - } else { - if (args.length) { - return function () { - return spreadArgs(method, args.concat(argsToArray(arguments)), scope); - }; - } else { + //! moment.js locale configuration - return function () { - return spreadArgs(method, arguments, scope); - }; - } - } - } + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + var de = moment.defineLocale('de', { + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - function applyFirst(method, args) { - args = argsToArray(arguments, 1); - if (!isString(method) && !isFunction(method)) { - throw new Error(method + " must be the name of a property or function to execute"); - } - if (isString(method)) { - return function () { - var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift(); - var func = scope[method]; - if (isFunction(func)) { - scopeArgs = args.concat(scopeArgs); - return spreadArgs(func, scopeArgs, scope); - } else { - return func; - } - }; - } else { - return function () { - var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift(); - scopeArgs = args.concat(scopeArgs); - return spreadArgs(method, scopeArgs, scope); - }; - } - } + return de; +}))); - function hitchIgnore(scope, method, args) { - args = argsToArray(arguments, 2); - if ((isString(method) && !(method in scope))) { - throw new Error(method + " property not defined in scope"); - } else if (!isString(method) && !isFunction(method)) { - throw new Error(method + " is not a function"); - } - if (isString(method)) { - return function () { - var func = scope[method]; - if (isFunction(func)) { - return spreadArgs(func, args, scope); - } else { - return func; - } - }; - } else { - return function () { - return spreadArgs(method, args, scope); - }; - } - } +/***/ }), - function hitchAll(scope) { - var funcs = argsToArray(arguments, 1); - if (!isObject(scope) && !isFunction(scope)) { - throw new TypeError("scope must be an object"); - } - if (funcs.length === 1 && isArray(funcs[0])) { - funcs = funcs[0]; - } - if (!funcs.length) { - funcs = []; - for (var k in scope) { - if (scope.hasOwnProperty(k) && isFunction(scope[k])) { - funcs.push(k); - } - } - } - for (var i = 0, l = funcs.length; i < l; i++) { - scope[funcs[i]] = hitch(scope, scope[funcs[i]]); - } - return scope; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Maldivian [dv] +//! author : Jawish Hameed : https://github.com/jawish - function partial(method, args) { - args = argsToArray(arguments, 1); - if (!isString(method) && !isFunction(method)) { - throw new Error(method + " must be the name of a property or function to execute"); - } - if (isString(method)) { - return function () { - var func = this[method]; - if (isFunction(func)) { - var scopeArgs = args.concat(argsToArray(arguments)); - return spreadArgs(func, scopeArgs, this); - } else { - return func; - } - }; - } else { - return function () { - var scopeArgs = args.concat(argsToArray(arguments)); - return spreadArgs(method, scopeArgs, this); - }; - } - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function curryFunc(f, execute) { - return function () { - var args = argsToArray(arguments); - return execute ? spreadArgs(f, arguments, this) : function () { - return spreadArgs(f, args.concat(argsToArray(arguments)), this); - }; - }; - } + //! moment.js locale configuration + var months = [ + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު', + ], + weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު', + ]; - function curry(depth, cb, scope) { - var f; - if (scope) { - f = hitch(scope, cb); + var dv = moment.defineLocale('dv', { + months: months, + monthsShort: months, + weekdays: weekdays, + weekdaysShort: weekdays, + weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/M/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /މކ|މފ/, + isPM: function (input) { + return 'މފ' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'މކ'; } else { - f = cb; - } - if (depth) { - var len = depth - 1; - for (var i = len; i >= 0; i--) { - f = curryFunc(f, i === len); - } + return 'މފ'; } - return f; - } + }, + calendar: { + sameDay: '[މިއަދު] LT', + nextDay: '[މާދަމާ] LT', + nextWeek: 'dddd LT', + lastDay: '[އިއްޔެ] LT', + lastWeek: '[ފާއިތުވި] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ތެރޭގައި %s', + past: 'ކުރިން %s', + s: 'ސިކުންތުކޮޅެއް', + ss: 'd% ސިކުންތު', + m: 'މިނިޓެއް', + mm: 'މިނިޓު %d', + h: 'ގަޑިއިރެއް', + hh: 'ގަޑިއިރު %d', + d: 'ދުވަހެއް', + dd: 'ދުވަސް %d', + M: 'މަހެއް', + MM: 'މަސް %d', + y: 'އަހަރެއް', + yy: 'އަހަރު %d', + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week: { + dow: 7, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); - return extended - .define(isObject, { - bind: hitch, - bindAll: hitchAll, - bindIgnore: hitchIgnore, - curry: function (scope, depth, fn) { - return curry(depth, fn, scope); - } - }) - .define(isFunction, { - bind: function (fn, obj) { - return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this); - }, - bindIgnore: function (fn, obj) { - return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this); - }, - partial: partial, - applyFirst: applyFirst, - curry: function (fn, num, scope) { - return curry(num, fn, scope); - }, - noWrap: { - f: function () { - return this.value(); - } - } - }) - .define(isString, { - bind: function (str, scope) { - return hitch(scope, str); - }, - bindIgnore: function (str, scope) { - return hitchIgnore(scope, str); - }, - partial: partial, - applyFirst: applyFirst, - curry: function (fn, depth, scope) { - return curry(depth, fn, scope); - } - }) - .expose({ - bind: hitch, - bindAll: hitchAll, - bindIgnore: hitchIgnore, - partial: partial, - applyFirst: applyFirst, - curry: curry - }); + return dv; - } +}))); - if (true) { - if ( true && module.exports) { - module.exports = defineFunction(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); - } - } else {} +/***/ }), -}).call(this); +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Greek [el] +//! author : Aggelos Karalias : https://github.com/mehiel + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration + function isFunction(input) { + return ( + (typeof Function !== 'undefined' && input instanceof Function) || + Object.prototype.toString.call(input) === '[object Function]' + ); + } + var el = moment.defineLocale('el', { + monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( + '_' + ), + monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( + '_' + ), + months: function (momentToFormat, format) { + if (!momentToFormat) { + return this._monthsNominativeEl; + } else if ( + typeof format === 'string' && + /D/.test(format.substring(0, format.indexOf('MMMM'))) + ) { + // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( + '_' + ), + weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem: function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + isPM: function (input) { + return (input + '').toLowerCase()[0] === 'μ'; + }, + meridiemParse: /[ΠΜ]\.?Μ?\.?/i, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendarEl: { + sameDay: '[Σήμερα {}] LT', + nextDay: '[Αύριο {}] LT', + nextWeek: 'dddd [{}] LT', + lastDay: '[Χθες {}] LT', + lastWeek: function () { + switch (this.day()) { + case 6: + return '[το προηγούμενο] dddd [{}] LT'; + default: + return '[την προηγούμενη] dddd [{}] LT'; + } + }, + sameElse: 'L', + }, + calendar: function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + if (isFunction(output)) { + output = output.apply(mom); + } + return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); + }, + relativeTime: { + future: 'σε %s', + past: '%s πριν', + s: 'λίγα δευτερόλεπτα', + ss: '%d δευτερόλεπτα', + m: 'ένα λεπτό', + mm: '%d λεπτά', + h: 'μία ώρα', + hh: '%d ώρες', + d: 'μία μέρα', + dd: '%d μέρες', + M: 'ένας μήνας', + MM: '%d μήνες', + y: 'ένας χρόνος', + yy: '%d χρόνια', + }, + dayOfMonthOrdinalParse: /\d{1,2}η/, + ordinal: '%dη', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4st is the first week of the year. + }, + }); + return el; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js": -/*!**************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js ***! - \**************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - -(function () { - "use strict"; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - function defineHt(_) { +//! moment.js locale configuration +//! locale : English (Australia) [en-au] +//! author : Jared Morse : https://github.com/jarcoal +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - var hashFunction = function (key) { - if (typeof key === "string") { - return key; - } else if (typeof key === "object") { - return key.hashCode ? key.hashCode() : "" + key; - } else { - return "" + key; - } - }; + //! moment.js locale configuration - var Bucket = _.declare({ + var enAu = moment.defineLocale('en-au', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - instance: { + return enAu; - constructor: function () { - this.__entries = []; - this.__keys = []; - this.__values = []; - }, +}))); - pushValue: function (key, value) { - this.__keys.push(key); - this.__values.push(value); - this.__entries.push({key: key, value: value}); - return value; - }, - remove: function (key) { - var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values; - var i = map.length - 1; - for (; i >= 0; i--) { - if (!!(val = map[i]) && val.key === key) { - map.splice(i, 1); - keys.splice(i, 1); - vals.splice(i, 1); - return val.value; - } - } - return ret; - }, +/***/ }), - "set": function (key, value) { - var ret = null, map = this.__entries, vals = this.__values; - var i = map.length - 1; - for (; i >= 0; i--) { - var val = map[i]; - if (val && key === val.key) { - vals[i] = value; - val.value = value; - ret = value; - break; - } - } - if (!ret) { - map.push({key: key, value: value}); - } - return ret; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - find: function (key) { - var ret = null, map = this.__entries, val; - var i = map.length - 1; - for (; i >= 0; i--) { - val = map[i]; - if (val && key === val.key) { - ret = val.value; - break; - } - } - return ret; - }, +//! moment.js locale configuration +//! locale : English (Canada) [en-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca - getEntrySet: function () { - return this.__entries; - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - getKeys: function () { - return this.__keys; - }, + //! moment.js locale configuration - getValues: function (arr) { - return this.__values; - } - } - }); + var enCa = moment.defineLocale('en-ca', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'YYYY-MM-DD', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY h:mm A', + LLLL: 'dddd, MMMM D, YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + }); - return _.declare({ + return enCa; - instance: { +}))); - constructor: function () { - this.__map = {}; - }, - entrySet: function () { - var ret = [], map = this.__map; - for (var i in map) { - if (map.hasOwnProperty(i)) { - ret = ret.concat(map[i].getEntrySet()); - } - } - return ret; - }, +/***/ }), - put: function (key, value) { - var hash = hashFunction(key); - var bucket = null; - if (!(bucket = this.__map[hash])) { - bucket = (this.__map[hash] = new Bucket()); - } - bucket.pushValue(key, value); - return value; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - remove: function (key) { - var hash = hashFunction(key), ret = null; - var bucket = this.__map[hash]; - if (bucket) { - ret = bucket.remove(key); - } - return ret; - }, +//! moment.js locale configuration +//! locale : English (United Kingdom) [en-gb] +//! author : Chris Gedrim : https://github.com/chrisgedrim - "get": function (key) { - var hash = hashFunction(key), ret = null, bucket; - if (!!(bucket = this.__map[hash])) { - ret = bucket.find(key); - } - return ret; - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - "set": function (key, value) { - var hash = hashFunction(key), ret = null, bucket = null, map = this.__map; - if (!!(bucket = map[hash])) { - ret = bucket.set(key, value); - } else { - ret = (map[hash] = new Bucket()).pushValue(key, value); - } - return ret; - }, + //! moment.js locale configuration - contains: function (key) { - var hash = hashFunction(key), ret = false, bucket = null; - if (!!(bucket = this.__map[hash])) { - ret = !!(bucket.find(key)); - } - return ret; - }, + var enGb = moment.defineLocale('en-gb', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - concat: function (hashTable) { - if (hashTable instanceof this._static) { - var ret = new this._static(); - var otherEntrySet = hashTable.entrySet().concat(this.entrySet()); - for (var i = otherEntrySet.length - 1; i >= 0; i--) { - var e = otherEntrySet[i]; - ret.put(e.key, e.value); - } - return ret; - } else { - throw new TypeError("When joining hashtables the joining arg must be a HashTable"); - } - }, + return enGb; - filter: function (cb, scope) { - var es = this.entrySet(), ret = new this._static(); - es = _.filter(es, cb, scope); - for (var i = es.length - 1; i >= 0; i--) { - var e = es[i]; - ret.put(e.key, e.value); - } - return ret; - }, +}))); - forEach: function (cb, scope) { - var es = this.entrySet(); - _.forEach(es, cb, scope); - }, - every: function (cb, scope) { - var es = this.entrySet(); - return _.every(es, cb, scope); - }, +/***/ }), - map: function (cb, scope) { - var es = this.entrySet(); - return _.map(es, cb, scope); - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - some: function (cb, scope) { - var es = this.entrySet(); - return _.some(es, cb, scope); - }, +//! moment.js locale configuration +//! locale : English (Ireland) [en-ie] +//! author : Chris Cartlidge : https://github.com/chriscartlidge - reduce: function (cb, scope) { - var es = this.entrySet(); - return _.reduce(es, cb, scope); - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - reduceRight: function (cb, scope) { - var es = this.entrySet(); - return _.reduceRight(es, cb, scope); - }, + //! moment.js locale configuration - clear: function () { - this.__map = {}; - }, + var enIe = moment.defineLocale('en-ie', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - keys: function () { - var ret = [], map = this.__map; - for (var i in map) { - //if (map.hasOwnProperty(i)) { - ret = ret.concat(map[i].getKeys()); - //} - } - return ret; - }, + return enIe; - values: function () { - var ret = [], map = this.__map; - for (var i in map) { - //if (map.hasOwnProperty(i)) { - ret = ret.concat(map[i].getValues()); - //} - } - return ret; - }, +}))); - isEmpty: function () { - return this.keys().length === 0; - } - } - }); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - } +//! moment.js locale configuration +//! locale : English (Israel) [en-il] +//! author : Chris Gedrim : https://github.com/chrisgedrim - if (true) { - if ( true && module.exports) { - module.exports = defineHt(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")().register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")).register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")).register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js"))); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - } - } else {} + //! moment.js locale configuration -}).call(this); + var enIl = moment.defineLocale('en-il', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + }); + return enIl; +}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : English (India) [en-in] +//! author : Jatin Agrawal : https://github.com/jatinag22 +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js ***! - \*********************************************************************************************/ -/***/ ((module) => { + var enIn = moment.defineLocale('en-in', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 1st is the first week of the year. + }, + }); -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh - * @license MIT - */ + return enIn; -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -} +}))); -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : English (New Zealand) [en-nz] +//! author : Luke McGregor : https://github.com/lukemcgregor -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js ***! - \***********************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -(function () { - "use strict"; + //! moment.js locale configuration - function defineIsa(extended) { + var enNz = moment.defineLocale('en-nz', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - var pSlice = Array.prototype.slice; + return enNz; - var hasOwn = Object.prototype.hasOwnProperty; - var toStr = Object.prototype.toString; +}))); - function argsToArray(args, slice) { - var i = -1, j = 0, l = args.length, ret = []; - slice = slice || 0; - i += slice; - while (++i < l) { - ret[j++] = args[i]; - } - return ret; - } - function keys(obj) { - var ret = []; - for (var i in obj) { - if (hasOwn.call(obj, i)) { - ret.push(i); - } - } - return ret; - } +/***/ }), - //taken from node js assert.js - //https://github.com/joyent/node/blob/master/lib/assert.js - function deepEqual(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - } else if (typeof Buffer !== "undefined" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { - if (actual.length !== expected.length) { - return false; - } - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) { - return false; - } - } - return true; +//! moment.js locale configuration +//! locale : English (Singapore) [en-sg] +//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (isDate(actual) && isDate(expected)) { - return actual.getTime() === expected.getTime(); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - // 7.3 If the expected value is a RegExp object, the actual value is - // equivalent if it is also a RegExp object with the same source and - // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). - } else if (isRegExp(actual) && isRegExp(expected)) { - return actual.source === expected.source && - actual.global === expected.global && - actual.multiline === expected.multiline && - actual.lastIndex === expected.lastIndex && - actual.ignoreCase === expected.ignoreCase; + //! moment.js locale configuration - // 7.4. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (isString(actual) && isString(expected) && actual !== expected) { - return false; - } else if (typeof actual !== 'object' && typeof expected !== 'object') { - return actual === expected; + var enSg = moment.defineLocale('en-sg', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - // 7.5 For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } - } + return enSg; +}))); - function objEquiv(a, b) { - var key; - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { - return false; - } - // an identical 'prototype' property. - if (a.prototype !== b.prototype) { - return false; - } - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return deepEqual(a, b); - } - try { - var ka = keys(a), - kb = keys(b), - i; - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length !== kb.length) { - return false; - } - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] !== kb[i]) { - return false; - } - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key])) { - return false; - } - } - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - return true; - } +/***/ }), - var isFunction = function (obj) { - return toStr.call(obj) === '[object Function]'; - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - //ie hack - if ("undefined" !== typeof window && !isFunction(window.alert)) { - (function (alert) { - isFunction = function (obj) { - return toStr.call(obj) === '[object Function]' || obj === alert; - }; - }(window.alert)); - } +//! moment.js locale configuration +//! locale : Esperanto [eo] +//! author : Colin Dean : https://github.com/colindean +//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia +//! comment : miestasmia corrected the translation by colindean +//! comment : Vivakvo corrected the translation by colindean and miestasmia - function isObject(obj) { - var undef; - return obj !== null && typeof obj === "object"; - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function isHash(obj) { - var ret = isObject(obj); - return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval; - } + //! moment.js locale configuration - function isEmpty(object) { - if (isArguments(object)) { - return object.length === 0; - } else if (isObject(object)) { - return keys(object).length === 0; - } else if (isString(object) || isArray(object)) { - return object.length === 0; + var eo = moment.defineLocale('eo', { + months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( + '_' + ), + monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), + weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), + weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), + weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: '[la] D[-an de] MMMM, YYYY', + LLL: '[la] D[-an de] MMMM, YYYY HH:mm', + LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', + llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; + }, + meridiem: function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; } - return true; - } + }, + calendar: { + sameDay: '[Hodiaŭ je] LT', + nextDay: '[Morgaŭ je] LT', + nextWeek: 'dddd[n je] LT', + lastDay: '[Hieraŭ je] LT', + lastWeek: '[pasintan] dddd[n je] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'post %s', + past: 'antaŭ %s', + s: 'kelkaj sekundoj', + ss: '%d sekundoj', + m: 'unu minuto', + mm: '%d minutoj', + h: 'unu horo', + hh: '%d horoj', + d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo + dd: '%d tagoj', + M: 'unu monato', + MM: '%d monatoj', + y: 'unu jaro', + yy: '%d jaroj', + }, + dayOfMonthOrdinalParse: /\d{1,2}a/, + ordinal: '%da', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); - function isBoolean(obj) { - return obj === true || obj === false || toStr.call(obj) === "[object Boolean]"; - } + return eo; - function isUndefined(obj) { - return typeof obj === 'undefined'; - } +}))); - function isDefined(obj) { - return !isUndefined(obj); - } - function isUndefinedOrNull(obj) { - return isUndefined(obj) || isNull(obj); - } +/***/ }), - function isNull(obj) { - return obj === null; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Spanish (Dominican Republic) [es-do] - var isArguments = function _isArguments(object) { - return toStr.call(object) === '[object Arguments]'; - }; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - if (!isArguments(arguments)) { - isArguments = function _isArguments(obj) { - return !!(obj && hasOwn.call(obj, "callee")); - }; - } + //! moment.js locale configuration + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; - function isInstanceOf(obj, clazz) { - if (isFunction(clazz)) { - return obj instanceof clazz; + var esDo = moment.defineLocale('es-do', { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; } else { - return false; + return monthsShortDot[m.month()]; } - } - - function isRegExp(obj) { - return toStr.call(obj) === '[object RegExp]'; - } - - var isArray = Array.isArray || function isArray(obj) { - return toStr.call(obj) === "[object Array]"; - }; - - function isDate(obj) { - return toStr.call(obj) === '[object Date]'; - } + }, + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, + monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); + }, + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - function isString(obj) { - return toStr.call(obj) === '[object String]'; - } + return esDo; - function isNumber(obj) { - return toStr.call(obj) === '[object Number]'; - } +}))); - function isTrue(obj) { - return obj === true; - } - function isFalse(obj) { - return obj === false; - } +/***/ }), - function isNotNull(obj) { - return !isNull(obj); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - function isEq(obj, obj2) { - /*jshint eqeqeq:false*/ - return obj == obj2; - } +//! moment.js locale configuration +//! locale : Spanish (United States) [es-us] +//! author : bustta : https://github.com/bustta +//! author : chrisrodz : https://github.com/chrisrodz - function isNeq(obj, obj2) { - /*jshint eqeqeq:false*/ - return obj != obj2; - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function isSeq(obj, obj2) { - return obj === obj2; - } + //! moment.js locale configuration - function isSneq(obj, obj2) { - return obj !== obj2; - } + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; - function isIn(obj, arr) { - if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) { - return arr.indexOf(obj) > -1; - } else if (isArray(arr)) { - for (var i = 0, l = arr.length; i < l; i++) { - if (isEq(obj, arr[i])) { - return true; - } - } + var esUs = moment.defineLocale('es-us', { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; } - return false; - } + }, + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, + monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'MM/DD/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); + }, + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); - function isNotIn(obj, arr) { - return !isIn(obj, arr); - } + return esUs; - function isLt(obj, obj2) { - return obj < obj2; - } +}))); - function isLte(obj, obj2) { - return obj <= obj2; - } - function isGt(obj, obj2) { - return obj > obj2; - } +/***/ }), - function isGte(obj, obj2) { - return obj >= obj2; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - function isLike(obj, reg) { - if (isString(reg)) { - return ("" + obj).match(reg) !== null; - } else if (isRegExp(reg)) { - return reg.test(obj); - } - return false; - } +//! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc - function isNotLike(obj, reg) { - return !isLike(obj, reg); - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function contains(arr, obj) { - return isIn(obj, arr); - } + //! moment.js locale configuration - function notContains(arr, obj) { - return !isIn(obj, arr); - } + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; - function containsAt(arr, obj, index) { - if (isArray(arr) && arr.length > index) { - return isEq(arr[index], obj); + var es = moment.defineLocale('es', { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; } - return false; - } + }, + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, + monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; + }, + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); + }, + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + invalidDate: 'Fecha invalida', + }); - function notContainsAt(arr, obj, index) { - if (isArray(arr)) { - return !isEq(arr[index], obj); - } - return false; - } + return es; - function has(obj, prop) { - return hasOwn.call(obj, prop); - } +}))); - function notHas(obj, prop) { - return !has(obj, prop); - } - function length(obj, l) { - if (has(obj, "length")) { - return obj.length === l; - } - return false; - } +/***/ }), - function notLength(obj, l) { - if (has(obj, "length")) { - return obj.length !== l; - } - return false; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - var isa = { - isFunction: isFunction, - isObject: isObject, - isEmpty: isEmpty, - isHash: isHash, - isNumber: isNumber, - isString: isString, - isDate: isDate, - isArray: isArray, - isBoolean: isBoolean, - isUndefined: isUndefined, - isDefined: isDefined, - isUndefinedOrNull: isUndefinedOrNull, - isNull: isNull, - isArguments: isArguments, - instanceOf: isInstanceOf, - isRegExp: isRegExp, - deepEqual: deepEqual, - isTrue: isTrue, - isFalse: isFalse, - isNotNull: isNotNull, - isEq: isEq, - isNeq: isNeq, - isSeq: isSeq, - isSneq: isSneq, - isIn: isIn, - isNotIn: isNotIn, - isLt: isLt, - isLte: isLte, - isGt: isGt, - isGte: isGte, - isLike: isLike, - isNotLike: isNotLike, - contains: contains, - notContains: notContains, - has: has, - notHas: notHas, - isLength: length, - isNotLength: notLength, - containsAt: containsAt, - notContainsAt: notContainsAt - }; +//! moment.js locale configuration +//! locale : Estonian [et] +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka - var tester = { - constructor: function () { - this._testers = []; - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - noWrap: { - tester: function () { - var testers = this._testers; - return function tester(value) { - var isa = false; - for (var i = 0, l = testers.length; i < l && !isa; i++) { - isa = testers[i](value); - } - return isa; - }; - } - } + //! moment.js locale configuration + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + ss: [number + 'sekundi', number + 'sekundit'], + m: ['ühe minuti', 'üks minut'], + mm: [number + ' minuti', number + ' minutit'], + h: ['ühe tunni', 'tund aega', 'üks tund'], + hh: [number + ' tunni', number + ' tundi'], + d: ['ühe päeva', 'üks päev'], + M: ['kuu aja', 'kuu aega', 'üks kuu'], + MM: [number + ' kuu', number + ' kuud'], + y: ['ühe aasta', 'aasta', 'üks aasta'], + yy: [number + ' aasta', number + ' aastat'], }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } - var switcher = { - constructor: function () { - this._cases = []; - this.__default = null; - }, + var et = moment.defineLocale('et', { + months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( + '_' + ), + monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split( + '_' + ), + weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( + '_' + ), + weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[Täna,] LT', + nextDay: '[Homme,] LT', + nextWeek: '[Järgmine] dddd LT', + lastDay: '[Eile,] LT', + lastWeek: '[Eelmine] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s pärast', + past: '%s tagasi', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: '%d päeva', + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - def: function (val, fn) { - this.__default = fn; - }, + return et; - noWrap: { - switcher: function () { - var testers = this._cases, __default = this.__default; - return function tester() { - var handled = false, args = argsToArray(arguments), caseRet; - for (var i = 0, l = testers.length; i < l && !handled; i++) { - caseRet = testers[i](args); - if (caseRet.length > 1) { - if (caseRet[1] || caseRet[0]) { - return caseRet[1]; - } - } - } - if (!handled && __default) { - return __default.apply(this, args); - } - }; - } - } - }; +}))); - function addToTester(func) { - tester[func] = function isaTester() { - this._testers.push(isa[func]); - }; - } - function addToSwitcher(func) { - switcher[func] = function isaTester() { - var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true; - if (args.length <= isFunc.length - 1) { - throw new TypeError("A handler must be defined when calling using switch"); - } else { - handler = args.pop(); - if (isBoolean(handler)) { - doBreak = handler; - handler = args.pop(); - } - } - if (!isFunction(handler)) { - throw new TypeError("handler must be defined"); - } - this._cases.push(function (testArgs) { - if (isFunc.apply(isa, testArgs.concat(args))) { - return [doBreak, handler.apply(this, testArgs)]; - } - return [false]; - }); - }; - } +/***/ }), - for (var i in isa) { - if (hasOwn.call(isa, i)) { - addToSwitcher(i); - addToTester(i); - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - var is = extended.define(isa).expose(isa); - is.tester = extended.define(tester); - is.switcher = extended.define(switcher); - return is; +//! moment.js locale configuration +//! locale : Basque [eu] +//! author : Eneko Illarramendi : https://github.com/eillarra - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - if (true) { - if ( true && module.exports) { - module.exports = defineIsa(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")); + //! moment.js locale configuration - } - } else {} + var eu = moment.defineLocale('eu', { + months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( + '_' + ), + monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( + '_' + ), + weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY[ko] MMMM[ren] D[a]', + LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l: 'YYYY-M-D', + ll: 'YYYY[ko] MMM D[a]', + lll: 'YYYY[ko] MMM D[a] HH:mm', + llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', + }, + calendar: { + sameDay: '[gaur] LT[etan]', + nextDay: '[bihar] LT[etan]', + nextWeek: 'dddd LT[etan]', + lastDay: '[atzo] LT[etan]', + lastWeek: '[aurreko] dddd LT[etan]', + sameElse: 'L', + }, + relativeTime: { + future: '%s barru', + past: 'duela %s', + s: 'segundo batzuk', + ss: '%d segundo', + m: 'minutu bat', + mm: '%d minutu', + h: 'ordu bat', + hh: '%d ordu', + d: 'egun bat', + dd: '%d egun', + M: 'hilabete bat', + MM: '%d hilabete', + y: 'urte bat', + yy: '%d urte', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -}).call(this); + return eu; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js ***! - \*****************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -(function () { - "use strict"; +//! moment.js locale configuration +//! locale : Persian [fa] +//! author : Ebrahim Byagowi : https://github.com/ebraminio - function defineLeafy(_) { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - function compare(a, b) { - var ret = 0; - if (a > b) { - return 1; - } else if (a < b) { - return -1; - } else if (!b) { - return 1; + //! moment.js locale configuration + + var symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰', + }, + numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0', + }; + + var fa = moment.defineLocale('fa', { + months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( + '_' + ), + weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( + '_' + ), + weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + meridiemParse: /قبل از ظهر|بعد از ظهر/, + isPM: function (input) { + return /بعد از ظهر/.test(input); + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'قبل از ظهر'; + } else { + return 'بعد از ظهر'; } - return ret; - } + }, + calendar: { + sameDay: '[امروز ساعت] LT', + nextDay: '[فردا ساعت] LT', + nextWeek: 'dddd [ساعت] LT', + lastDay: '[دیروز ساعت] LT', + lastWeek: 'dddd [پیش] [ساعت] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'در %s', + past: '%s پیش', + s: 'چند ثانیه', + ss: '%d ثانیه', + m: 'یک دقیقه', + mm: '%d دقیقه', + h: 'یک ساعت', + hh: '%d ساعت', + d: 'یک روز', + dd: '%d روز', + M: 'یک ماه', + MM: '%d ماه', + y: 'یک سال', + yy: '%d سال', + }, + preparse: function (string) { + return string + .replace(/[۰-۹]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + dayOfMonthOrdinalParse: /\d{1,2}م/, + ordinal: '%dم', + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); - var multiply = _.multiply; + return fa; - var Tree = _.declare({ +}))); - instance: { - /** - * Prints a node - * @param node node to print - * @param level the current level the node is at, Used for formatting - */ - __printNode: function (node, level) { - //console.log(level); - var str = []; - if (_.isUndefinedOrNull(node)) { - str.push(multiply('\t', level)); - str.push("~"); - console.log(str.join("")); - } else { - this.__printNode(node.right, level + 1); - str.push(multiply('\t', level)); - str.push(node.data + "\n"); - console.log(str.join("")); - this.__printNode(node.left, level + 1); - } - }, +/***/ }), - constructor: function (options) { - options = options || {}; - this.compare = options.compare || compare; - this.__root = null; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - insert: function () { - throw new Error("Not Implemented"); - }, +//! moment.js locale configuration +//! locale : Finnish [fi] +//! author : Tarmo Aidantausta : https://github.com/bleadof - remove: function () { - throw new Error("Not Implemented"); - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - clear: function () { - this.__root = null; - }, + //! moment.js locale configuration - isEmpty: function () { - return !(this.__root); - }, + var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( + ' ' + ), + numbersFuture = [ + 'nolla', + 'yhden', + 'kahden', + 'kolmen', + 'neljän', + 'viiden', + 'kuuden', + numbersPast[7], + numbersPast[8], + numbersPast[9], + ]; + function translate(number, withoutSuffix, key, isFuture) { + var result = ''; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'ss': + return isFuture ? 'sekunnin' : 'sekuntia'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbalNumber(number, isFuture) + ' ' + result; + return result; + } + function verbalNumber(number, isFuture) { + return number < 10 + ? isFuture + ? numbersFuture[number] + : numbersPast[number] + : number; + } - traverseWithCondition: function (node, order, callback) { - var cont = true; - if (node) { - order = order || Tree.PRE_ORDER; - if (order === Tree.PRE_ORDER) { - cont = callback(node.data); - if (cont) { - cont = this.traverseWithCondition(node.left, order, callback); - if (cont) { - cont = this.traverseWithCondition(node.right, order, callback); - } + var fi = moment.defineLocale('fi', { + months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( + '_' + ), + monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( + '_' + ), + weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( + '_' + ), + weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[ta] YYYY', + LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l: 'D.M.YYYY', + ll: 'Do MMM YYYY', + lll: 'Do MMM YYYY, [klo] HH.mm', + llll: 'ddd, Do MMM YYYY, [klo] HH.mm', + }, + calendar: { + sameDay: '[tänään] [klo] LT', + nextDay: '[huomenna] [klo] LT', + nextWeek: 'dddd [klo] LT', + lastDay: '[eilen] [klo] LT', + lastWeek: '[viime] dddd[na] [klo] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s päästä', + past: '%s sitten', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - } - } else if (order === Tree.IN_ORDER) { - cont = this.traverseWithCondition(node.left, order, callback); - if (cont) { - cont = callback(node.data); - if (cont) { - cont = this.traverseWithCondition(node.right, order, callback); - } - } - } else if (order === Tree.POST_ORDER) { - cont = this.traverseWithCondition(node.left, order, callback); - if (cont) { - if (cont) { - cont = this.traverseWithCondition(node.right, order, callback); - } - if (cont) { - cont = callback(node.data); - } - } - } else if (order === Tree.REVERSE_ORDER) { - cont = this.traverseWithCondition(node.right, order, callback); - if (cont) { - cont = callback(node.data); - if (cont) { - cont = this.traverseWithCondition(node.left, order, callback); - } - } - } - } - return cont; - }, + return fi; - traverse: function (node, order, callback) { - if (node) { - order = order || Tree.PRE_ORDER; - if (order === Tree.PRE_ORDER) { - callback(node.data); - this.traverse(node.left, order, callback); - this.traverse(node.right, order, callback); - } else if (order === Tree.IN_ORDER) { - this.traverse(node.left, order, callback); - callback(node.data); - this.traverse(node.right, order, callback); - } else if (order === Tree.POST_ORDER) { - this.traverse(node.left, order, callback); - this.traverse(node.right, order, callback); - callback(node.data); - } else if (order === Tree.REVERSE_ORDER) { - this.traverse(node.right, order, callback); - callback(node.data); - this.traverse(node.left, order, callback); +}))); - } - } - }, - forEach: function (cb, scope, order) { - if (typeof cb !== "function") { - throw new TypeError(); - } - order = order || Tree.IN_ORDER; - scope = scope || this; - this.traverse(this.__root, order, function (node) { - cb.call(scope, node, this); - }); - }, +/***/ }), - map: function (cb, scope, order) { - if (typeof cb !== "function") { - throw new TypeError(); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js ***! + \****************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - order = order || Tree.IN_ORDER; - scope = scope || this; - var ret = new this._static(); - this.traverse(this.__root, order, function (node) { - ret.insert(cb.call(scope, node, this)); - }); - return ret; - }, +//! moment.js locale configuration +//! locale : Filipino [fil] +//! author : Dan Hagman : https://github.com/hagmandan +//! author : Matthew Co : https://github.com/matthewdeeco - filter: function (cb, scope, order) { - if (typeof cb !== "function") { - throw new TypeError(); - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - order = order || Tree.IN_ORDER; - scope = scope || this; - var ret = new this._static(); - this.traverse(this.__root, order, function (node) { - if (cb.call(scope, node, this)) { - ret.insert(node); - } - }); - return ret; - }, + //! moment.js locale configuration - reduce: function (fun, accumulator, order) { - var arr = this.toArray(order); - var args = [arr, fun]; - if (!_.isUndefinedOrNull(accumulator)) { - args.push(accumulator); - } - return _.reduce.apply(_, args); - }, + var fil = moment.defineLocale('fil', { + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', + }, + calendar: { + sameDay: 'LT [ngayong araw]', + nextDay: '[Bukas ng] LT', + nextWeek: 'LT [sa susunod na] dddd', + lastDay: 'LT [kahapon]', + lastWeek: 'LT [noong nakaraang] dddd', + sameElse: 'L', + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal: function (number) { + return number; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - reduceRight: function (fun, accumulator, order) { - var arr = this.toArray(order); - var args = [arr, fun]; - if (!_.isUndefinedOrNull(accumulator)) { - args.push(accumulator); - } - return _.reduceRight.apply(_, args); - }, + return fil; - every: function (cb, scope, order) { - if (typeof cb !== "function") { - throw new TypeError(); - } - order = order || Tree.IN_ORDER; - scope = scope || this; - var ret = false; - this.traverseWithCondition(this.__root, order, function (node) { - ret = cb.call(scope, node, this); - return ret; - }); - return ret; - }, +}))); - some: function (cb, scope, order) { - if (typeof cb !== "function") { - throw new TypeError(); - } - order = order || Tree.IN_ORDER; - scope = scope || this; - var ret; - this.traverseWithCondition(this.__root, order, function (node) { - ret = cb.call(scope, node, this); - return !ret; - }); - return ret; - }, +/***/ }), - toArray: function (order) { - order = order || Tree.IN_ORDER; - var arr = []; - this.traverse(this.__root, order, function (node) { - arr.push(node); - }); - return arr; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Faroese [fo] +//! author : Ragnar Johannesen : https://github.com/ragnar123 +//! author : Kristian Sakarisson : https://github.com/sakarisson + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var fo = moment.defineLocale('fo', { + months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D. MMMM, YYYY HH:mm', + }, + calendar: { + sameDay: '[Í dag kl.] LT', + nextDay: '[Í morgin kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[Í gjár kl.] LT', + lastWeek: '[síðstu] dddd [kl] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'um %s', + past: '%s síðani', + s: 'fá sekund', + ss: '%d sekundir', + m: 'ein minuttur', + mm: '%d minuttir', + h: 'ein tími', + hh: '%d tímar', + d: 'ein dagur', + dd: '%d dagar', + M: 'ein mánaður', + MM: '%d mánaðir', + y: 'eitt ár', + yy: '%d ár', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - contains: function (value) { - var ret = false; - var root = this.__root; - while (root !== null) { - var cmp = this.compare(value, root.data); - if (cmp) { - root = root[(cmp === -1) ? "left" : "right"]; - } else { - ret = true; - root = null; - } - } - return ret; - }, + return fo; - find: function (value) { - var ret; - var root = this.__root; - while (root) { - var cmp = this.compare(value, root.data); - if (cmp) { - root = root[(cmp === -1) ? "left" : "right"]; - } else { - ret = root.data; - break; - } - } - return ret; - }, +}))); - findLessThan: function (value, exclusive) { - //find a better way!!!! - var ret = [], compare = this.compare; - this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) { - var cmp = compare(value, v); - if ((!exclusive && cmp === 0) || cmp === 1) { - ret.push(v); - return true; - } else { - return false; - } - }); - return ret; - }, - findGreaterThan: function (value, exclusive) { - //find a better way!!!! - var ret = [], compare = this.compare; - this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) { - var cmp = compare(value, v); - if ((!exclusive && cmp === 0) || cmp === -1) { - ret.push(v); - return true; - } else { - return false; - } - }); - return ret; - }, +/***/ }), - print: function () { - this.__printNode(this.__root, 0); - } - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - "static": { - PRE_ORDER: "pre_order", - IN_ORDER: "in_order", - POST_ORDER: "post_order", - REVERSE_ORDER: "reverse_order" - } - }); +//! moment.js locale configuration +//! locale : French (Canada) [fr-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca - var AVLTree = (function () { - var abs = Math.abs; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var makeNode = function (data) { - return { - data: data, - balance: 0, - left: null, - right: null - }; - }; + var frCa = moment.defineLocale('fr-ca', { + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, + ordinal: function (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); - var rotateSingle = function (root, dir, otherDir) { - var save = root[otherDir]; - root[otherDir] = save[dir]; - save[dir] = root; - return save; - }; + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + }, + }); + return frCa; - var rotateDouble = function (root, dir, otherDir) { - root[otherDir] = rotateSingle(root[otherDir], otherDir, dir); - return rotateSingle(root, dir, otherDir); - }; +}))); - var adjustBalance = function (root, dir, bal) { - var otherDir = dir === "left" ? "right" : "left"; - var n = root[dir], nn = n[otherDir]; - if (nn.balance === 0) { - root.balance = n.balance = 0; - } else if (nn.balance === bal) { - root.balance = -bal; - n.balance = 0; - } else { /* nn.balance == -bal */ - root.balance = 0; - n.balance = bal; - } - nn.balance = 0; - }; - var insertAdjustBalance = function (root, dir) { - var otherDir = dir === "left" ? "right" : "left"; +/***/ }), - var n = root[dir]; - var bal = dir === "right" ? -1 : +1; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - if (n.balance === bal) { - root.balance = n.balance = 0; - root = rotateSingle(root, otherDir, dir); - } else { - adjustBalance(root, dir, bal); - root = rotateDouble(root, otherDir, dir); - } +//! moment.js locale configuration +//! locale : French (Switzerland) [fr-ch] +//! author : Gaspard Bucher : https://github.com/gaspard - return root; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - }; + //! moment.js locale configuration - var removeAdjustBalance = function (root, dir, done) { - var otherDir = dir === "left" ? "right" : "left"; - var n = root[otherDir]; - var bal = dir === "right" ? -1 : 1; - if (n.balance === -bal) { - root.balance = n.balance = 0; - root = rotateSingle(root, dir, otherDir); - } else if (n.balance === bal) { - adjustBalance(root, otherDir, -bal); - root = rotateDouble(root, dir, otherDir); - } else { /* n.balance == 0 */ - root.balance = -bal; - n.balance = bal; - root = rotateSingle(root, dir, otherDir); - done.done = true; - } - return root; - }; + var frCh = moment.defineLocale('fr-ch', { + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, + ordinal: function (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); - function insert(tree, data, cmp) { - /* Empty tree case */ - var root = tree.__root; - if (root === null || root === undefined) { - tree.__root = makeNode(data); - } else { - var it = root, upd = [], up = [], top = 0, dir; - while (true) { - dir = upd[top] = cmp(data, it.data) === -1 ? "left" : "right"; - up[top++] = it; - if (!it[dir]) { - it[dir] = makeNode(data); - break; - } - it = it[dir]; - } - if (!it[dir]) { - return null; - } - while (--top >= 0) { - up[top].balance += upd[top] === "right" ? -1 : 1; - if (up[top].balance === 0) { - break; - } else if (abs(up[top].balance) > 1) { - up[top] = insertAdjustBalance(up[top], upd[top]); - if (top !== 0) { - up[top - 1][upd[top - 1]] = up[top]; - } else { - tree.__root = up[0]; - } - break; - } - } - } + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - function remove(tree, data, cmp) { - var root = tree.__root; - if (root !== null && root !== undefined) { - var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare; - while (true) { - if (!it) { - return; - } else if ((compare = cmp(data, it.data)) === 0) { - break; - } - dir = upd[top] = compare === -1 ? "left" : "right"; - up[top++] = it; - it = it[dir]; - } - var l = it.left, r = it.right; - if (!l || !r) { - dir = !l ? "right" : "left"; - if (top !== 0) { - up[top - 1][upd[top - 1]] = it[dir]; - } else { - tree.__root = it[dir]; - } - } else { - var heir = l; - upd[top] = "left"; - up[top++] = it; - while (heir.right) { - upd[top] = "right"; - up[top++] = heir; - heir = heir.right; - } - it.data = heir.data; - up[top - 1][up[top - 1] === it ? "left" : "right"] = heir.left; - } - while (--top >= 0 && !done.done) { - up[top].balance += upd[top] === "left" ? -1 : +1; - if (abs(up[top].balance) === 1) { - break; - } else if (abs(up[top].balance) > 1) { - up[top] = removeAdjustBalance(up[top], upd[top], done); - if (top !== 0) { - up[top - 1][upd[top - 1]] = up[top]; - } else { - tree.__root = up[0]; - } - } - } - } - } + return frCh; +}))); - return Tree.extend({ - instance: { - insert: function (data) { - insert(this, data, this.compare); - }, +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - remove: function (data) { - remove(this, data, this.compare); - }, +//! moment.js locale configuration +//! locale : French [fr] +//! author : John Fischer : https://github.com/jfroffice - __printNode: function (node, level) { - var str = []; - if (!node) { - str.push(multiply('\t', level)); - str.push("~"); - console.log(str.join("")); - } else { - this.__printNode(node.right, level + 1); - str.push(multiply('\t', level)); - str.push(node.data + ":" + node.balance + "\n"); - console.log(str.join("")); - this.__printNode(node.left, level + 1); - } - } +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - } - }); - }()); + //! moment.js locale configuration - var AnderssonTree = (function () { + var fr = moment.defineLocale('fr', { + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|)/, + ordinal: function (number, period) { + switch (period) { + // TODO: Return 'e' when day of month > 1. Move this case inside + // block for masculine words below. + // See https://github.com/moment/moment/issues/3375 + case 'D': + return number + (number === 1 ? 'er' : ''); - var nil = {level: 0, data: null}; + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); - function makeNode(data, level) { - return { - data: data, - level: level, - left: nil, - right: nil - }; + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - function skew(root) { - if (root.level !== 0 && root.left.level === root.level) { - var save = root.left; - root.left = save.right; - save.right = root; - root = save; - } - return root; - } + return fr; - function split(root) { - if (root.level !== 0 && root.right.right.level === root.level) { - var save = root.right; - root.right = save.left; - save.left = root; - root = save; - root.level++; - } - return root; - } +}))); - function insert(root, data, compare) { - if (root === nil) { - root = makeNode(data, 1); - } - else { - var dir = compare(data, root.data) === -1 ? "left" : "right"; - root[dir] = insert(root[dir], data, compare); - root = skew(root); - root = split(root); - } - return root; - } - var remove = function (root, data, compare) { - var rLeft, rRight; - if (root !== nil) { - var cmp = compare(data, root.data); - if (cmp === 0) { - rLeft = root.left, rRight = root.right; - if (rLeft !== nil && rRight !== nil) { - var heir = rLeft; - while (heir.right !== nil) { - heir = heir.right; - } - root.data = heir.data; - root.left = remove(rLeft, heir.data, compare); - } else { - root = root[rLeft === nil ? "right" : "left"]; - } - } else { - var dir = cmp === -1 ? "left" : "right"; - root[dir] = remove(root[dir], data, compare); - } - } - if (root !== nil) { - var rLevel = root.level; - var rLeftLevel = root.left.level, rRightLevel = root.right.level; - if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) { - if (rRightLevel > --root.level) { - root.right.level = root.level; - } - root = skew(root); - root = split(root); - } - } - return root; - }; +/***/ }), - return Tree.extend({ +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - instance: { +//! moment.js locale configuration +//! locale : Frisian [fy] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v - isEmpty: function () { - return this.__root === nil || this._super(arguments); - }, +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - insert: function (data) { - if (!this.__root) { - this.__root = nil; - } - this.__root = insert(this.__root, data, this.compare); - }, + //! moment.js locale configuration - remove: function (data) { - this.__root = remove(this.__root, data, this.compare); - }, + var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split( + '_' + ); + var fy = moment.defineLocale('fy', { + months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( + '_' + ), + monthsShort: function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + monthsParseExact: true, + weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( + '_' + ), + weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[hjoed om] LT', + nextDay: '[moarn om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[juster om] LT', + lastWeek: '[ôfrûne] dddd [om] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'oer %s', + past: '%s lyn', + s: 'in pear sekonden', + ss: '%d sekonden', + m: 'ien minút', + mm: '%d minuten', + h: 'ien oere', + hh: '%d oeren', + d: 'ien dei', + dd: '%d dagen', + M: 'ien moanne', + MM: '%d moannen', + y: 'ien jier', + yy: '%d jierren', + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - traverseWithCondition: function (node) { - var cont = true; - if (node !== nil) { - return this._super(arguments); - } - return cont; - }, + return fy; +}))); - traverse: function (node) { - if (node !== nil) { - this._super(arguments); - } - }, - contains: function () { - if (this.__root !== nil) { - return this._super(arguments); - } - return false; - }, +/***/ }), - __printNode: function (node, level) { - var str = []; - if (!node || !node.data) { - str.push(multiply('\t', level)); - str.push("~"); - console.log(str.join("")); - } else { - this.__printNode(node.right, level + 1); - str.push(multiply('\t', level)); - str.push(node.data + ":" + node.level + "\n"); - console.log(str.join("")); - this.__printNode(node.left, level + 1); - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - } +//! moment.js locale configuration +//! locale : Irish or Irish Gaelic [ga] +//! author : André Silva : https://github.com/askpt - }); - }()); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - var BinaryTree = Tree.extend({ - instance: { - insert: function (data) { - if (!this.__root) { - this.__root = { - data: data, - parent: null, - left: null, - right: null - }; - return this.__root; - } - var compare = this.compare; - var root = this.__root; - while (root !== null) { - var cmp = compare(data, root.data); - if (cmp) { - var leaf = (cmp === -1) ? "left" : "right"; - var next = root[leaf]; - if (!next) { - return (root[leaf] = {data: data, parent: root, left: null, right: null}); - } else { - root = next; - } - } else { - return; - } - } - }, + //! moment.js locale configuration - remove: function (data) { - if (this.__root !== null) { - var head = {right: this.__root}, it = head; - var p, f = null; - var dir = "right"; - while (it[dir] !== null) { - p = it; - it = it[dir]; - var cmp = this.compare(data, it.data); - if (!cmp) { - f = it; - } - dir = (cmp === -1 ? "left" : "right"); - } - if (f !== null) { - f.data = it.data; - p[p.right === it ? "right" : "left"] = it[it.left === null ? "right" : "left"]; - } - this.__root = head.right; - } + var months = [ + 'Eanáir', + 'Feabhra', + 'Márta', + 'Aibreán', + 'Bealtaine', + 'Meitheamh', + 'Iúil', + 'Lúnasa', + 'Meán Fómhair', + 'Deireadh Fómhair', + 'Samhain', + 'Nollaig', + ], + monthsShort = [ + 'Ean', + 'Feabh', + 'Márt', + 'Aib', + 'Beal', + 'Meith', + 'Iúil', + 'Lún', + 'M.F.', + 'D.F.', + 'Samh', + 'Noll', + ], + weekdays = [ + 'Dé Domhnaigh', + 'Dé Luain', + 'Dé Máirt', + 'Dé Céadaoin', + 'Déardaoin', + 'Dé hAoine', + 'Dé Sathairn', + ], + weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], + weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; - } - } - }); + var ga = moment.defineLocale('ga', { + months: months, + monthsShort: monthsShort, + monthsParseExact: true, + weekdays: weekdays, + weekdaysShort: weekdaysShort, + weekdaysMin: weekdaysMin, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Inniu ag] LT', + nextDay: '[Amárach ag] LT', + nextWeek: 'dddd [ag] LT', + lastDay: '[Inné ag] LT', + lastWeek: 'dddd [seo caite] [ag] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'i %s', + past: '%s ó shin', + s: 'cúpla soicind', + ss: '%d soicind', + m: 'nóiméad', + mm: '%d nóiméad', + h: 'uair an chloig', + hh: '%d uair an chloig', + d: 'lá', + dd: '%d lá', + M: 'mí', + MM: '%d míonna', + y: 'bliain', + yy: '%d bliain', + }, + dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, + ordinal: function (number) { + var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - var RedBlackTree = (function () { - var RED = "RED", BLACK = "BLACK"; + return ga; - var isRed = function (node) { - return node !== null && node.red; - }; +}))); - var makeNode = function (data) { - return { - data: data, - red: true, - left: null, - right: null - }; - }; - var insert = function (root, data, compare) { - if (!root) { - return makeNode(data); +/***/ }), - } else { - var cmp = compare(data, root.data); - if (cmp) { - var dir = cmp === -1 ? "left" : "right"; - var otherDir = dir === "left" ? "right" : "left"; - root[dir] = insert(root[dir], data, compare); - var node = root[dir]; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - if (isRed(node)) { +//! moment.js locale configuration +//! locale : Scottish Gaelic [gd] +//! author : Jon Ashdown : https://github.com/jonashdown - var sibling = root[otherDir]; - if (isRed(sibling)) { - /* Case 1 */ - root.red = true; - node.red = false; - sibling.red = false; - } else { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - if (isRed(node[dir])) { + //! moment.js locale configuration - root = rotateSingle(root, otherDir); - } else if (isRed(node[otherDir])) { + var months = [ + 'Am Faoilleach', + 'An Gearran', + 'Am Màrt', + 'An Giblean', + 'An Cèitean', + 'An t-Ògmhios', + 'An t-Iuchar', + 'An Lùnastal', + 'An t-Sultain', + 'An Dàmhair', + 'An t-Samhain', + 'An Dùbhlachd', + ], + monthsShort = [ + 'Faoi', + 'Gear', + 'Màrt', + 'Gibl', + 'Cèit', + 'Ògmh', + 'Iuch', + 'Lùn', + 'Sult', + 'Dàmh', + 'Samh', + 'Dùbh', + ], + weekdays = [ + 'Didòmhnaich', + 'Diluain', + 'Dimàirt', + 'Diciadain', + 'Diardaoin', + 'Dihaoine', + 'Disathairne', + ], + weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], + weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; - root = rotateDouble(root, otherDir); - } - } + var gd = moment.defineLocale('gd', { + months: months, + monthsShort: monthsShort, + monthsParseExact: true, + weekdays: weekdays, + weekdaysShort: weekdaysShort, + weekdaysMin: weekdaysMin, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[An-diugh aig] LT', + nextDay: '[A-màireach aig] LT', + nextWeek: 'dddd [aig] LT', + lastDay: '[An-dè aig] LT', + lastWeek: 'dddd [seo chaidh] [aig] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ann an %s', + past: 'bho chionn %s', + s: 'beagan diogan', + ss: '%d diogan', + m: 'mionaid', + mm: '%d mionaidean', + h: 'uair', + hh: '%d uairean', + d: 'latha', + dd: '%d latha', + M: 'mìos', + MM: '%d mìosan', + y: 'bliadhna', + yy: '%d bliadhna', + }, + dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, + ordinal: function (number) { + var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + + return gd; + +}))); - } - } - } - return root; - }; - var rotateSingle = function (root, dir) { - var otherDir = dir === "left" ? "right" : "left"; - var save = root[otherDir]; - root[otherDir] = save[dir]; - save[dir] = root; - root.red = true; - save.red = false; - return save; - }; +/***/ }), - var rotateDouble = function (root, dir) { - var otherDir = dir === "left" ? "right" : "left"; - root[otherDir] = rotateSingle(root[otherDir], otherDir); - return rotateSingle(root, dir); - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Galician [gl] +//! author : Juan G. Hurtado : https://github.com/juanghurtado - var remove = function (root, data, done, compare) { - if (!root) { - done.done = true; - } else { - var dir; - if (compare(data, root.data) === 0) { - if (!root.left || !root.right) { - var save = root[!root.left ? "right" : "left"]; - /* Case 0 */ - if (isRed(root)) { - done.done = true; - } else if (isRed(save)) { - save.red = false; - done.done = true; - } - return save; - } - else { - var heir = root.right, p; - while (heir.left !== null) { - p = heir; - heir = heir.left; - } - if (p) { - p.left = null; - } - root.data = heir.data; - data = heir.data; - } - } - dir = compare(data, root.data) === -1 ? "left" : "right"; - root[dir] = remove(root[dir], data, done, compare); - if (!done.done) { - root = removeBalance(root, dir, done); - } - } - return root; - }; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - var removeBalance = function (root, dir, done) { - var notDir = dir === "left" ? "right" : "left"; - var p = root, s = p[notDir]; - if (isRed(s)) { - root = rotateSingle(root, dir); - s = p[notDir]; - } - if (s !== null) { - if (!isRed(s.left) && !isRed(s.right)) { - if (isRed(p)) { - done.done = true; - } - p.red = 0; - s.red = 1; - } else { - var save = p.red, newRoot = ( root === p ); - p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir); - p.red = save; - p.left.red = p.right.red = 0; - if (newRoot) { - root = p; - } else { - root[dir] = p; - } - done.done = true; - } + //! moment.js locale configuration + + var gl = moment.defineLocale('gl', { + months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( + '_' + ), + monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', + }, + calendar: { + sameDay: function () { + return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; + }, + nextDay: function () { + return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; + }, + nextWeek: function () { + return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; + }, + lastDay: function () { + return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; + }, + lastWeek: function () { + return ( + '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' + ); + }, + sameElse: 'L', + }, + relativeTime: { + future: function (str) { + if (str.indexOf('un') === 0) { + return 'n' + str; } - return root; - }; + return 'en ' + str; + }, + past: 'hai %s', + s: 'uns segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'unha hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un ano', + yy: '%d anos', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - return Tree.extend({ - instance: { - insert: function (data) { - this.__root = insert(this.__root, data, this.compare); - this.__root.red = false; - }, + return gl; - remove: function (data) { - var done = {done: false}; - var root = remove(this.__root, data, done, this.compare); - if (root !== null) { - root.red = 0; - } - this.__root = root; - return data; - }, +}))); - __printNode: function (node, level) { - var str = []; - if (!node) { - str.push(multiply('\t', level)); - str.push("~"); - console.log(str.join("")); - } else { - this.__printNode(node.right, level + 1); - str.push(multiply('\t', level)); - str.push((node.red ? RED : BLACK) + ":" + node.data + "\n"); - console.log(str.join("")); - this.__printNode(node.left, level + 1); - } - } +/***/ }), - } - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js ***! + \*********************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - }()); +//! moment.js locale configuration +//! locale : Konkani Devanagari script [gom-deva] +//! author : The Discoverer : https://github.com/WikiDiscoverer +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - return { - Tree: Tree, - AVLTree: AVLTree, - AnderssonTree: AnderssonTree, - BinaryTree: BinaryTree, - RedBlackTree: RedBlackTree, - IN_ORDER: Tree.IN_ORDER, - PRE_ORDER: Tree.PRE_ORDER, - POST_ORDER: Tree.POST_ORDER, - REVERSE_ORDER: Tree.REVERSE_ORDER + //! moment.js locale configuration + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], + ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], + m: ['एका मिणटान', 'एक मिनूट'], + mm: [number + ' मिणटांनी', number + ' मिणटां'], + h: ['एका वरान', 'एक वर'], + hh: [number + ' वरांनी', number + ' वरां'], + d: ['एका दिसान', 'एक दीस'], + dd: [number + ' दिसांनी', number + ' दीस'], + M: ['एका म्हयन्यान', 'एक म्हयनो'], + MM: [number + ' म्हयन्यानी', number + ' म्हयने'], + y: ['एका वर्सान', 'एक वर्स'], + yy: [number + ' वर्सांनी', number + ' वर्सां'], }; + return isFuture ? format[key][0] : format[key][1]; } - if (true) { - if ( true && module.exports) { - module.exports = defineLeafy(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")() - .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")) - .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")) - .register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")) - .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js")) - ); + var gomDeva = moment.defineLocale('gom-deva', { + months: { + standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, + }, + monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), + weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), + weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'A h:mm [वाजतां]', + LTS: 'A h:mm:ss [वाजतां]', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY A h:mm [वाजतां]', + LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]', + llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', + }, + calendar: { + sameDay: '[आयज] LT', + nextDay: '[फाल्यां] LT', + nextWeek: '[फुडलो] dddd[,] LT', + lastDay: '[काल] LT', + lastWeek: '[फाटलो] dddd[,] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s', + past: '%s आदीं', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, + ordinal: function (number, period) { + switch (period) { + // the ordinal 'वेर' only applies to day of the month + case 'D': + return number + 'वेर'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राती') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळीं') { + return hour; + } else if (meridiem === 'दनपारां') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'सांजे') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'राती'; + } else if (hour < 12) { + return 'सकाळीं'; + } else if (hour < 16) { + return 'दनपारां'; + } else if (hour < 20) { + return 'सांजे'; + } else { + return 'राती'; + } + }, + }); - } - } else {} + return gomDeva; -}).call(this); +}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js ***! + \*********************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Konkani Latin script [gom-latn] +//! author : The Discoverer : https://github.com/WikiDiscoverer +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + s: ['thoddea sekondamni', 'thodde sekond'], + ss: [number + ' sekondamni', number + ' sekond'], + m: ['eka mintan', 'ek minut'], + mm: [number + ' mintamni', number + ' mintam'], + h: ['eka voran', 'ek vor'], + hh: [number + ' voramni', number + ' voram'], + d: ['eka disan', 'ek dis'], + dd: [number + ' disamni', number + ' dis'], + M: ['eka mhoinean', 'ek mhoino'], + MM: [number + ' mhoineamni', number + ' mhoine'], + y: ['eka vorsan', 'ek voros'], + yy: [number + ' vorsamni', number + ' vorsam'], + }; + return isFuture ? format[key][0] : format[key][1]; + } -/***/ }), + var gomLatn = moment.defineLocale('gom-latn', { + months: { + standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( + '_' + ), + format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, + }, + monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), + weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'A h:mm [vazta]', + LTS: 'A h:mm:ss [vazta]', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY A h:mm [vazta]', + LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]', + }, + calendar: { + sameDay: '[Aiz] LT', + nextDay: '[Faleam] LT', + nextWeek: '[Fuddlo] dddd[,] LT', + lastDay: '[Kal] LT', + lastWeek: '[Fattlo] dddd[,] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s', + past: '%s adim', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}(er)/, + ordinal: function (number, period) { + switch (period) { + // the ordinal 'er' only applies to day of the month + case 'D': + return number + 'er'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + meridiemParse: /rati|sokallim|donparam|sanje/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'rati') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'sokallim') { + return hour; + } else if (meridiem === 'donparam') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'sanje') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'rati'; + } else if (hour < 12) { + return 'sokallim'; + } else if (hour < 16) { + return 'donparam'; + } else if (hour < 20) { + return 'sanje'; + } else { + return 'rati'; + } + }, + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return gomLatn; -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); +}))); -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'); -module.exports = DataView; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Gujarati [gu] +//! author : Kaushik Thanki : https://github.com/Kaushik1987 -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js ***! - \******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js"), - hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js"), - hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js"), - hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js"), - hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js"); + //! moment.js locale configuration -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + var symbolMap = { + '1': '૧', + '2': '૨', + '3': '૩', + '4': '૪', + '5': '૫', + '6': '૬', + '7': '૭', + '8': '૮', + '9': '૯', + '0': '૦', + }, + numberMap = { + '૧': '1', + '૨': '2', + '૩': '3', + '૪': '4', + '૫': '5', + '૬': '6', + '૭': '7', + '૮': '8', + '૯': '9', + '૦': '0', + }; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + var gu = moment.defineLocale('gu', { + months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( + '_' + ), + monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( + '_' + ), + weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), + weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), + longDateFormat: { + LT: 'A h:mm વાગ્યે', + LTS: 'A h:mm:ss વાગ્યે', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm વાગ્યે', + LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', + }, + calendar: { + sameDay: '[આજ] LT', + nextDay: '[કાલે] LT', + nextWeek: 'dddd, LT', + lastDay: '[ગઇકાલે] LT', + lastWeek: '[પાછલા] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s મા', + past: '%s પેહલા', + s: 'અમુક પળો', + ss: '%d સેકંડ', + m: 'એક મિનિટ', + mm: '%d મિનિટ', + h: 'એક કલાક', + hh: '%d કલાક', + d: 'એક દિવસ', + dd: '%d દિવસ', + M: 'એક મહિનો', + MM: '%d મહિનો', + y: 'એક વર્ષ', + yy: '%d વર્ષ', + }, + preparse: function (string) { + return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Gujarati notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. + meridiemParse: /રાત|બપોર|સવાર|સાંજ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'રાત') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'સવાર') { + return hour; + } else if (meridiem === 'બપોર') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'સાંજ') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'રાત'; + } else if (hour < 10) { + return 'સવાર'; + } else if (hour < 17) { + return 'બપોર'; + } else if (hour < 20) { + return 'સાંજ'; + } else { + return 'રાત'; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; + return gu; -module.exports = Hash; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js"), - listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js"), - listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js"), - listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js"), - listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js"); +//! moment.js locale configuration +//! locale : Hebrew [he] +//! author : Tomer Cohen : https://github.com/tomer +//! author : Moshe Simantov : https://github.com/DevelopmentIL +//! author : Tal Ater : https://github.com/TalAter -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + //! moment.js locale configuration -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; + var he = moment.defineLocale('he', { + months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( + '_' + ), + monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split( + '_' + ), + weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [ב]MMMM YYYY', + LLL: 'D [ב]MMMM YYYY HH:mm', + LLLL: 'dddd, D [ב]MMMM YYYY HH:mm', + l: 'D/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', + }, + calendar: { + sameDay: '[היום ב־]LT', + nextDay: '[מחר ב־]LT', + nextWeek: 'dddd [בשעה] LT', + lastDay: '[אתמול ב־]LT', + lastWeek: '[ביום] dddd [האחרון בשעה] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'בעוד %s', + past: 'לפני %s', + s: 'מספר שניות', + ss: '%d שניות', + m: 'דקה', + mm: '%d דקות', + h: 'שעה', + hh: function (number) { + if (number === 2) { + return 'שעתיים'; + } + return number + ' שעות'; + }, + d: 'יום', + dd: function (number) { + if (number === 2) { + return 'יומיים'; + } + return number + ' ימים'; + }, + M: 'חודש', + MM: function (number) { + if (number === 2) { + return 'חודשיים'; + } + return number + ' חודשים'; + }, + y: 'שנה', + yy: function (number) { + if (number === 2) { + return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; + } + return number + ' שנים'; + }, + }, + meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, + isPM: function (input) { + return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); + }, + meridiem: function (hour, minute, isLower) { + if (hour < 5) { + return 'לפנות בוקר'; + } else if (hour < 10) { + return 'בבוקר'; + } else if (hour < 12) { + return isLower ? 'לפנה"צ' : 'לפני הצהריים'; + } else if (hour < 18) { + return isLower ? 'אחה"צ' : 'אחרי הצהריים'; + } else { + return 'בערב'; + } + }, + }); -module.exports = ListCache; + return he; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js ***! - \*****************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); +//! moment.js locale configuration +//! locale : Hindi [hi] +//! author : Mayank Singhal : https://github.com/mayanksinghal -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = Map; + //! moment.js locale configuration + + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; + + var hi = moment.defineLocale('hi', { + months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( + '_' + ), + monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat: { + LT: 'A h:mm बजे', + LTS: 'A h:mm:ss बजे', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm बजे', + LLLL: 'dddd, D MMMM YYYY, A h:mm बजे', + }, + calendar: { + sameDay: '[आज] LT', + nextDay: '[कल] LT', + nextWeek: 'dddd, LT', + lastDay: '[कल] LT', + lastWeek: '[पिछले] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s में', + past: '%s पहले', + s: 'कुछ ही क्षण', + ss: '%d सेकंड', + m: 'एक मिनट', + mm: '%d मिनट', + h: 'एक घंटा', + hh: '%d घंटे', + d: 'एक दिन', + dd: '%d दिन', + M: 'एक महीने', + MM: '%d महीने', + y: 'एक वर्ष', + yy: '%d वर्ष', + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'रात'; + } else if (hour < 10) { + return 'सुबह'; + } else if (hour < 17) { + return 'दोपहर'; + } else if (hour < 20) { + return 'शाम'; + } else { + return 'रात'; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); + + return hi; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js"), - mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js"), - mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js"), - mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js"), - mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js"); +//! moment.js locale configuration +//! locale : Croatian [hr] +//! author : Bojan Marković : https://github.com/bmarkovic -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'ss': + if (number === 1) { + result += 'sekunda'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sekunde'; + } else { + result += 'sekundi'; + } + return result; + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + var hr = moment.defineLocale('hr', { + months: { + format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( + '_' + ), + standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( + '_' + ), + }, + monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM YYYY', + LLL: 'Do MMMM YYYY H:mm', + LLLL: 'dddd, Do MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay: '[jučer u] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[prošlu] [nedjelju] [u] LT'; + case 3: + return '[prošlu] [srijedu] [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: 'dan', + dd: translate, + M: 'mjesec', + MM: translate, + y: 'godinu', + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; + return hr; -module.exports = MapCache; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); - -/* Built-in method references that are verified to be native. */ -var Promise = getNative(root, 'Promise'); +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = Promise; +//! moment.js locale configuration +//! locale : Hungarian [hu] +//! author : Adam Brunner : https://github.com/adambrunner +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js ***! - \*****************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split( + ' ' + ); + function translate(number, withoutSuffix, key, isFuture) { + var num = number; + switch (key) { + case 's': + return isFuture || withoutSuffix + ? 'néhány másodperc' + : 'néhány másodperce'; + case 'ss': + return num + (isFuture || withoutSuffix) + ? ' másodperc' + : ' másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + return ''; + } + function week(isFuture) { + return ( + (isFuture ? '' : '[múlt] ') + + '[' + + weekEndings[this.day()] + + '] LT[-kor]' + ); + } -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); + var hu = moment.defineLocale('hu', { + months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split( + '_' + ), + weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY. MMMM D.', + LLL: 'YYYY. MMMM D. H:mm', + LLLL: 'YYYY. MMMM D., dddd H:mm', + }, + meridiemParse: /de|du/i, + isPM: function (input) { + return input.charAt(1).toLowerCase() === 'u'; + }, + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower === true ? 'de' : 'DE'; + } else { + return isLower === true ? 'du' : 'DU'; + } + }, + calendar: { + sameDay: '[ma] LT[-kor]', + nextDay: '[holnap] LT[-kor]', + nextWeek: function () { + return week.call(this, true); + }, + lastDay: '[tegnap] LT[-kor]', + lastWeek: function () { + return week.call(this, false); + }, + sameElse: 'L', + }, + relativeTime: { + future: '%s múlva', + past: '%s', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/* Built-in method references that are verified to be native. */ -var Set = getNative(root, 'Set'); + return hu; -module.exports = Set; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"), - setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js"), - setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js"); - -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } -} - -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; - -module.exports = SetCache; - +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Armenian [hy-am] +//! author : Armendarabyan : https://github.com/armendarabyan -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js"), - stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js"), - stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js"), - stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js"), - stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js"); + //! moment.js locale configuration -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; -} + var hyAm = moment.defineLocale('hy-am', { + months: { + format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( + '_' + ), + standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( + '_' + ), + }, + monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( + '_' + ), + weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY թ.', + LLL: 'D MMMM YYYY թ., HH:mm', + LLLL: 'dddd, D MMMM YYYY թ., HH:mm', + }, + calendar: { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L', + }, + relativeTime: { + future: '%s հետո', + past: '%s առաջ', + s: 'մի քանի վայրկյան', + ss: '%d վայրկյան', + m: 'րոպե', + mm: '%d րոպե', + h: 'ժամ', + hh: '%d ժամ', + d: 'օր', + dd: '%d օր', + M: 'ամիս', + MM: '%d ամիս', + y: 'տարի', + yy: '%d տարի', + }, + meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, + meridiem: function (hour) { + if (hour < 4) { + return 'գիշերվա'; + } else if (hour < 12) { + return 'առավոտվա'; + } else if (hour < 17) { + return 'ցերեկվա'; + } else { + return 'երեկոյան'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -// Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; + return hyAm; -module.exports = Stack; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); - -/** Built-in value references. */ -var Symbol = root.Symbol; - -module.exports = Symbol; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Indonesian [id] +//! author : Mohammad Satrio Utomo : https://github.com/tyok +//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); + var id = moment.defineLocale('id', { + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', + }, + meridiemParse: /pagi|siang|sore|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem: function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Besok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kemarin pukul] LT', + lastWeek: 'dddd [lalu pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lalu', + s: 'beberapa detik', + ss: '%d detik', + m: 'semenit', + mm: '%d menit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); -/** Built-in value references. */ -var Uint8Array = root.Uint8Array; + return id; -module.exports = Uint8Array; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); - -/* Built-in method references that are verified to be native. */ -var WeakMap = getNative(root, 'WeakMap'); - -module.exports = WeakMap; - +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Icelandic [is] +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js ***! - \*************************************************************************************************/ -/***/ ((module) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; + //! moment.js locale configuration - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; + function plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture + ? 'nokkrar sekúndur' + : 'nokkrum sekúndum'; + case 'ss': + if (plural(number)) { + return ( + result + + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') + ); + } + return result + 'sekúnda'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural(number)) { + return ( + result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') + ); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural(number)) { + return ( + result + + (withoutSuffix || isFuture + ? 'klukkustundir' + : 'klukkustundum') + ); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } } - } - return result; -} - -module.exports = arrayFilter; + var is = moment.defineLocale('is', { + months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', + }, + calendar: { + sameDay: '[í dag kl.] LT', + nextDay: '[á morgun kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[í gær kl.] LT', + lastWeek: '[síðasta] dddd [kl.] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'eftir %s', + past: 'fyrir %s síðan', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: 'klukkustund', + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/***/ }), + return is; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js ***! - \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js"); -/** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; -} +/***/ }), -module.exports = arrayIncludes; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Italian (Switzerland) [it-ch] +//! author : xfh : https://github.com/xfh -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js ***! - \*******************************************************************************************************/ -/***/ ((module) => { + //! moment.js locale configuration -/** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; + var itCh = moment.defineLocale('it-ch', { + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[la scorsa] dddd [alle] LT'; + default: + return '[lo scorso] dddd [alle] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; + }, + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; -} + return itCh; -module.exports = arrayIncludesWith; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js ***! \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; -} - -module.exports = arrayLikeKeys; +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Italian [it] +//! author : Lorenzo : https://github.com/aliem +//! author: Mattia Larentis: https://github.com/nostalgiaz +//! author: Marco : https://github.com/Manfre98 -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js ***! - \**********************************************************************************************/ -/***/ ((module) => { + //! moment.js locale configuration -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); + var it = moment.defineLocale('it', { + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: function () { + return ( + '[Oggi a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextDay: function () { + return ( + '[Domani a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextWeek: function () { + return ( + 'dddd [a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + lastDay: function () { + return ( + '[Ieri a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + lastWeek: function () { + switch (this.day()) { + case 0: + return ( + '[La scorsa] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); + default: + return ( + '[Lo scorso] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); + } + }, + sameElse: 'L', + }, + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; + }, + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} + return it; -module.exports = arrayMap; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js ***! - \***********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ -function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; +//! moment.js locale configuration +//! locale : Japanese [ja] +//! author : LI Long : https://github.com/baryon - while (++index < length) { - array[offset + index] = values[index]; - } - return array; -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = arrayPush; + //! moment.js locale configuration + var ja = moment.defineLocale('ja', { + eras: [ + { + since: '2019-05-01', + offset: 1, + name: '令和', + narrow: '㋿', + abbr: 'R', + }, + { + since: '1989-01-08', + until: '2019-04-30', + offset: 1, + name: '平成', + narrow: '㍻', + abbr: 'H', + }, + { + since: '1926-12-25', + until: '1989-01-07', + offset: 1, + name: '昭和', + narrow: '㍼', + abbr: 'S', + }, + { + since: '1912-07-30', + until: '1926-12-24', + offset: 1, + name: '大正', + narrow: '㍽', + abbr: 'T', + }, + { + since: '1873-01-01', + until: '1912-07-29', + offset: 6, + name: '明治', + narrow: '㍾', + abbr: 'M', + }, + { + since: '0001-01-01', + until: '1873-12-31', + offset: 1, + name: '西暦', + narrow: 'AD', + abbr: 'AD', + }, + { + since: '0000-12-31', + until: -Infinity, + offset: 1, + name: '紀元前', + narrow: 'BC', + abbr: 'BC', + }, + ], + eraYearOrdinalRegex: /(元|\d+)年/, + eraYearOrdinalParse: function (input, match) { + return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); + }, + months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort: '日_月_火_水_木_金_土'.split('_'), + weekdaysMin: '日_月_火_水_木_金_土'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日 dddd HH:mm', + l: 'YYYY/MM/DD', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日(ddd) HH:mm', + }, + meridiemParse: /午前|午後/i, + isPM: function (input) { + return input === '午後'; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return '午前'; + } else { + return '午後'; + } + }, + calendar: { + sameDay: '[今日] LT', + nextDay: '[明日] LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { + return '[来週]dddd LT'; + } else { + return 'dddd LT'; + } + }, + lastDay: '[昨日] LT', + lastWeek: function (now) { + if (this.week() !== now.week()) { + return '[先週]dddd LT'; + } else { + return 'dddd LT'; + } + }, + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}日/, + ordinal: function (number, period) { + switch (period) { + case 'y': + return number === 1 ? '元年' : number + '年'; + case 'd': + case 'D': + case 'DDD': + return number + '日'; + default: + return number; + } + }, + relativeTime: { + future: '%s後', + past: '%s前', + s: '数秒', + ss: '%d秒', + m: '1分', + mm: '%d分', + h: '1時間', + hh: '%d時間', + d: '1日', + dd: '%d日', + M: '1ヶ月', + MM: '%dヶ月', + y: '1年', + yy: '%d年', + }, + }); -/***/ }), + return ja; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js ***! - \***********************************************************************************************/ -/***/ ((module) => { +}))); -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; -} +/***/ }), -module.exports = arraySome; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Javanese [jv] +//! author : Rony Lantip : https://github.com/lantip +//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js"); + var jv = moment.defineLocale('jv', { + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', + }, + meridiemParse: /enjing|siyang|sonten|ndalu/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem: function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar: { + sameDay: '[Dinten puniko pukul] LT', + nextDay: '[Mbenjang pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kala wingi pukul] LT', + lastWeek: 'dddd [kepengker pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'wonten ing %s', + past: '%s ingkang kepengker', + s: 'sawetawis detik', + ss: '%d detik', + m: 'setunggal menit', + mm: '%d menit', + h: 'setunggal jam', + hh: '%d jam', + d: 'sedinten', + dd: '%d dinten', + M: 'sewulan', + MM: '%d wulan', + y: 'setaun', + yy: '%d taun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} + return jv; -module.exports = assocIndexOf; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js ***! \***************************************************************************************************/ -/***/ ((module) => { - -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} +//! moment.js locale configuration +//! locale : Georgian [ka] +//! author : Irakli Janiashvili : https://github.com/IrakliJani -module.exports = baseFindIndex; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration -/***/ }), + var ka = moment.defineLocale('ka', { + months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( + '_' + ), + monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays: { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( + '_' + ), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( + '_' + ), + isFormat: /(წინა|შემდეგ)/, + }, + weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[დღეს] LT[-ზე]', + nextDay: '[ხვალ] LT[-ზე]', + lastDay: '[გუშინ] LT[-ზე]', + nextWeek: '[შემდეგ] dddd LT[-ზე]', + lastWeek: '[წინა] dddd LT-ზე', + sameElse: 'L', + }, + relativeTime: { + future: function (s) { + return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ( + $0, + $1, + $2 + ) { + return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; + }); + }, + past: function (s) { + if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { + return s.replace(/(ი|ე)$/, 'ის წინ'); + } + if (/წელი/.test(s)) { + return s.replace(/წელი$/, 'წლის წინ'); + } + return s; + }, + s: 'რამდენიმე წამი', + ss: '%d წამი', + m: 'წუთი', + mm: '%d წუთი', + h: 'საათი', + hh: '%d საათი', + d: 'დღე', + dd: '%d დღე', + M: 'თვე', + MM: '%d თვე', + y: 'წელი', + yy: '%d წელი', + }, + dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, + ordinal: function (number) { + if (number === 0) { + return number; + } + if (number === 1) { + return number + '-ლი'; + } + if ( + number < 20 || + (number <= 100 && number % 20 === 0) || + number % 100 === 0 + ) { + return 'მე-' + number; + } + return number + '-ე'; + }, + week: { + dow: 1, + doy: 7, + }, + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return ka; -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +}))); -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = castPath(path, object); - var index = 0, - length = path.length; +/***/ }), - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = baseGet; +//! moment.js locale configuration +//! locale : Kazakh [kk] +//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var suffixes = { + 0: '-ші', + 1: '-ші', + 2: '-ші', + 3: '-ші', + 4: '-ші', + 5: '-ші', + 6: '-шы', + 7: '-ші', + 8: '-ші', + 9: '-шы', + 10: '-шы', + 20: '-шы', + 30: '-шы', + 40: '-шы', + 50: '-ші', + 60: '-шы', + 70: '-ші', + 80: '-ші', + 90: '-шы', + 100: '-ші', + }; -var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"); + var kk = moment.defineLocale('kk', { + months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( + '_' + ), + monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( + '_' + ), + weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Бүгін сағат] LT', + nextDay: '[Ертең сағат] LT', + nextWeek: 'dddd [сағат] LT', + lastDay: '[Кеше сағат] LT', + lastWeek: '[Өткен аптаның] dddd [сағат] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s ішінде', + past: '%s бұрын', + s: 'бірнеше секунд', + ss: '%d секунд', + m: 'бір минут', + mm: '%d минут', + h: 'бір сағат', + hh: '%d сағат', + d: 'бір күн', + dd: '%d күн', + M: 'бір ай', + MM: '%d ай', + y: 'бір жыл', + yy: '%d жыл', + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, + ordinal: function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes[number] || suffixes[a] || suffixes[b]); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ -function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); -} + return kk; -module.exports = baseGetAllKeys; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js"), - objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js"); - -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} +//! moment.js locale configuration +//! locale : Cambodian [km] +//! author : Kruy Vanna : https://github.com/kruyvanna -module.exports = baseGetTag; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration -/***/ }), + var symbolMap = { + '1': '១', + '2': '២', + '3': '៣', + '4': '៤', + '5': '៥', + '6': '៦', + '7': '៧', + '8': '៨', + '9': '៩', + '0': '០', + }, + numberMap = { + '១': '1', + '២': '2', + '៣': '3', + '៤': '4', + '៥': '5', + '៦': '6', + '៧': '7', + '៨': '8', + '៩': '9', + '០': '0', + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js ***! - \***********************************************************************************************/ -/***/ ((module) => { + var km = moment.defineLocale('km', { + months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( + '_' + ), + monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( + '_' + ), + weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), + weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + meridiemParse: /ព្រឹក|ល្ងាច/, + isPM: function (input) { + return input === 'ល្ងាច'; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ព្រឹក'; + } else { + return 'ល្ងាច'; + } + }, + calendar: { + sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', + nextDay: '[ស្អែក ម៉ោង] LT', + nextWeek: 'dddd [ម៉ោង] LT', + lastDay: '[ម្សិលមិញ ម៉ោង] LT', + lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%sទៀត', + past: '%sមុន', + s: 'ប៉ុន្មានវិនាទី', + ss: '%d វិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ', + }, + dayOfMonthOrdinalParse: /ទី\d{1,2}/, + ordinal: 'ទី%d', + preparse: function (string) { + return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); -} + return km; -module.exports = baseHasIn; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js"), - baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js"), - strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js"); - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); -} - -module.exports = baseIndexOf; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Kannada [kn] +//! author : Rajeev Naik : https://github.com/rajeevnaikte -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); + var symbolMap = { + '1': '೧', + '2': '೨', + '3': '೩', + '4': '೪', + '5': '೫', + '6': '೬', + '7': '೭', + '8': '೮', + '9': '೯', + '0': '೦', + }, + numberMap = { + '೧': '1', + '೨': '2', + '೩': '3', + '೪': '4', + '೫': '5', + '೬': '6', + '೭': '7', + '೮': '8', + '೯': '9', + '೦': '0', + }; -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; + var kn = moment.defineLocale('kn', { + months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( + '_' + ), + monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( + '_' + ), + weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), + weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), + longDateFormat: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm', + LLLL: 'dddd, D MMMM YYYY, A h:mm', + }, + calendar: { + sameDay: '[ಇಂದು] LT', + nextDay: '[ನಾಳೆ] LT', + nextWeek: 'dddd, LT', + lastDay: '[ನಿನ್ನೆ] LT', + lastWeek: '[ಕೊನೆಯ] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s ನಂತರ', + past: '%s ಹಿಂದೆ', + s: 'ಕೆಲವು ಕ್ಷಣಗಳು', + ss: '%d ಸೆಕೆಂಡುಗಳು', + m: 'ಒಂದು ನಿಮಿಷ', + mm: '%d ನಿಮಿಷ', + h: 'ಒಂದು ಗಂಟೆ', + hh: '%d ಗಂಟೆ', + d: 'ಒಂದು ದಿನ', + dd: '%d ದಿನ', + M: 'ಒಂದು ತಿಂಗಳು', + MM: '%d ತಿಂಗಳು', + y: 'ಒಂದು ವರ್ಷ', + yy: '%d ವರ್ಷ', + }, + preparse: function (string) { + return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ರಾತ್ರಿ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { + return hour; + } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ಸಂಜೆ') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'ರಾತ್ರಿ'; + } else if (hour < 10) { + return 'ಬೆಳಿಗ್ಗೆ'; + } else if (hour < 17) { + return 'ಮಧ್ಯಾಹ್ನ'; + } else if (hour < 20) { + return 'ಸಂಜೆ'; + } else { + return 'ರಾತ್ರಿ'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, + ordinal: function (number) { + return number + 'ನೇ'; + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; -} + return kn; -module.exports = baseIsArguments; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +//! moment.js locale configuration +//! locale : Korean [ko] +//! author : Kyungwook, Park : https://github.com/kyungw00k +//! author : Jeeeyul Lee -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = baseIsEqual; + //! moment.js locale configuration + + var ko = moment.defineLocale('ko', { + months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( + '_' + ), + weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort: '일_월_화_수_목_금_토'.split('_'), + weekdaysMin: '일_월_화_수_목_금_토'.split('_'), + longDateFormat: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY년 MMMM D일', + LLL: 'YYYY년 MMMM D일 A h:mm', + LLLL: 'YYYY년 MMMM D일 dddd A h:mm', + l: 'YYYY.MM.DD.', + ll: 'YYYY년 MMMM D일', + lll: 'YYYY년 MMMM D일 A h:mm', + llll: 'YYYY년 MMMM D일 dddd A h:mm', + }, + calendar: { + sameDay: '오늘 LT', + nextDay: '내일 LT', + nextWeek: 'dddd LT', + lastDay: '어제 LT', + lastWeek: '지난주 dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s 후', + past: '%s 전', + s: '몇 초', + ss: '%d초', + m: '1분', + mm: '%d분', + h: '한 시간', + hh: '%d시간', + d: '하루', + dd: '%d일', + M: '한 달', + MM: '%d달', + y: '일 년', + yy: '%d년', + }, + dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '일'; + case 'M': + return number + '월'; + case 'w': + case 'W': + return number + '주'; + default: + return number; + } + }, + meridiemParse: /오전|오후/, + isPM: function (token) { + return token === '오후'; + }, + meridiem: function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + }, + }); + return ko; -/***/ }), +}))); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), - equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js"), - equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js"), - getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); +/***/ }), -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - objectTag = '[object Object]'; +//! moment.js locale configuration +//! locale : Kurdish [ku] +//! author : Shahram Mebashar : https://github.com/ShahramMebashar -/** Used for built-in method references. */ -var objectProto = Object.prototype; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + //! moment.js locale configuration -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); + var symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + months = [ + 'کانونی دووەم', + 'شوبات', + 'ئازار', + 'نیسان', + 'ئایار', + 'حوزەیران', + 'تەمموز', + 'ئاب', + 'ئەیلوول', + 'تشرینی یەكەم', + 'تشرینی دووەم', + 'كانونی یەکەم', + ]; - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; + var ku = moment.defineLocale('ku', { + months: months, + monthsShort: months, + weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split( + '_' + ), + weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split( + '_' + ), + weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + meridiemParse: /ئێواره‌|به‌یانی/, + isPM: function (input) { + return /ئێواره‌/.test(input); + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'به‌یانی'; + } else { + return 'ئێواره‌'; + } + }, + calendar: { + sameDay: '[ئه‌مرۆ كاتژمێر] LT', + nextDay: '[به‌یانی كاتژمێر] LT', + nextWeek: 'dddd [كاتژمێر] LT', + lastDay: '[دوێنێ كاتژمێر] LT', + lastWeek: 'dddd [كاتژمێر] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'له‌ %s', + past: '%s', + s: 'چه‌ند چركه‌یه‌ك', + ss: 'چركه‌ %d', + m: 'یه‌ك خوله‌ك', + mm: '%d خوله‌ك', + h: 'یه‌ك كاتژمێر', + hh: '%d كاتژمێر', + d: 'یه‌ك ڕۆژ', + dd: '%d ڕۆژ', + M: 'یه‌ك مانگ', + MM: '%d مانگ', + y: 'یه‌ك ساڵ', + yy: '%d ساڵ', + }, + preparse: function (string) { + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; + return ku; - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); +}))); - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); -} +/***/ }), -module.exports = baseIsEqualDeep; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Kyrgyz [ky] +//! author : Chyngyz Arystan uulu : https://github.com/chyngyz -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), - baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"); + var suffixes = { + 0: '-чү', + 1: '-чи', + 2: '-чи', + 3: '-чү', + 4: '-чү', + 5: '-чи', + 6: '-чы', + 7: '-чи', + 8: '-чи', + 9: '-чу', + 10: '-чу', + 20: '-чы', + 30: '-чу', + 40: '-чы', + 50: '-чү', + 60: '-чы', + 70: '-чи', + 80: '-чи', + 90: '-чу', + 100: '-чү', + }; -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; + var ky = moment.defineLocale('ky', { + months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), + monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( + '_' + ), + weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( + '_' + ), + weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Бүгүн саат] LT', + nextDay: '[Эртең саат] LT', + nextWeek: 'dddd [саат] LT', + lastDay: '[Кечээ саат] LT', + lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s ичинде', + past: '%s мурун', + s: 'бирнече секунд', + ss: '%d секунд', + m: 'бир мүнөт', + mm: '%d мүнөт', + h: 'бир саат', + hh: '%d саат', + d: 'бир күн', + dd: '%d күн', + M: 'бир ай', + MM: '%d ай', + y: 'бир жыл', + yy: '%d жыл', + }, + dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, + ordinal: function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes[number] || suffixes[a] || suffixes[b]); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; + return ky; - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; +}))); - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; -} -module.exports = baseIsMatch; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Luxembourgish [lb] +//! author : mweimerskirch : https://github.com/mweimerskirch +//! author : David Raison : https://github.com/kwisatz -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js ***! - \***********************************************************************************************/ -/***/ ((module) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} + //! moment.js locale configuration -module.exports = baseIsNaN; + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + m: ['eng Minutt', 'enger Minutt'], + h: ['eng Stonn', 'enger Stonn'], + d: ['een Dag', 'engem Dag'], + M: ['ee Mount', 'engem Mount'], + y: ['ee Joer', 'engem Joer'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'a ' + string; + } + return 'an ' + string; + } + function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'viru ' + string; + } + return 'virun ' + string; + } + /** + * Returns true if the word before the given number loses the '-n' ending. + * e.g. 'an 10 Deeg' but 'a 5 Deeg' + * + * @param number {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, + firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } + } + var lb = moment.defineLocale('lb', { + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( + '_' + ), + weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm [Auer]', + LTS: 'H:mm:ss [Auer]', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', + }, + calendar: { + sameDay: '[Haut um] LT', + sameElse: 'L', + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: function () { + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule + switch (this.day()) { + case 2: + case 4: + return '[Leschten] dddd [um] LT'; + default: + return '[Leschte] dddd [um] LT'; + } + }, + }, + relativeTime: { + future: processFutureTime, + past: processPastTime, + s: 'e puer Sekonnen', + ss: '%d Sekonnen', + m: processRelativeTime, + mm: '%d Minutten', + h: processRelativeTime, + hh: '%d Stonnen', + d: processRelativeTime, + dd: '%d Deeg', + M: processRelativeTime, + MM: '%d Méint', + y: processRelativeTime, + yy: '%d Joer', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/***/ }), + return lb; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), - isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +/***/ }), -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; +//! moment.js locale configuration +//! locale : Lao [lo] +//! author : Ryan Hart : https://github.com/ryanhart2 -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + //! moment.js locale configuration -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); + var lo = moment.defineLocale('lo', { + months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( + '_' + ), + monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( + '_' + ), + weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'ວັນdddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, + isPM: function (input) { + return input === 'ຕອນແລງ'; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ຕອນເຊົ້າ'; + } else { + return 'ຕອນແລງ'; + } + }, + calendar: { + sameDay: '[ມື້ນີ້ເວລາ] LT', + nextDay: '[ມື້ອື່ນເວລາ] LT', + nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay: '[ມື້ວານນີ້ເວລາ] LT', + lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ອີກ %s', + past: '%sຜ່ານມາ', + s: 'ບໍ່ເທົ່າໃດວິນາທີ', + ss: '%d ວິນາທີ', + m: '1 ນາທີ', + mm: '%d ນາທີ', + h: '1 ຊົ່ວໂມງ', + hh: '%d ຊົ່ວໂມງ', + d: '1 ມື້', + dd: '%d ມື້', + M: '1 ເດືອນ', + MM: '%d ເດືອນ', + y: '1 ປີ', + yy: '%d ປີ', + }, + dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, + ordinal: function (number) { + return 'ທີ່' + number; + }, + }); -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} + return lo; -module.exports = baseIsNative; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +//! moment.js locale configuration +//! locale : Lithuanian [lt] +//! author : Mindaugas Mozūras : https://github.com/mmozuras -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; + //! moment.js locale configuration -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; + var units = { + ss: 'sekundė_sekundžių_sekundes', + m: 'minutė_minutės_minutę', + mm: 'minutės_minučių_minutes', + h: 'valanda_valandos_valandą', + hh: 'valandos_valandų_valandas', + d: 'diena_dienos_dieną', + dd: 'dienos_dienų_dienas', + M: 'mėnuo_mėnesio_mėnesį', + MM: 'mėnesiai_mėnesių_mėnesius', + y: 'metai_metų_metus', + yy: 'metai_metų_metus', + }; + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } + } + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix + ? forms(key)[0] + : isFuture + ? forms(key)[1] + : forms(key)[2]; + } + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + function forms(key) { + return units[key].split('_'); + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return ( + result + translateSingular(number, withoutSuffix, key[0], isFuture) + ); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + var lt = moment.defineLocale('lt', { + months: { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( + '_' + ), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( + '_' + ), + isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, + }, + monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays: { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( + '_' + ), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( + '_' + ), + isFormat: /dddd HH:mm/, + }, + weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY [m.] MMMM D [d.]', + LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l: 'YYYY-MM-DD', + ll: 'YYYY [m.] MMMM D [d.]', + lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', + }, + calendar: { + sameDay: '[Šiandien] LT', + nextDay: '[Rytoj] LT', + nextWeek: 'dddd LT', + lastDay: '[Vakar] LT', + lastWeek: '[Praėjusį] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: 'po %s', + past: 'prieš %s', + s: translateSeconds, + ss: translate, + m: translateSingular, + mm: translate, + h: translateSingular, + hh: translate, + d: translateSingular, + dd: translate, + M: translateSingular, + MM: translate, + y: translateSingular, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}-oji/, + ordinal: function (number) { + return number + '-oji'; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; -} + return lt; -module.exports = baseIsTypedArray; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js"), - baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - property = __webpack_require__(/*! ./property */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js"); +//! moment.js locale configuration +//! locale : Latvian [lv] +//! author : Kristaps Karlsons : https://github.com/skakri +//! author : Jānis Elmeris : https://github.com/JanisE -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = baseIteratee; + //! moment.js locale configuration + var units = { + ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), + m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + h: 'stundas_stundām_stunda_stundas'.split('_'), + hh: 'stundas_stundām_stunda_stundas'.split('_'), + d: 'dienas_dienām_diena_dienas'.split('_'), + dd: 'dienas_dienām_diena_dienas'.split('_'), + M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + y: 'gada_gadiem_gads_gadi'.split('_'), + yy: 'gada_gadiem_gads_gadi'.split('_'), + }; + /** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ + function format(forms, number, withoutSuffix) { + if (withoutSuffix) { + // E.g. "21 minūte", "3 minūtes". + return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; + } else { + // E.g. "21 minūtes" as in "pēc 21 minūtes". + // E.g. "3 minūtēm" as in "pēc 3 minūtēm". + return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; + } + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + format(units[key], number, withoutSuffix); + } + function relativeTimeWithSingular(number, withoutSuffix, key) { + return format(units[key], number, withoutSuffix); + } + function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; + } -/***/ }), + var lv = moment.defineLocale('lv', { + months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( + '_' + ), + weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY.', + LL: 'YYYY. [gada] D. MMMM', + LLL: 'YYYY. [gada] D. MMMM, HH:mm', + LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', + }, + calendar: { + sameDay: '[Šodien pulksten] LT', + nextDay: '[Rīt pulksten] LT', + nextWeek: 'dddd [pulksten] LT', + lastDay: '[Vakar pulksten] LT', + lastWeek: '[Pagājušā] dddd [pulksten] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'pēc %s', + past: 'pirms %s', + s: relativeSeconds, + ss: relativeTimeWithPlural, + m: relativeTimeWithSingular, + mm: relativeTimeWithPlural, + h: relativeTimeWithSingular, + hh: relativeTimeWithPlural, + d: relativeTimeWithSingular, + dd: relativeTimeWithPlural, + M: relativeTimeWithSingular, + MM: relativeTimeWithPlural, + y: relativeTimeWithSingular, + yy: relativeTimeWithPlural, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return lv; -var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js"), - nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js"); +}))); -/** Used for built-in method references. */ -var objectProto = Object.prototype; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +/***/ }), -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = baseKeys; +//! moment.js locale configuration +//! locale : Montenegrin [me] +//! author : Miodrag Nikač : https://github.com/miodragnikac +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var translator = { + words: { + //Different grammatical cases + ss: ['sekund', 'sekunda', 'sekundi'], + m: ['jedan minut', 'jednog minuta'], + mm: ['minut', 'minuta', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mjesec', 'mjeseca', 'mjeseci'], + yy: ['godina', 'godine', 'godina'], + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); + } + }, + }; -var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js"), - getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"); + var me = moment.defineLocale('me', { + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sjutra u] LT', -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; -} + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay: '[juče u] LT', + lastWeek: function () { + var lastWeekDays = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT', + ]; + return lastWeekDays[this.day()]; + }, + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'nekoliko sekundi', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'dan', + dd: translator.translate, + M: 'mjesec', + MM: translator.translate, + y: 'godinu', + yy: translator.translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -module.exports = baseMatches; + return me; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"), - get = __webpack_require__(/*! ./get */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js"), - hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +//! moment.js locale configuration +//! locale : Maori [mi] +//! author : John Corrigan : https://github.com/johnideal -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; -} + //! moment.js locale configuration -module.exports = baseMatchesProperty; + var mi = moment.defineLocale('mi', { + months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split( + '_' + ), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( + '_' + ), + monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, + weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), + weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [i] HH:mm', + LLLL: 'dddd, D MMMM YYYY [i] HH:mm', + }, + calendar: { + sameDay: '[i teie mahana, i] LT', + nextDay: '[apopo i] LT', + nextWeek: 'dddd [i] LT', + lastDay: '[inanahi i] LT', + lastWeek: 'dddd [whakamutunga i] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'i roto i %s', + past: '%s i mua', + s: 'te hēkona ruarua', + ss: '%d hēkona', + m: 'he meneti', + mm: '%d meneti', + h: 'te haora', + hh: '%d haora', + d: 'he ra', + dd: '%d ra', + M: 'he marama', + MM: '%d marama', + y: 'he tau', + yy: '%d tau', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + return mi; -/***/ }), +}))); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js ***! - \**************************************************************************************************/ -/***/ ((module) => { -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} +/***/ }), -module.exports = baseProperty; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Macedonian [mk] +//! author : Borislav Mickov : https://github.com/B0k0 +//! author : Sashko Todorov : https://github.com/bkyceh -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); + var mk = moment.defineLocale('mk', { + months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'D.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[Денес во] LT', + nextDay: '[Утре во] LT', + nextWeek: '[Во] dddd [во] LT', + lastDay: '[Вчера во] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Изминатиот] dddd [во] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'за %s', + past: 'пред %s', + s: 'неколку секунди', + ss: '%d секунди', + m: 'една минута', + mm: '%d минути', + h: 'еден час', + hh: '%d часа', + d: 'еден ден', + dd: '%d дена', + M: 'еден месец', + MM: '%d месеци', + y: 'една година', + yy: '%d години', + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal: function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; -} + return mk; -module.exports = basePropertyDeep; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js ***! - \***********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); +//! moment.js locale configuration +//! locale : Malayalam [ml] +//! author : Floyd Pink : https://github.com/floydpink - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = baseTimes; + //! moment.js locale configuration + var ml = moment.defineLocale('ml', { + months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( + '_' + ), + monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( + '_' + ), + weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), + longDateFormat: { + LT: 'A h:mm -നു', + LTS: 'A h:mm:ss -നു', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm -നു', + LLLL: 'dddd, D MMMM YYYY, A h:mm -നു', + }, + calendar: { + sameDay: '[ഇന്ന്] LT', + nextDay: '[നാളെ] LT', + nextWeek: 'dddd, LT', + lastDay: '[ഇന്നലെ] LT', + lastWeek: '[കഴിഞ്ഞ] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s കഴിഞ്ഞ്', + past: '%s മുൻപ്', + s: 'അൽപ നിമിഷങ്ങൾ', + ss: '%d സെക്കൻഡ്', + m: 'ഒരു മിനിറ്റ്', + mm: '%d മിനിറ്റ്', + h: 'ഒരു മണിക്കൂർ', + hh: '%d മണിക്കൂർ', + d: 'ഒരു ദിവസം', + dd: '%d ദിവസം', + M: 'ഒരു മാസം', + MM: '%d മാസം', + y: 'ഒരു വർഷം', + yy: '%d വർഷം', + }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ( + (meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം' + ) { + return hour + 12; + } else { + return hour; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'രാത്രി'; + } else if (hour < 12) { + return 'രാവിലെ'; + } else if (hour < 17) { + return 'ഉച്ച കഴിഞ്ഞ്'; + } else if (hour < 20) { + return 'വൈകുന്നേരം'; + } else { + return 'രാത്രി'; + } + }, + }); -/***/ }), + return ml; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; +/***/ }), -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} +//! moment.js locale configuration +//! locale : Mongolian [mn] +//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7 -module.exports = baseToString; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration -/***/ }), + function translate(number, withoutSuffix, key, isFuture) { + switch (key) { + case 's': + return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын'; + case 'ss': + return number + (withoutSuffix ? ' секунд' : ' секундын'); + case 'm': + case 'mm': + return number + (withoutSuffix ? ' минут' : ' минутын'); + case 'h': + case 'hh': + return number + (withoutSuffix ? ' цаг' : ' цагийн'); + case 'd': + case 'dd': + return number + (withoutSuffix ? ' өдөр' : ' өдрийн'); + case 'M': + case 'MM': + return number + (withoutSuffix ? ' сар' : ' сарын'); + case 'y': + case 'yy': + return number + (withoutSuffix ? ' жил' : ' жилийн'); + default: + return number; + } + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js ***! - \***********************************************************************************************/ -/***/ ((module) => { + var mn = moment.defineLocale('mn', { + months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( + '_' + ), + monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), + weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), + weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY оны MMMMын D', + LLL: 'YYYY оны MMMMын D HH:mm', + LLLL: 'dddd, YYYY оны MMMMын D HH:mm', + }, + meridiemParse: /ҮӨ|ҮХ/i, + isPM: function (input) { + return input === 'ҮХ'; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ҮӨ'; + } else { + return 'ҮХ'; + } + }, + calendar: { + sameDay: '[Өнөөдөр] LT', + nextDay: '[Маргааш] LT', + nextWeek: '[Ирэх] dddd LT', + lastDay: '[Өчигдөр] LT', + lastWeek: '[Өнгөрсөн] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s дараа', + past: '%s өмнө', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2} өдөр/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + ' өдөр'; + default: + return number; + } + }, + }); -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} + return mn; -module.exports = baseUnary; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), - arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js"), - arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"), - createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +//! moment.js locale configuration +//! locale : Marathi [mr] +//! author : Harshad Kale : https://github.com/kalehv +//! author : Vivek Athalye : https://github.com/vnathalye -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; + //! moment.js locale configuration - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; + function relativeTimeMr(number, withoutSuffix, string, isFuture) { + var output = ''; + if (withoutSuffix) { + switch (string) { + case 's': + output = 'काही सेकंद'; + break; + case 'ss': + output = '%d सेकंद'; + break; + case 'm': + output = 'एक मिनिट'; + break; + case 'mm': + output = '%d मिनिटे'; + break; + case 'h': + output = 'एक तास'; + break; + case 'hh': + output = '%d तास'; + break; + case 'd': + output = 'एक दिवस'; + break; + case 'dd': + output = '%d दिवस'; + break; + case 'M': + output = 'एक महिना'; + break; + case 'MM': + output = '%d महिने'; + break; + case 'y': + output = 'एक वर्ष'; + break; + case 'yy': + output = '%d वर्षे'; + break; + } + } else { + switch (string) { + case 's': + output = 'काही सेकंदां'; + break; + case 'ss': + output = '%d सेकंदां'; + break; + case 'm': + output = 'एका मिनिटा'; + break; + case 'mm': + output = '%d मिनिटां'; + break; + case 'h': + output = 'एका तासा'; + break; + case 'hh': + output = '%d तासां'; + break; + case 'd': + output = 'एका दिवसा'; + break; + case 'dd': + output = '%d दिवसां'; + break; + case 'M': + output = 'एका महिन्या'; + break; + case 'MM': + output = '%d महिन्यां'; + break; + case 'y': + output = 'एका वर्षा'; + break; + case 'yy': + output = '%d वर्षां'; + break; + } } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); + return output.replace(/%d/i, number); } - } - return result; -} -module.exports = baseUniq; + var mr = moment.defineLocale('mr', { + months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat: { + LT: 'A h:mm वाजता', + LTS: 'A h:mm:ss वाजता', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm वाजता', + LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता', + }, + calendar: { + sameDay: '[आज] LT', + nextDay: '[उद्या] LT', + nextWeek: 'dddd, LT', + lastDay: '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%sमध्ये', + past: '%sपूर्वी', + s: relativeTimeMr, + ss: relativeTimeMr, + m: relativeTimeMr, + mm: relativeTimeMr, + h: relativeTimeMr, + hh: relativeTimeMr, + d: relativeTimeMr, + dd: relativeTimeMr, + M: relativeTimeMr, + MM: relativeTimeMr, + y: relativeTimeMr, + yy: relativeTimeMr, + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { + return hour; + } else if ( + meridiem === 'दुपारी' || + meridiem === 'सायंकाळी' || + meridiem === 'रात्री' + ) { + return hour >= 12 ? hour : hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour >= 0 && hour < 6) { + return 'पहाटे'; + } else if (hour < 12) { + return 'सकाळी'; + } else if (hour < 17) { + return 'दुपारी'; + } else if (hour < 20) { + return 'सायंकाळी'; + } else { + return 'रात्री'; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); + + return mr; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js ***! - \**********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +//! moment.js locale configuration +//! locale : Malay [ms-my] +//! note : DEPRECATED, the correct one is [ms] +//! author : Weldan Jamili : https://github.com/weldan + +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var msMy = moment.defineLocale('ms-my', { + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem: function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); -} + return msMy; -module.exports = cacheHas; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js"), - toString = __webpack_require__(/*! ./toString */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js"); +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); -} +//! moment.js locale configuration +//! locale : Malay [ms] +//! author : Weldan Jamili : https://github.com/weldan -module.exports = castPath; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration -/***/ }), + var ms = moment.defineLocale('ms', { + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem: function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return ms; -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"); +}))); -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; -module.exports = coreJsData; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Maltese (Malta) [mt] +//! author : Alessandro Maruccia : https://github.com/alesma -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js"), - noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); + //! moment.js locale configuration -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; + var mt = moment.defineLocale('mt', { + months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( + '_' + ), + monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), + weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( + '_' + ), + weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), + weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Illum fil-]LT', + nextDay: '[Għada fil-]LT', + nextWeek: 'dddd [fil-]LT', + lastDay: '[Il-bieraħ fil-]LT', + lastWeek: 'dddd [li għadda] [fil-]LT', + sameElse: 'L', + }, + relativeTime: { + future: 'f’ %s', + past: '%s ilu', + s: 'ftit sekondi', + ss: '%d sekondi', + m: 'minuta', + mm: '%d minuti', + h: 'siegħa', + hh: '%d siegħat', + d: 'ġurnata', + dd: '%d ġranet', + M: 'xahar', + MM: '%d xhur', + y: 'sena', + yy: '%d sni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ -var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); -}; + return mt; -module.exports = createSet; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), - arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"); +//! moment.js locale configuration +//! locale : Burmese [my] +//! author : Squar team, mysquar.com +//! author : David Rossellat : https://github.com/gholadr +//! author : Tin Aung Lin : https://github.com/thanyawzinmin -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; + //! moment.js locale configuration - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + var symbolMap = { + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀', + }, + numberMap = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0', + }; - stack.set(array, other); - stack.set(other, array); + var my = moment.defineLocale('my', { + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( + '_' + ), + monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( + '_' + ), + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[ယနေ.] LT [မှာ]', + nextDay: '[မနက်ဖြန်] LT [မှာ]', + nextWeek: 'dddd LT [မှာ]', + lastDay: '[မနေ.က] LT [မှာ]', + lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', + sameElse: 'L', + }, + relativeTime: { + future: 'လာမည့် %s မှာ', + past: 'လွန်ခဲ့သော %s က', + s: 'စက္ကန်.အနည်းငယ်', + ss: '%d စက္ကန့်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်', + }, + preparse: function (string) { + return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; -} + return my; -module.exports = equalArrays; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js"), - eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), - mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +//! moment.js locale configuration +//! locale : Norwegian Bokmål [nb] +//! authors : Espen Hovlandsdal : https://github.com/rexxars +//! Sigurd Gartmann : https://github.com/sigurdga +//! Stephen Ramthun : https://github.com/stephenramthun -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; + //! moment.js locale configuration -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]'; + var nb = moment.defineLocale('nb', { + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'noen sekunder', + ss: '%d sekunder', + m: 'ett minutt', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dager', + M: 'en måned', + MM: '%d måneder', + y: 'ett år', + yy: '%d år', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + return nb; -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; +}))); - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); +/***/ }), - case errorTag: - return object.name == other.name && object.message == other.message; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); +//! moment.js locale configuration +//! locale : Nepalese [ne] +//! author : suvash : https://github.com/suvash - case mapTag: - var convert = mapToArray; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); + //! moment.js locale configuration - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; + var ne = moment.defineLocale('ne', { + months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( + '_' + ), + monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( + '_' + ), + weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'Aको h:mm बजे', + LTS: 'Aको h:mm:ss बजे', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, Aको h:mm बजे', + LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे', + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /राति|बिहान|दिउँसो|साँझ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राति') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'साँझ') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 3) { + return 'राति'; + } else if (hour < 12) { + return 'बिहान'; + } else if (hour < 16) { + return 'दिउँसो'; + } else if (hour < 20) { + return 'साँझ'; + } else { + return 'राति'; + } + }, + calendar: { + sameDay: '[आज] LT', + nextDay: '[भोलि] LT', + nextWeek: '[आउँदो] dddd[,] LT', + lastDay: '[हिजो] LT', + lastWeek: '[गएको] dddd[,] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%sमा', + past: '%s अगाडि', + s: 'केही क्षण', + ss: '%d सेकेण्ड', + m: 'एक मिनेट', + mm: '%d मिनेट', + h: 'एक घण्टा', + hh: '%d घण्टा', + d: 'एक दिन', + dd: '%d दिन', + M: 'एक महिना', + MM: '%d महिना', + y: 'एक बर्ष', + yy: '%d बर्ष', + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; -} + return ne; -module.exports = equalByTag; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js"); +//! moment.js locale configuration +//! locale : Dutch (Belgium) [nl-be] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Used for built-in method references. */ -var objectProto = Object.prototype; + //! moment.js locale configuration -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; -/** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; + var nlBe = moment.defineLocale('nl-be', { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; -} + return nlBe; -module.exports = equalObjects; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js ***! - \************************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; +//! moment.js locale configuration +//! locale : Dutch [nl] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj -module.exports = freeGlobal; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + + var nl = moment.defineLocale('nl', { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/***/ }), + return nl; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js"), - getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js"); -/** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); -} +/***/ }), -module.exports = getAllKeys; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Nynorsk [nn] +//! authors : https://github.com/mechuwind +//! Stephen Ramthun : https://github.com/stephenramthun -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js"); + var nn = moment.defineLocale('nn', { + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), + weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregåande] dddd [klokka] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s sidan', + s: 'nokre sekund', + ss: '%d sekund', + m: 'eit minutt', + mm: '%d minutt', + h: 'ein time', + hh: '%d timar', + d: 'ein dag', + dd: '%d dagar', + M: 'ein månad', + MM: '%d månader', + y: 'eit år', + yy: '%d år', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} + return nn; -module.exports = getMapData; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js ***! + \*******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js"); +//! moment.js locale configuration +//! locale : Occitan, lengadocian dialecte [oc-lnc] +//! author : Quentin PAGÈS : https://github.com/Quenty31 -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys(object), - length = result.length; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - while (length--) { - var key = result[length], - value = object[key]; + //! moment.js locale configuration - result[length] = [key, value, isStrictComparable(value)]; - } - return result; -} + var ocLnc = moment.defineLocale('oc-lnc', { + months: { + standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( + '_' + ), + format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, + }, + monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', + llll: 'ddd D MMM YYYY, H:mm', + }, + calendar: { + sameDay: '[uèi a] LT', + nextDay: '[deman a] LT', + nextWeek: 'dddd [a] LT', + lastDay: '[ièr a] LT', + lastWeek: 'dddd [passat a] LT', + sameElse: 'L', + }, + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'unas segondas', + ss: '%d segondas', + m: 'una minuta', + mm: '%d minutas', + h: 'una ora', + hh: '%d oras', + d: 'un jorn', + dd: '%d jorns', + M: 'un mes', + MM: '%d meses', + y: 'un an', + yy: '%d ans', + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, + }, + }); -module.exports = getMatchData; + return ocLnc; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js"), - getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js"); +//! moment.js locale configuration +//! locale : Punjabi (India) [pa-in] +//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = getNative; + //! moment.js locale configuration + var symbolMap = { + '1': '੧', + '2': '੨', + '3': '੩', + '4': '੪', + '5': '੫', + '6': '੬', + '7': '੭', + '8': '੮', + '9': '੯', + '0': '੦', + }, + numberMap = { + '੧': '1', + '੨': '2', + '੩': '3', + '੪': '4', + '੫': '5', + '੬': '6', + '੭': '7', + '੮': '8', + '੯': '9', + '੦': '0', + }; -/***/ }), + var paIn = moment.defineLocale('pa-in', { + // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. + months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( + '_' + ), + weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + longDateFormat: { + LT: 'A h:mm ਵਜੇ', + LTS: 'A h:mm:ss ਵਜੇ', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm ਵਜੇ', + LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ', + }, + calendar: { + sameDay: '[ਅਜ] LT', + nextDay: '[ਕਲ] LT', + nextWeek: '[ਅਗਲਾ] dddd, LT', + lastDay: '[ਕਲ] LT', + lastWeek: '[ਪਿਛਲੇ] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s ਵਿੱਚ', + past: '%s ਪਿਛਲੇ', + s: 'ਕੁਝ ਸਕਿੰਟ', + ss: '%d ਸਕਿੰਟ', + m: 'ਇਕ ਮਿੰਟ', + mm: '%d ਮਿੰਟ', + h: 'ਇੱਕ ਘੰਟਾ', + hh: '%d ਘੰਟੇ', + d: 'ਇੱਕ ਦਿਨ', + dd: '%d ਦਿਨ', + M: 'ਇੱਕ ਮਹੀਨਾ', + MM: '%d ਮਹੀਨੇ', + y: 'ਇੱਕ ਸਾਲ', + yy: '%d ਸਾਲ', + }, + preparse: function (string) { + return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Punjabi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. + meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ਰਾਤ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ਸਵੇਰ') { + return hour; + } else if (meridiem === 'ਦੁਪਹਿਰ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ਸ਼ਾਮ') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'ਰਾਤ'; + } else if (hour < 10) { + return 'ਸਵੇਰ'; + } else if (hour < 17) { + return 'ਦੁਪਹਿਰ'; + } else if (hour < 20) { + return 'ਸ਼ਾਮ'; + } else { + return 'ਰਾਤ'; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return paIn; -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"); +}))); -/** Used for built-in method references. */ -var objectProto = Object.prototype; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +/***/ }), -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; +//! moment.js locale configuration +//! locale : Polish [pl] +//! author : Rafal Hirsz : https://github.com/evoL -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} + //! moment.js locale configuration - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; + var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( + '_' + ), + monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( + '_' + ); + function plural(n) { + return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; + } + function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'ss': + return result + (plural(number) ? 'sekundy' : 'sekund'); + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); + } } - } - return result; -} - -module.exports = getRawTag; + var pl = moment.defineLocale('pl', { + months: function (momentToFormat, format) { + if (!momentToFormat) { + return monthsNominative; + } else if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return ( + '(' + + monthsSubjective[momentToFormat.month()] + + '|' + + monthsNominative[momentToFormat.month()] + + ')' + ); + } else if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split( + '_' + ), + weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), + weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[W niedzielę o] LT'; -/***/ }), + case 2: + return '[We wtorek o] LT'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + case 3: + return '[W środę o] LT'; -var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js"), - stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js"); + case 6: + return '[W sobotę o] LT'; -/** Used for built-in method references. */ -var objectProto = Object.prototype; + default: + return '[W] dddd [o] LT'; + } + }, + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: '%s temu', + s: 'kilka sekund', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: '1 dzień', + dd: '%d dni', + M: 'miesiąc', + MM: translate, + y: 'rok', + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; + return pl; -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; +}))); -/** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); -}; -module.exports = getSymbols; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js"), - Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js"), - Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js"), - WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js"), - baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); + //! moment.js locale configuration -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - setTag = '[object Set]', - weakMapTag = '[object WeakMap]'; + var ptBr = moment.defineLocale('pt-br', { + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( + '_' + ), + weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), + weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', + }, + calendar: { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L', + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'poucos segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + }); -var dataViewTag = '[object DataView]'; + return ptBr; -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); +}))); -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; -// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; +/***/ }), - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = getTag; +//! moment.js locale configuration +//! locale : Portuguese [pt] +//! author : Jefferson : https://github.com/jalex79 +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js ***! - \**********************************************************************************************/ -/***/ ((module) => { + var pt = moment.defineLocale('pt', { + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( + '_' + ), + weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', + }, + calendar: { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L', + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} + return pt; -module.exports = getValue; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +//! moment.js locale configuration +//! locale : Romanian [ro] +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly +//! author : Emanuel Cepoi : https://github.com/cepem -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = castPath(path, object); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - var index = -1, - length = path.length, - result = false; + //! moment.js locale configuration - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + ss: 'secunde', + mm: 'minute', + hh: 'ore', + dd: 'zile', + MM: 'luni', + yy: 'ani', + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + return number + separator + format[key]; } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); -} -module.exports = hasPath; + var ro = moment.defineLocale('ro', { + months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( + '_' + ), + monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[azi la] LT', + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'peste %s', + past: '%s în urmă', + s: 'câteva secunde', + ss: relativeTimeWithPlural, + m: 'un minut', + mm: relativeTimeWithPlural, + h: 'o oră', + hh: relativeTimeWithPlural, + d: 'o zi', + dd: relativeTimeWithPlural, + M: 'o lună', + MM: relativeTimeWithPlural, + y: 'un an', + yy: relativeTimeWithPlural, + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); + return ro; -/***/ }), +}))); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +/***/ }), -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = hashClear; +//! moment.js locale configuration +//! locale : Russian [ru] +//! author : Viktorminator : https://github.com/Viktorminator +//! author : Menelion Elensúle : https://github.com/Oire +//! author : Коренберг Марк : https://github.com/socketpair +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js ***! - \************************************************************************************************/ -/***/ ((module) => { + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 + ? forms[0] + : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) + ? forms[1] + : forms[2]; + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + hh: 'час_часа_часов', + dd: 'день_дня_дней', + MM: 'месяц_месяца_месяцев', + yy: 'год_года_лет', + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } else { + return number + ' ' + plural(format[key], +number); + } + } + var monthsParse = [ + /^янв/i, + /^фев/i, + /^мар/i, + /^апр/i, + /^ма[йя]/i, + /^июн/i, + /^июл/i, + /^авг/i, + /^сен/i, + /^окт/i, + /^ноя/i, + /^дек/i, + ]; -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} + // http://new.gramota.ru/spravka/rules/139-prop : § 103 + // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 + // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 + var ru = moment.defineLocale('ru', { + months: { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( + '_' + ), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), + }, + monthsShort: { + // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку? + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( + '_' + ), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( + '_' + ), + }, + weekdays: { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( + '_' + ), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( + '_' + ), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/, + }, + weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, -module.exports = hashDelete; + // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки + monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + // копия предыдущего + monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, -/***/ }), + // полные названия с падежами + monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // Выражение, которое соответствует только сокращённым формам + monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., H:mm', + LLLL: 'dddd, D MMMM YYYY г., H:mm', + }, + calendar: { + sameDay: '[Сегодня, в] LT', + nextDay: '[Завтра, в] LT', + lastDay: '[Вчера, в] LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В следующее] dddd, [в] LT'; + case 1: + case 2: + case 4: + return '[В следующий] dddd, [в] LT'; + case 3: + case 5: + case 6: + return '[В следующую] dddd, [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd, [в] LT'; + } else { + return '[В] dddd, [в] LT'; + } + } + }, + lastWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В прошлое] dddd, [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd, [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd, [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd, [в] LT'; + } else { + return '[В] dddd, [в] LT'; + } + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'через %s', + past: '%s назад', + s: 'несколько секунд', + ss: relativeTimeWithPlural, + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: 'час', + hh: relativeTimeWithPlural, + d: 'день', + dd: relativeTimeWithPlural, + M: 'месяц', + MM: relativeTimeWithPlural, + y: 'год', + yy: relativeTimeWithPlural, + }, + meridiemParse: /ночи|утра|дня|вечера/i, + isPM: function (input) { + return /^(дня|вечера)$/.test(input); + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечера'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); + return ru; -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; +}))); -/** Used for built-in method references. */ -var objectProto = Object.prototype; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +/***/ }), -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = hashGet; +//! moment.js locale configuration +//! locale : Sindhi [sd] +//! author : Narain Sagar : https://github.com/narainsagar +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var months = [ + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر', + ], + days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); + var sd = moment.defineLocale('sd', { + months: months, + monthsShort: months, + weekdays: days, + weekdaysShort: days, + weekdaysMin: days, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd، D MMMM YYYY HH:mm', + }, + meridiemParse: /صبح|شام/, + isPM: function (input) { + return 'شام' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar: { + sameDay: '[اڄ] LT', + nextDay: '[سڀاڻي] LT', + nextWeek: 'dddd [اڳين هفتي تي] LT', + lastDay: '[ڪالهه] LT', + lastWeek: '[گزريل هفتي] dddd [تي] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s پوء', + past: '%s اڳ', + s: 'چند سيڪنڊ', + ss: '%d سيڪنڊ', + m: 'هڪ منٽ', + mm: '%d منٽ', + h: 'هڪ ڪلاڪ', + hh: '%d ڪلاڪ', + d: 'هڪ ڏينهن', + dd: '%d ڏينهن', + M: 'هڪ مهينو', + MM: '%d مهينا', + y: 'هڪ سال', + yy: '%d سال', + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** Used for built-in method references. */ -var objectProto = Object.prototype; + return sd; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +}))); -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); -} -module.exports = hashHas; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Northern Sami [se] +//! authors : Bård Rolstad Henriksen : https://github.com/karamell -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); + //! moment.js locale configuration -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; + var se = moment.defineLocale('se', { + months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( + '_' + ), + monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split( + '_' + ), + weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( + '_' + ), + weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin: 's_v_m_g_d_b_L'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'MMMM D. [b.] YYYY', + LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', + }, + calendar: { + sameDay: '[otne ti] LT', + nextDay: '[ihttin ti] LT', + nextWeek: 'dddd [ti] LT', + lastDay: '[ikte ti] LT', + lastWeek: '[ovddit] dddd [ti] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s geažes', + past: 'maŋit %s', + s: 'moadde sekunddat', + ss: '%d sekunddat', + m: 'okta minuhta', + mm: '%d minuhtat', + h: 'okta diimmu', + hh: '%d diimmut', + d: 'okta beaivi', + dd: '%d beaivvit', + M: 'okta mánnu', + MM: '%d mánut', + y: 'okta jahki', + yy: '%d jagit', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} + return se; -module.exports = hashSet; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js ***! - \*********************************************************************************************/ -/***/ ((module) => { - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; +//! moment.js locale configuration +//! locale : Sinhalese [si] +//! author : Sampath Sitinamaluwa : https://github.com/sampathsris -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); -} + //! moment.js locale configuration -module.exports = isIndex; + /*jshint -W100*/ + var si = moment.defineLocale('si', { + months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( + '_' + ), + monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( + '_' + ), + weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( + '_' + ), + weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'a h:mm', + LTS: 'a h:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY MMMM D', + LLL: 'YYYY MMMM D, a h:mm', + LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', + }, + calendar: { + sameDay: '[අද] LT[ට]', + nextDay: '[හෙට] LT[ට]', + nextWeek: 'dddd LT[ට]', + lastDay: '[ඊයේ] LT[ට]', + lastWeek: '[පසුගිය] dddd LT[ට]', + sameElse: 'L', + }, + relativeTime: { + future: '%sකින්', + past: '%sකට පෙර', + s: 'තත්පර කිහිපය', + ss: 'තත්පර %d', + m: 'මිනිත්තුව', + mm: 'මිනිත්තු %d', + h: 'පැය', + hh: 'පැය %d', + d: 'දිනය', + dd: 'දින %d', + M: 'මාසය', + MM: 'මාස %d', + y: 'වසර', + yy: 'වසර %d', + }, + dayOfMonthOrdinalParse: /\d{1,2} වැනි/, + ordinal: function (number) { + return number + ' වැනි'; + }, + meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM: function (input) { + return input === 'ප.ව.' || input === 'පස් වරු'; + }, + meridiem: function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + }, + }); + return si; -/***/ }), +}))); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +/***/ }), -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} +//! moment.js locale configuration +//! locale : Slovak [sk] +//! author : Martin Minka : https://github.com/k2s +//! based on work of petrbela : https://github.com/petrbela -module.exports = isKey; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration -/***/ }), + var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( + '_' + ), + monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); + function plural(n) { + return n > 1 && n < 5; + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; + case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'sekundy' : 'sekúnd'); + } else { + return result + 'sekundami'; + } + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + } + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js ***! - \***********************************************************************************************/ -/***/ ((module) => { + var sk = moment.defineLocale('sk', { + months: months, + monthsShort: monthsShort, + weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[dnes o] LT', + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'pred %s', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} + return sk; -module.exports = isKeyable; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js"); - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = isMasked; +//! moment.js locale configuration +//! locale : Slovenian [sl] +//! author : Robert Sedovšek : https://github.com/sedovsek +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js ***! - \*************************************************************************************************/ -/***/ ((module) => { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture + ? 'nekaj sekund' + : 'nekaj sekundami'; + case 'ss': + if (number === 1) { + result += withoutSuffix ? 'sekundo' : 'sekundi'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah'; + } else { + result += 'sekund'; + } + return result; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; + } + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + var sl = moment.defineLocale('sl', { + months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danes ob] LT', + nextDay: '[jutri ob] LT', -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay: '[včeraj ob] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'čez %s', + past: 'pred %s', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); - return value === proto; -} + return sl; -module.exports = isPrototype; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js"); - -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject(value); -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = isStrictComparable; +//! moment.js locale configuration +//! locale : Albanian [sq] +//! author : Flakërim Ismani : https://github.com/flakerimi +//! author : Menelion Elensúle : https://github.com/Oire +//! author : Oerd Cukalla : https://github.com/oerd +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js ***! - \****************************************************************************************************/ -/***/ ((module) => { + var sq = moment.defineLocale('sq', { + months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( + '_' + ), + monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( + '_' + ), + weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact: true, + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, + meridiem: function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Sot në] LT', + nextDay: '[Nesër në] LT', + nextWeek: 'dddd [në] LT', + lastDay: '[Dje në] LT', + lastWeek: 'dddd [e kaluar në] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'në %s', + past: '%s më parë', + s: 'disa sekonda', + ss: '%d sekonda', + m: 'një minutë', + mm: '%d minuta', + h: 'një orë', + hh: '%d orë', + d: 'një ditë', + dd: '%d ditë', + M: 'një muaj', + MM: '%d muaj', + y: 'një vit', + yy: '%d vite', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} + return sq; -module.exports = listCacheClear; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js ***! + \********************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +//! moment.js locale configuration +//! locale : Serbian Cyrillic [sr-cyrl] +//! author : Milan Janačković : https://github.com/milan-j -/** Used for built-in method references. */ -var arrayProto = Array.prototype; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Built-in value references. */ -var splice = arrayProto.splice; + //! moment.js locale configuration -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + var translator = { + words: { + //Different grammatical cases + ss: ['секунда', 'секунде', 'секунди'], + m: ['један минут', 'једне минуте'], + mm: ['минут', 'минуте', 'минута'], + h: ['један сат', 'једног сата'], + hh: ['сат', 'сата', 'сати'], + dd: ['дан', 'дана', 'дана'], + MM: ['месец', 'месеца', 'месеци'], + yy: ['година', 'године', 'година'], + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); + } + }, + }; - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} + var srCyrl = moment.defineLocale('sr-cyrl', { + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( + '_' + ), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), + weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), + weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[данас у] LT', + nextDay: '[сутра у] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + }, + lastDay: '[јуче у] LT', + lastWeek: function () { + var lastWeekDays = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT', + ]; + return lastWeekDays[this.day()]; + }, + sameElse: 'L', + }, + relativeTime: { + future: 'за %s', + past: 'пре %s', + s: 'неколико секунди', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'дан', + dd: translator.translate, + M: 'месец', + MM: translator.translate, + y: 'годину', + yy: translator.translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -module.exports = listCacheDelete; + return srCyrl; +}))); -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ }), -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); +//! moment.js locale configuration +//! locale : Serbian [sr] +//! author : Milan Janačković : https://github.com/milan-j - return index < 0 ? undefined : data[index][1]; -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = listCacheGet; + //! moment.js locale configuration + var translator = { + words: { + //Different grammatical cases + ss: ['sekunda', 'sekunde', 'sekundi'], + m: ['jedan minut', 'jedne minute'], + mm: ['minut', 'minute', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mesec', 'meseca', 'meseci'], + yy: ['godina', 'godine', 'godina'], + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); + } + }, + }; -/***/ }), + var sr = moment.defineLocale('sr', { + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay: '[juče u] LT', + lastWeek: function () { + var lastWeekDays = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT', + ]; + return lastWeekDays[this.day()]; + }, + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'pre %s', + s: 'nekoliko sekundi', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'dan', + dd: translator.translate, + M: 'mesec', + MM: translator.translate, + y: 'godinu', + yy: translator.translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return sr; -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +}))); -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} -module.exports = listCacheHas; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : siSwati [ss] +//! author : Nicolai Davies : https://github.com/nicolaidavies -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); + //! moment.js locale configuration -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); + var ss = moment.defineLocale('ss', { + months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( + '_' + ), + monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( + '_' + ), + weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Namuhla nga] LT', + nextDay: '[Kusasa nga] LT', + nextWeek: 'dddd [nga] LT', + lastDay: '[Itolo nga] LT', + lastWeek: 'dddd [leliphelile] [nga] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'nga %s', + past: 'wenteka nga %s', + s: 'emizuzwana lomcane', + ss: '%d mzuzwana', + m: 'umzuzu', + mm: '%d emizuzu', + h: 'lihora', + hh: '%d emahora', + d: 'lilanga', + dd: '%d emalanga', + M: 'inyanga', + MM: '%d tinyanga', + y: 'umnyaka', + yy: '%d iminyaka', + }, + meridiemParse: /ekuseni|emini|entsambama|ebusuku/, + meridiem: function (hours, minutes, isLower) { + if (hours < 11) { + return 'ekuseni'; + } else if (hours < 15) { + return 'emini'; + } else if (hours < 19) { + return 'entsambama'; + } else { + return 'ebusuku'; + } + }, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ekuseni') { + return hour; + } else if (meridiem === 'emini') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { + if (hour === 0) { + return 0; + } + return hour + 12; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal: '%d', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} + return ss; -module.exports = listCacheSet; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js ***! \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js"), - ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js"); +//! moment.js locale configuration +//! locale : Swedish [sv] +//! author : Jens Alm : https://github.com/ulmus -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = mapCacheClear; + //! moment.js locale configuration + + var sv = moment.defineLocale('sv', { + months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd D MMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: '[På] dddd LT', + lastWeek: '[I] dddd[s] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: 'för %s sedan', + s: 'några sekunder', + ss: '%d sekunder', + m: 'en minut', + mm: '%d minuter', + h: 'en timme', + hh: '%d timmar', + d: 'en dag', + dd: '%d dagar', + M: 'en månad', + MM: '%d månader', + y: 'ett år', + yy: '%d år', + }, + dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? ':e' + : b === 1 + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + + return sv; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +//! moment.js locale configuration +//! locale : Swahili [sw] +//! author : Fahad Kassim : https://github.com/fadsel -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = mapCacheDelete; + //! moment.js locale configuration + var sw = moment.defineLocale('sw', { + months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( + '_' + ), + weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[leo saa] LT', + nextDay: '[kesho saa] LT', + nextWeek: '[wiki ijayo] dddd [saat] LT', + lastDay: '[jana] LT', + lastWeek: '[wiki iliyopita] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s baadaye', + past: 'tokea %s', + s: 'hivi punde', + ss: 'sekunde %d', + m: 'dakika moja', + mm: 'dakika %d', + h: 'saa limoja', + hh: 'masaa %d', + d: 'siku moja', + dd: 'siku %d', + M: 'mwezi mmoja', + MM: 'miezi %d', + y: 'mwaka mmoja', + yy: 'miaka %d', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/***/ }), + return sw; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} +/***/ }), -module.exports = mapCacheGet; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Tamil [ta] +//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); + var symbolMap = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦', + }, + numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0', + }; -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} + var ta = moment.defineLocale('ta', { + months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( + '_' + ), + weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( + '_' + ), + weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, HH:mm', + LLLL: 'dddd, D MMMM YYYY, HH:mm', + }, + calendar: { + sameDay: '[இன்று] LT', + nextDay: '[நாளை] LT', + nextWeek: 'dddd, LT', + lastDay: '[நேற்று] LT', + lastWeek: '[கடந்த வாரம்] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s இல்', + past: '%s முன்', + s: 'ஒரு சில விநாடிகள்', + ss: '%d விநாடிகள்', + m: 'ஒரு நிமிடம்', + mm: '%d நிமிடங்கள்', + h: 'ஒரு மணி நேரம்', + hh: '%d மணி நேரம்', + d: 'ஒரு நாள்', + dd: '%d நாட்கள்', + M: 'ஒரு மாதம்', + MM: '%d மாதங்கள்', + y: 'ஒரு வருடம்', + yy: '%d ஆண்டுகள்', + }, + dayOfMonthOrdinalParse: /\d{1,2}வது/, + ordinal: function (number) { + return number + 'வது'; + }, + preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // refer http://ta.wikipedia.org/s/1er1 + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, + meridiem: function (hour, minute, isLower) { + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); -module.exports = mapCacheHas; + return ta; + +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +//! moment.js locale configuration +//! locale : Telugu [te] +//! author : Krishna Chaitanya Thota : https://github.com/kcthota -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} + //! moment.js locale configuration -module.exports = mapCacheSet; + var te = moment.defineLocale('te', { + months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( + '_' + ), + monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( + '_' + ), + weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), + longDateFormat: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm', + LLLL: 'dddd, D MMMM YYYY, A h:mm', + }, + calendar: { + sameDay: '[నేడు] LT', + nextDay: '[రేపు] LT', + nextWeek: 'dddd, LT', + lastDay: '[నిన్న] LT', + lastWeek: '[గత] dddd, LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s లో', + past: '%s క్రితం', + s: 'కొన్ని క్షణాలు', + ss: '%d సెకన్లు', + m: 'ఒక నిమిషం', + mm: '%d నిమిషాలు', + h: 'ఒక గంట', + hh: '%d గంటలు', + d: 'ఒక రోజు', + dd: '%d రోజులు', + M: 'ఒక నెల', + MM: '%d నెలలు', + y: 'ఒక సంవత్సరం', + yy: '%d సంవత్సరాలు', + }, + dayOfMonthOrdinalParse: /\d{1,2}వ/, + ordinal: '%dవ', + meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'రాత్రి') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ఉదయం') { + return hour; + } else if (meridiem === 'మధ్యాహ్నం') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'సాయంత్రం') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'రాత్రి'; + } else if (hour < 10) { + return 'ఉదయం'; + } else if (hour < 17) { + return 'మధ్యాహ్నం'; + } else if (hour < 20) { + return 'సాయంత్రం'; + } else { + return 'రాత్రి'; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); + return te; -/***/ }), +}))); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js ***! - \************************************************************************************************/ -/***/ ((module) => { -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); +/***/ }), - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js ***! + \****************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = mapToArray; +//! moment.js locale configuration +//! locale : Tetun Dili (East Timor) [tet] +//! author : Joshua Brooks : https://github.com/joshbrooks +//! author : Onorio De J. Afonso : https://github.com/marobo +//! author : Sonia Simoes : https://github.com/soniasimoes +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js ***! - \*************************************************************************************************************/ -/***/ ((module) => { + var tet = moment.defineLocale('tet', { + months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), + weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), + weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Ohin iha] LT', + nextDay: '[Aban iha] LT', + nextWeek: 'dddd [iha] LT', + lastDay: '[Horiseik iha] LT', + lastWeek: 'dddd [semana kotuk] [iha] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'iha %s', + past: '%s liuba', + s: 'segundu balun', + ss: 'segundu %d', + m: 'minutu ida', + mm: 'minutu %d', + h: 'oras ida', + hh: 'oras %d', + d: 'loron ida', + dd: 'loron %d', + M: 'fulan ida', + MM: 'fulan %d', + y: 'tinan ida', + yy: 'tinan %d', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} + return tet; -module.exports = matchesStrictComparable; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js ***! \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js"); - -/** Used as the maximum memoize cache size. */ -var MAX_MEMOIZE_SIZE = 500; - -/** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ -function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; -} +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = memoizeCapped; +//! moment.js locale configuration +//! locale : Tajik [tg] +//! author : Orif N. Jr. : https://github.com/orif-jr +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var suffixes = { + 0: '-ум', + 1: '-ум', + 2: '-юм', + 3: '-юм', + 4: '-ум', + 5: '-ум', + 6: '-ум', + 7: '-ум', + 8: '-ум', + 9: '-ум', + 10: '-ум', + 12: '-ум', + 13: '-ум', + 20: '-ум', + 30: '-юм', + 40: '-ум', + 50: '-ум', + 60: '-ум', + 70: '-ум', + 80: '-ум', + 90: '-ум', + 100: '-ум', + }; -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js"); + var tg = moment.defineLocale('tg', { + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( + '_' + ), + weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), + weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Имрӯз соати] LT', + nextDay: '[Пагоҳ соати] LT', + lastDay: '[Дирӯз соати] LT', + nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', + lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'баъди %s', + past: '%s пеш', + s: 'якчанд сония', + m: 'як дақиқа', + mm: '%d дақиқа', + h: 'як соат', + hh: '%d соат', + d: 'як рӯз', + dd: '%d рӯз', + M: 'як моҳ', + MM: '%d моҳ', + y: 'як сол', + yy: '%d сол', + }, + meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'шаб') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'субҳ') { + return hour; + } else if (meridiem === 'рӯз') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'бегоҳ') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'шаб'; + } else if (hour < 11) { + return 'субҳ'; + } else if (hour < 16) { + return 'рӯз'; + } else if (hour < 19) { + return 'бегоҳ'; + } else { + return 'шаб'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/, + ordinal: function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes[number] || suffixes[a] || suffixes[b]); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 1th is the first week of the year. + }, + }); -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); + return tg; -module.exports = nativeCreate; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js"); +//! moment.js locale configuration +//! locale : Thai [th] +//! author : Kridsada Thanabulpong : https://github.com/sirn -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -module.exports = nativeKeys; + //! moment.js locale configuration + var th = moment.defineLocale('th', { + months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( + '_' + ), + monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY เวลา H:mm', + LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', + }, + meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, + isPM: function (input) { + return input === 'หลังเที่ยง'; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ก่อนเที่ยง'; + } else { + return 'หลังเที่ยง'; + } + }, + calendar: { + sameDay: '[วันนี้ เวลา] LT', + nextDay: '[พรุ่งนี้ เวลา] LT', + nextWeek: 'dddd[หน้า เวลา] LT', + lastDay: '[เมื่อวานนี้ เวลา] LT', + lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'อีก %s', + past: '%sที่แล้ว', + s: 'ไม่กี่วินาที', + ss: '%d วินาที', + m: '1 นาที', + mm: '%d นาที', + h: '1 ชั่วโมง', + hh: '%d ชั่วโมง', + d: '1 วัน', + dd: '%d วัน', + M: '1 เดือน', + MM: '%d เดือน', + y: '1 ปี', + yy: '%d ปี', + }, + }); -/***/ }), + return th; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js ***! - \**********************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { +}))); -/* module decorator */ module = __webpack_require__.nmd(module); -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; +/***/ }), -/** Detect free variable `module`. */ -var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; +//! moment.js locale configuration +//! locale : Tagalog (Philippines) [tl-ph] +//! author : Dan Hagman : https://github.com/hagmandan -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && freeGlobal.process; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; + //! moment.js locale configuration - if (types) { - return types; - } + var tlPh = moment.defineLocale('tl-ph', { + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', + }, + calendar: { + sameDay: 'LT [ngayong araw]', + nextDay: '[Bukas ng] LT', + nextWeek: 'LT [sa susunod na] dddd', + lastDay: 'LT [kahapon]', + lastWeek: 'LT [noong nakaraang] dddd', + sameElse: 'L', + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal: function (number) { + return number; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); + return tlPh; -module.exports = nodeUtil; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js ***! \****************************************************************************************************/ -/***/ ((module) => { - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); -} - -module.exports = objectToString; - +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Klingon [tlh] +//! author : Dominika Kruk : https://github.com/amaranthrose -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js ***! - \*********************************************************************************************/ -/***/ ((module) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} + //! moment.js locale configuration -module.exports = overArg; + var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); + function translateFuture(output) { + var time = output; + time = + output.indexOf('jaj') !== -1 + ? time.slice(0, -3) + 'leS' + : output.indexOf('jar') !== -1 + ? time.slice(0, -3) + 'waQ' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'nem' + : time + ' pIq'; + return time; + } -/***/ }), + function translatePast(output) { + var time = output; + time = + output.indexOf('jaj') !== -1 + ? time.slice(0, -3) + 'Hu’' + : output.indexOf('jar') !== -1 + ? time.slice(0, -3) + 'wen' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'ben' + : time + ' ret'; + return time; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js ***! - \******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function translate(number, withoutSuffix, string, isFuture) { + var numberNoun = numberAsNoun(number); + switch (string) { + case 'ss': + return numberNoun + ' lup'; + case 'mm': + return numberNoun + ' tup'; + case 'hh': + return numberNoun + ' rep'; + case 'dd': + return numberNoun + ' jaj'; + case 'MM': + return numberNoun + ' jar'; + case 'yy': + return numberNoun + ' DIS'; + } + } -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); + function numberAsNoun(number) { + var hundred = Math.floor((number % 1000) / 100), + ten = Math.floor((number % 100) / 10), + one = number % 10, + word = ''; + if (hundred > 0) { + word += numbersNouns[hundred] + 'vatlh'; + } + if (ten > 0) { + word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; + } + if (one > 0) { + word += (word !== '' ? ' ' : '') + numbersNouns[one]; + } + return word === '' ? 'pagh' : word; + } -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + var tlh = moment.defineLocale('tlh', { + months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split( + '_' + ), + monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[DaHjaj] LT', + nextDay: '[wa’leS] LT', + nextWeek: 'LLL', + lastDay: '[wa’Hu’] LT', + lastWeek: 'LLL', + sameElse: 'L', + }, + relativeTime: { + future: translateFuture, + past: translatePast, + s: 'puS lup', + ss: translate, + m: 'wa’ tup', + mm: translate, + h: 'wa’ rep', + hh: translate, + d: 'wa’ jaj', + dd: translate, + M: 'wa’ jar', + MM: translate, + y: 'wa’ DIS', + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); + return tlh; -module.exports = root; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js ***! - \*************************************************************************************************/ -/***/ ((module) => { - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} +//! moment.js locale configuration +//! locale : Turkish [tr] +//! authors : Erhan Gundogan : https://github.com/erhangundogan, +//! Burak Yiğit Kaya: https://github.com/BYK -module.exports = setCacheAdd; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration -/***/ }), + var suffixes = { + 1: "'inci", + 5: "'inci", + 8: "'inci", + 70: "'inci", + 80: "'inci", + 2: "'nci", + 7: "'nci", + 20: "'nci", + 50: "'nci", + 3: "'üncü", + 4: "'üncü", + 100: "'üncü", + 6: "'ncı", + 9: "'uncu", + 10: "'uncu", + 30: "'uncu", + 60: "'ıncı", + 90: "'ıncı", + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js ***! - \*************************************************************************************************/ -/***/ ((module) => { + var tr = moment.defineLocale('tr', { + months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( + '_' + ), + monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( + '_' + ), + weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'öö' : 'ÖÖ'; + } else { + return isLower ? 'ös' : 'ÖS'; + } + }, + meridiemParse: /öö|ÖÖ|ös|ÖS/, + isPM: function (input) { + return input === 'ös' || input === 'ÖS'; + }, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[bugün saat] LT', + nextDay: '[yarın saat] LT', + nextWeek: '[gelecek] dddd [saat] LT', + lastDay: '[dün] LT', + lastWeek: '[geçen] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s sonra', + past: '%s önce', + s: 'birkaç saniye', + ss: '%d saniye', + m: 'bir dakika', + mm: '%d dakika', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir yıl', + yy: '%d yıl', + }, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'Do': + case 'DD': + return number; + default: + if (number === 0) { + // special case for zero + return number + "'ıncı"; + } + var a = number % 10, + b = (number % 100) - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} + return tr; -module.exports = setCacheHas; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js ***! - \************************************************************************************************/ -/***/ ((module) => { - -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js ***! + \****************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = setToArray; +//! moment.js locale configuration +//! locale : Talossan [tzl] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v +//! author : Iustì Canun +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. + // This is currently too difficult (maybe even impossible) to add. + var tzl = moment.defineLocale('tzl', { + months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM [dallas] YYYY', + LLL: 'D. MMMM [dallas] YYYY HH.mm', + LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', + }, + meridiemParse: /d\'o|d\'a/i, + isPM: function (input) { + return "d'o" === input.toLowerCase(); + }, + meridiem: function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? "d'o" : "D'O"; + } else { + return isLower ? "d'a" : "D'A"; + } + }, + calendar: { + sameDay: '[oxhi à] LT', + nextDay: '[demà à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[ieiri à] LT', + lastWeek: '[sür el] dddd [lasteu à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'osprei %s', + past: 'ja%s', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"); + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + s: ['viensas secunds', "'iensas secunds"], + ss: [number + ' secunds', '' + number + ' secunds'], + m: ["'n míut", "'iens míut"], + mm: [number + ' míuts', '' + number + ' míuts'], + h: ["'n þora", "'iensa þora"], + hh: [number + ' þoras', '' + number + ' þoras'], + d: ["'n ziua", "'iensa ziua"], + dd: [number + ' ziuas', '' + number + ' ziuas'], + M: ["'n mes", "'iens mes"], + MM: [number + ' mesen', '' + number + ' mesen'], + y: ["'n ar", "'iens ar"], + yy: [number + ' ars', '' + number + ' ars'], + }; + return isFuture + ? format[key][0] + : withoutSuffix + ? format[key][0] + : format[key][1]; + } -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; - this.size = 0; -} + return tzl; -module.exports = stackClear; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js ***! - \*************************************************************************************************/ -/***/ ((module) => { - -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js ***! + \*********************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = stackDelete; +//! moment.js locale configuration +//! locale : Central Atlas Tamazight Latin [tzm-latn] +//! author : Abdel Said : https://github.com/abdelsaid +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js ***! - \**********************************************************************************************/ -/***/ ((module) => { + var tzmLatn = moment.defineLocale('tzm-latn', { + months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[asdkh g] LT', + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dadkh s yan %s', + past: 'yan %s', + s: 'imik', + ss: '%d imik', + m: 'minuḍ', + mm: '%d minuḍ', + h: 'saɛa', + hh: '%d tassaɛin', + d: 'ass', + dd: '%d ossan', + M: 'ayowr', + MM: '%d iyyirn', + y: 'asgas', + yy: '%d isgasn', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} + return tzmLatn; -module.exports = stackGet; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js ***! - \**********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js ***! + \****************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); -} +//! moment.js locale configuration +//! locale : Central Atlas Tamazight [tzm] +//! author : Abdel Said : https://github.com/abdelsaid -module.exports = stackHas; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; + //! moment.js locale configuration + + var tzm = moment.defineLocale('tzm', { + months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past: 'ⵢⴰⵏ %s', + s: 'ⵉⵎⵉⴽ', + ss: '%d ⵉⵎⵉⴽ', + m: 'ⵎⵉⵏⵓⴺ', + mm: '%d ⵎⵉⵏⵓⴺ', + h: 'ⵙⴰⵄⴰ', + hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d: 'ⴰⵙⵙ', + dd: '%d oⵙⵙⴰⵏ', + M: 'ⴰⵢoⵓⵔ', + MM: '%d ⵉⵢⵢⵉⵔⵏ', + y: 'ⴰⵙⴳⴰⵙ', + yy: '%d ⵉⵙⴳⴰⵙⵏ', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, + }); -/***/ }), + return tzm; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +}))); -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js"), - MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; +/***/ }), -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = stackSet; +//! moment.js language configuration +//! locale : Uyghur (China) [ug-cn] +//! author: boyaq : https://github.com/boyaq +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js language configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js ***! - \***************************************************************************************************/ -/***/ ((module) => { + var ugCn = moment.defineLocale('ug-cn', { + months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( + '_' + ), + monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( + '_' + ), + weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split( + '_' + ), + weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), + weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', + LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', + LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', + }, + meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ( + meridiem === 'يېرىم كېچە' || + meridiem === 'سەھەر' || + meridiem === 'چۈشتىن بۇرۇن' + ) { + return hour; + } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') { + return hour + 12; + } else { + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return 'يېرىم كېچە'; + } else if (hm < 900) { + return 'سەھەر'; + } else if (hm < 1130) { + return 'چۈشتىن بۇرۇن'; + } else if (hm < 1230) { + return 'چۈش'; + } else if (hm < 1800) { + return 'چۈشتىن كېيىن'; + } else { + return 'كەچ'; + } + }, + calendar: { + sameDay: '[بۈگۈن سائەت] LT', + nextDay: '[ئەتە سائەت] LT', + nextWeek: '[كېلەركى] dddd [سائەت] LT', + lastDay: '[تۆنۈگۈن] LT', + lastWeek: '[ئالدىنقى] dddd [سائەت] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s كېيىن', + past: '%s بۇرۇن', + s: 'نەچچە سېكونت', + ss: '%d سېكونت', + m: 'بىر مىنۇت', + mm: '%d مىنۇت', + h: 'بىر سائەت', + hh: '%d سائەت', + d: 'بىر كۈن', + dd: '%d كۈن', + M: 'بىر ئاي', + MM: '%d ئاي', + y: 'بىر يىل', + yy: '%d يىل', + }, -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; + dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '-كۈنى'; + case 'w': + case 'W': + return number + '-ھەپتە'; + default: + return number; + } + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week: { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 1st is the first week of the year. + }, + }); - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} + return ugCn; -module.exports = strictIndexOf; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js"); +//! moment.js locale configuration +//! locale : Ukrainian [uk] +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire -/** Used to match property names within property paths. */ -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; + //! moment.js locale configuration -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 + ? forms[0] + : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) + ? forms[1] + : forms[2]; + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', + mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + dd: 'день_дні_днів', + MM: 'місяць_місяці_місяців', + yy: 'рік_роки_років', + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } else { + return number + ' ' + plural(format[key], +number); + } + } + function weekdaysCaseReplace(m, format) { + var weekdays = { + nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( + '_' + ), + accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( + '_' + ), + genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( + '_' + ), + }, + nounCase; -module.exports = stringToPath; + if (m === true) { + return weekdays['nominative'] + .slice(1, 7) + .concat(weekdays['nominative'].slice(0, 1)); + } + if (!m) { + return weekdays['nominative']; + } + nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) + ? 'accusative' + : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) + ? 'genitive' + : 'nominative'; + return weekdays[nounCase][m.day()]; + } + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } -/***/ }), + var uk = moment.defineLocale('uk', { + months: { + format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( + '_' + ), + standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( + '_' + ), + }, + monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( + '_' + ), + weekdays: weekdaysCaseReplace, + weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY р.', + LLL: 'D MMMM YYYY р., HH:mm', + LLLL: 'dddd, D MMMM YYYY р., HH:mm', + }, + calendar: { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L', + }, + relativeTime: { + future: 'за %s', + past: '%s тому', + s: 'декілька секунд', + ss: relativeTimeWithPlural, + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: 'годину', + hh: relativeTimeWithPlural, + d: 'день', + dd: relativeTimeWithPlural, + M: 'місяць', + MM: relativeTimeWithPlural, + y: 'рік', + yy: relativeTimeWithPlural, + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return uk; -var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +}))); -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} +/***/ }), -module.exports = toKey; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Urdu [ur] +//! author : Sawood Alam : https://github.com/ibnesayeed +//! author : Zack : https://github.com/ZackVision -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js ***! - \**********************************************************************************************/ -/***/ ((module) => { + //! moment.js locale configuration -/** Used for built-in method references. */ -var funcProto = Function.prototype; + var months = [ + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر', + ], + days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; + var ur = moment.defineLocale('ur', { + months: months, + monthsShort: months, + weekdays: days, + weekdaysShort: days, + weekdaysMin: days, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd، D MMMM YYYY HH:mm', + }, + meridiemParse: /صبح|شام/, + isPM: function (input) { + return 'شام' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar: { + sameDay: '[آج بوقت] LT', + nextDay: '[کل بوقت] LT', + nextWeek: 'dddd [بوقت] LT', + lastDay: '[گذشتہ روز بوقت] LT', + lastWeek: '[گذشتہ] dddd [بوقت] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s بعد', + past: '%s قبل', + s: 'چند سیکنڈ', + ss: '%d سیکنڈ', + m: 'ایک منٹ', + mm: '%d منٹ', + h: 'ایک گھنٹہ', + hh: '%d گھنٹے', + d: 'ایک دن', + dd: '%d دن', + M: 'ایک ماہ', + MM: '%d ماہ', + y: 'ایک سال', + yy: '%d سال', + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} + return ur; -module.exports = toSource; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js": -/*!***************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js ***! - \***************************************************************************************/ -/***/ ((module) => { - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -module.exports = eq; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js ***! + \********************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Uzbek Latin [uz-latn] +//! author : Rasulbek Mirzayev : github.com/Rasulbeeek -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js": -/*!****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js ***! - \****************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); + var uzLatn = moment.defineLocale('uz-latn', { + months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( + '_' + ), + monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), + weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( + '_' + ), + weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), + weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', + }, + calendar: { + sameDay: '[Bugun soat] LT [da]', + nextDay: '[Ertaga] LT [da]', + nextWeek: 'dddd [kuni soat] LT [da]', + lastDay: '[Kecha soat] LT [da]', + lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", + sameElse: 'L', + }, + relativeTime: { + future: 'Yaqin %s ichida', + past: 'Bir necha %s oldin', + s: 'soniya', + ss: '%d soniya', + m: 'bir daqiqa', + mm: '%d daqiqa', + h: 'bir soat', + hh: '%d soat', + d: 'bir kun', + dd: '%d kun', + M: 'bir oy', + MM: '%d oy', + y: 'bir yil', + yy: '%d yil', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, + }); -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} + return uzLatn; -module.exports = get; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js ***! - \******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js"), - hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js"); - -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = hasIn; +//! moment.js locale configuration +//! locale : Uzbek [uz] +//! author : Sardor Muminov : https://github.com/muminoff +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js ***! - \*********************************************************************************************/ -/***/ ((module) => { + var uz = moment.defineLocale('uz', { + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', + }, + calendar: { + sameDay: '[Бугун соат] LT [да]', + nextDay: '[Эртага] LT [да]', + nextWeek: 'dddd [куни соат] LT [да]', + lastDay: '[Кеча соат] LT [да]', + lastWeek: '[Утган] dddd [куни соат] LT [да]', + sameElse: 'L', + }, + relativeTime: { + future: 'Якин %s ичида', + past: 'Бир неча %s олдин', + s: 'фурсат', + ss: '%d фурсат', + m: 'бир дакика', + mm: '%d дакика', + h: 'бир соат', + hh: '%d соат', + d: 'бир кун', + dd: '%d кун', + M: 'бир ой', + MM: '%d ой', + y: 'бир йил', + yy: '%d йил', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} + return uz; -module.exports = identity; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +//! moment.js locale configuration +//! locale : Vietnamese [vi] +//! author : Bang Nguyen : https://github.com/bangnk +//! author : Chien Kira : https://github.com/chienkira -/** Used for built-in method references. */ -var objectProto = Object.prototype; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + //! moment.js locale configuration -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var vi = moment.defineLocale('vi', { + months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( + '_' + ), + monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( + '_' + ), + weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysParseExact: true, + meridiemParse: /sa|ch/i, + isPM: function (input) { + return /^ch$/i.test(input); + }, + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'sa' : 'SA'; + } else { + return isLower ? 'ch' : 'CH'; + } + }, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [năm] YYYY', + LLL: 'D MMMM [năm] YYYY HH:mm', + LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', + l: 'DD/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Hôm nay lúc] LT', + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần trước lúc] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s tới', + past: '%s trước', + s: 'vài giây', + ss: '%d giây', + m: 'một phút', + mm: '%d phút', + h: 'một giờ', + hh: '%d giờ', + d: 'một ngày', + dd: '%d ngày', + M: 'một tháng', + MM: '%d tháng', + y: 'một năm', + yy: '%d năm', + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal: function (number) { + return number; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); -}; + return vi; -module.exports = isArguments; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js ***! - \********************************************************************************************/ -/***/ ((module) => { - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -module.exports = isArray; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js ***! + \*********************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +//! moment.js locale configuration +//! locale : Pseudo [x-pseudo] +//! author : Andrew Hood : https://github.com/andrewhood125 -/***/ }), +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + //! moment.js locale configuration -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js"); + var xPseudo = moment.defineLocale('x-pseudo', { + months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split( + '_' + ), + monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( + '_' + ), + weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[T~ódá~ý át] LT', + nextDay: '[T~ómó~rró~w át] LT', + nextWeek: 'dddd [át] LT', + lastDay: '[Ý~ést~érdá~ý át] LT', + lastWeek: '[L~ást] dddd [át] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'í~ñ %s', + past: '%s á~gó', + s: 'á ~féw ~sécó~ñds', + ss: '%d s~écóñ~ds', + m: 'á ~míñ~úté', + mm: '%d m~íñú~tés', + h: 'á~ñ hó~úr', + hh: '%d h~óúrs', + d: 'á ~dáý', + dd: '%d d~áýs', + M: 'á ~móñ~th', + MM: '%d m~óñt~hs', + y: 'á ~ýéár', + yy: '%d ý~éárs', + }, + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} + return xPseudo; -module.exports = isArrayLike; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js ***! - \*********************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { - -/* module decorator */ module = __webpack_require__.nmd(module); -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js"), - stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js"); - -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js ***! + \***************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/** Detect free variable `module`. */ -var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; +//! moment.js locale configuration +//! locale : Yoruba Nigeria [yo] +//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined; + //! moment.js locale configuration -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + var yo = moment.defineLocale('yo', { + months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( + '_' + ), + monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), + weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), + weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), + weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Ònì ni] LT', + nextDay: '[Ọ̀la ni] LT', + nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", + lastDay: '[Àna ni] LT', + lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ní %s', + past: '%s kọjá', + s: 'ìsẹjú aayá die', + ss: 'aayá %d', + m: 'ìsẹjú kan', + mm: 'ìsẹjú %d', + h: 'wákati kan', + hh: 'wákati %d', + d: 'ọjọ́ kan', + dd: 'ọjọ́ %d', + M: 'osù kan', + MM: 'osù %d', + y: 'ọdún kan', + yy: 'ọdún %d', + }, + dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, + ordinal: 'ọjọ́ %d', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse; + return yo; -module.exports = isBuffer; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js"); +//! moment.js locale configuration +//! locale : Chinese (China) [zh-cn] +//! author : suupic : https://github.com/suupic +//! author : Zeno Zeng : https://github.com/zenozeng +//! author : uu109 : https://github.com/uu109 -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} + //! moment.js locale configuration -module.exports = isFunction; + var zhCn = moment.defineLocale('zh-cn', { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日Ah点mm分', + LLLL: 'YYYY年M月D日ddddAh点mm分', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { + return '[下]dddLT'; + } else { + return '[本]dddLT'; + } + }, + lastDay: '[昨天]LT', + lastWeek: function (now) { + if (this.week() !== now.week()) { + return '[上]dddLT'; + } else { + return '[本]dddLT'; + } + }, + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime: { + future: '%s后', + past: '%s前', + s: '几秒', + ss: '%d 秒', + m: '1 分钟', + mm: '%d 分钟', + h: '1 小时', + hh: '%d 小时', + d: '1 天', + dd: '%d 天', + M: '1 个月', + MM: '%d 个月', + y: '1 年', + yy: '%d 年', + }, + week: { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + return zhCn; -/***/ }), +}))); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js ***! - \*********************************************************************************************/ -/***/ ((module) => { -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; +/***/ }), -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = isLength; +//! moment.js locale configuration +//! locale : Chinese (Hong Kong) [zh-hk] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Konstantin : https://github.com/skfd +//! author : Anthony : https://github.com/anthonylau +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js ***! - \*********************************************************************************************/ -/***/ ((module) => { + var zhHk = moment.defineLocale('zh-hk', { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1200) { + return '上午'; + } else if (hm === 1200) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: '[下]ddddLT', + lastDay: '[昨天]LT', + lastWeek: '[上]ddddLT', + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '週'; + default: + return number; + } + }, + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, + }); -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} + return zhHk; -module.exports = isObject; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js ***! - \*************************************************************************************************/ -/***/ ((module) => { - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -module.exports = isObjectLike; +//! moment.js locale configuration +//! locale : Chinese (Macau) [zh-mo] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Tan Yuanhong : https://github.com/le0tan +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -/***/ }), + //! moment.js locale configuration -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var zhMo = moment.defineLocale('zh-mo', { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'D/M/YYYY', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '週'; + default: + return number; + } + }, + relativeTime: { + future: '%s內', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, + }); -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); + return zhMo; -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; +}))); -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); -} -module.exports = isSymbol; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js ***! + \******************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -/***/ }), +//! moment.js locale configuration +//! locale : Chinese (Taiwan) [zh-tw] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +;(function (global, factory) { + true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : + 0 +}(this, (function (moment) { 'use strict'; -var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js"), - baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js"), - nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js"); + //! moment.js locale configuration -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + var zhTw = moment.defineLocale('zh-tw', { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '週'; + default: + return number; + } + }, + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, + }); -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + return zhTw; -module.exports = isTypedArray; +}))); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js ***! - \*****************************************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$": +/*!************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ sync ^\.\/.*$ ***! + \************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js"), - baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js"); +var map = { + "./af": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js", + "./af.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js", + "./ar": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js", + "./ar-dz": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js", + "./ar-dz.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js", + "./ar-kw": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js", + "./ar-kw.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js", + "./ar-ly": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js", + "./ar-ly.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js", + "./ar-ma": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js", + "./ar-ma.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js", + "./ar-sa": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js", + "./ar-sa.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js", + "./ar-tn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js", + "./ar-tn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js", + "./ar.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js", + "./az": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js", + "./az.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js", + "./be": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js", + "./be.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js", + "./bg": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js", + "./bg.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js", + "./bm": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js", + "./bm.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js", + "./bn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js", + "./bn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js", + "./bo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js", + "./bo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js", + "./br": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js", + "./br.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js", + "./bs": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js", + "./bs.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js", + "./ca": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js", + "./ca.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js", + "./cs": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js", + "./cs.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js", + "./cv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js", + "./cv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js", + "./cy": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js", + "./cy.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js", + "./da": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js", + "./da.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js", + "./de": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js", + "./de-at": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js", + "./de-at.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js", + "./de-ch": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js", + "./de-ch.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js", + "./de.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js", + "./dv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js", + "./dv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js", + "./el": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js", + "./el.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js", + "./en-au": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js", + "./en-au.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js", + "./en-ca": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js", + "./en-ca.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js", + "./en-gb": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js", + "./en-gb.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js", + "./en-ie": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js", + "./en-ie.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js", + "./en-il": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js", + "./en-il.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js", + "./en-in": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js", + "./en-in.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js", + "./en-nz": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js", + "./en-nz.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js", + "./en-sg": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js", + "./en-sg.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js", + "./eo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js", + "./eo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js", + "./es": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js", + "./es-do": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js", + "./es-do.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js", + "./es-us": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js", + "./es-us.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js", + "./es.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js", + "./et": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js", + "./et.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js", + "./eu": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js", + "./eu.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js", + "./fa": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js", + "./fa.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js", + "./fi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js", + "./fi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js", + "./fil": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js", + "./fil.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js", + "./fo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js", + "./fo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js", + "./fr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js", + "./fr-ca": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js", + "./fr-ca.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js", + "./fr-ch": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js", + "./fr-ch.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js", + "./fr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js", + "./fy": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js", + "./fy.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js", + "./ga": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js", + "./ga.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js", + "./gd": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js", + "./gd.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js", + "./gl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js", + "./gl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js", + "./gom-deva": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js", + "./gom-deva.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js", + "./gom-latn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js", + "./gom-latn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js", + "./gu": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js", + "./gu.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js", + "./he": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js", + "./he.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js", + "./hi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js", + "./hi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js", + "./hr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js", + "./hr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js", + "./hu": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js", + "./hu.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js", + "./hy-am": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js", + "./hy-am.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js", + "./id": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js", + "./id.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js", + "./is": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js", + "./is.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js", + "./it": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js", + "./it-ch": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js", + "./it-ch.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js", + "./it.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js", + "./ja": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js", + "./ja.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js", + "./jv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js", + "./jv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js", + "./ka": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js", + "./ka.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js", + "./kk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js", + "./kk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js", + "./km": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js", + "./km.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js", + "./kn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js", + "./kn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js", + "./ko": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js", + "./ko.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js", + "./ku": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js", + "./ku.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js", + "./ky": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js", + "./ky.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js", + "./lb": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js", + "./lb.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js", + "./lo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js", + "./lo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js", + "./lt": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js", + "./lt.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js", + "./lv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js", + "./lv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js", + "./me": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js", + "./me.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js", + "./mi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js", + "./mi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js", + "./mk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js", + "./mk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js", + "./ml": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js", + "./ml.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js", + "./mn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js", + "./mn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js", + "./mr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js", + "./mr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js", + "./ms": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js", + "./ms-my": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js", + "./ms-my.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js", + "./ms.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js", + "./mt": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js", + "./mt.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js", + "./my": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js", + "./my.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js", + "./nb": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js", + "./nb.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js", + "./ne": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js", + "./ne.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js", + "./nl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js", + "./nl-be": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js", + "./nl-be.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js", + "./nl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js", + "./nn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js", + "./nn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js", + "./oc-lnc": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js", + "./oc-lnc.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js", + "./pa-in": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js", + "./pa-in.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js", + "./pl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js", + "./pl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js", + "./pt": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js", + "./pt-br": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js", + "./pt-br.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js", + "./pt.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js", + "./ro": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js", + "./ro.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js", + "./ru": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js", + "./ru.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js", + "./sd": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js", + "./sd.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js", + "./se": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js", + "./se.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js", + "./si": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js", + "./si.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js", + "./sk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js", + "./sk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js", + "./sl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js", + "./sl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js", + "./sq": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js", + "./sq.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js", + "./sr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js", + "./sr-cyrl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js", + "./sr-cyrl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js", + "./sr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js", + "./ss": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js", + "./ss.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js", + "./sv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js", + "./sv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js", + "./sw": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js", + "./sw.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js", + "./ta": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js", + "./ta.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js", + "./te": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js", + "./te.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js", + "./tet": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js", + "./tet.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js", + "./tg": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js", + "./tg.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js", + "./th": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js", + "./th.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js", + "./tl-ph": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js", + "./tl-ph.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js", + "./tlh": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js", + "./tlh.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js", + "./tr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js", + "./tr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js", + "./tzl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js", + "./tzl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js", + "./tzm": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js", + "./tzm-latn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js", + "./tzm-latn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js", + "./tzm.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js", + "./ug-cn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js", + "./ug-cn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js", + "./uk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js", + "./uk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js", + "./ur": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js", + "./ur.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js", + "./uz": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js", + "./uz-latn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js", + "./uz-latn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js", + "./uz.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js", + "./vi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js", + "./vi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js", + "./x-pseudo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js", + "./x-pseudo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js", + "./yo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js", + "./yo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js", + "./zh-cn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js", + "./zh-cn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js", + "./zh-hk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js", + "./zh-hk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js", + "./zh-mo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js", + "./zh-mo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js", + "./zh-tw": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js", + "./zh-tw.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js" +}; + -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +function webpackContext(req) { + var id = webpackContextResolve(req); + return __webpack_require__(id); } - -module.exports = keys; - +function webpackContextResolve(req) { + if(!__webpack_require__.o(map, req)) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; + } + return map[req]; +} +webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); +}; +webpackContext.resolve = webpackContextResolve; +module.exports = webpackContext; +webpackContext.id = "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$"; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js ***! + \************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); +/* module decorator */ module = __webpack_require__.nmd(module); +//! moment.js +//! version : 2.26.0 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; +;(function (global, factory) { + true ? module.exports = factory() : + 0 +}(this, (function () { 'use strict'; -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; + var hookCallback; - if (cache.has(key)) { - return cache.get(key); + function hooks() { + return hookCallback.apply(null, arguments); } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} -// Expose `MapCache`. -memoize.Cache = MapCache; + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback(callback) { + hookCallback = callback; + } -module.exports = memoize; + function isArray(input) { + return ( + input instanceof Array || + Object.prototype.toString.call(input) === '[object Array]' + ); + } + function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return ( + input != null && + Object.prototype.toString.call(input) === '[object Object]' + ); + } -/***/ }), + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js ***! - \*****************************************************************************************/ -/***/ ((module) => { + function isObjectEmpty(obj) { + if (Object.getOwnPropertyNames) { + return Object.getOwnPropertyNames(obj).length === 0; + } else { + var k; + for (k in obj) { + if (hasOwnProp(obj, k)) { + return false; + } + } + return true; + } + } -/** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ -function noop() { - // No operation performed. -} + function isUndefined(input) { + return input === void 0; + } -module.exports = noop; + function isNumber(input) { + return ( + typeof input === 'number' || + Object.prototype.toString.call(input) === '[object Number]' + ); + } + function isDate(input) { + return ( + input instanceof Date || + Object.prototype.toString.call(input) === '[object Date]' + ); + } -/***/ }), + function map(arr, fn) { + var res = [], + i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } -var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js"), - basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } -/** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ -function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); -} + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } -module.exports = property; + return a; + } + function createUTC(input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } -/***/ }), + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty: false, + unusedTokens: [], + unusedInput: [], + overflow: -2, + charsLeftOver: 0, + nullInput: false, + invalidEra: null, + invalidMonth: null, + invalidFormat: false, + userInvalidated: false, + iso: false, + parsedDateParts: [], + era: null, + meridiem: null, + rfc2822: false, + weekdayMismatch: false, + }; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js ***! - \**********************************************************************************************/ -/***/ ((module) => { + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } -/** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ -function stubArray() { - return []; -} + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this), + len = t.length >>> 0, + i; -module.exports = stubArray; + for (i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + return false; + }; + } -/***/ }), + function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m), + parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }), + isNowValid = + !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidEra && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js ***! - \**********************************************************************************************/ -/***/ ((module) => { + if (m._strict) { + isNowValid = + isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } -/** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; -} + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } else { + return isNowValid; + } + } + return m._isValid; + } -module.exports = stubFalse; + function createInvalid(flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } else { + getParsingFlags(m).userInvalidated = true; + } + return m; + } -/***/ }), + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = (hooks.momentProperties = []), + updateInProgress = false; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function copyConfig(to, from) { + var i, prop, val; -var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js"); + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } -module.exports = toString; + return to; + } + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } + } -/***/ }), + function isMoment(obj) { + return ( + obj instanceof Moment || (obj != null && obj._isAMomentObject != null) + ); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function warn(msg) { + if ( + hooks.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && + console.warn + ) { + console.warn('Deprecation warning: ' + msg); + } + } -var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js"), - baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js"); + function deprecate(msg, fn) { + var firstTime = true; -/** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The order of result values is determined by the - * order they occur in the array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ -function uniqBy(array, iteratee) { - return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : []; -} + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = [], + arg, + i, + key; + for (i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (key in arguments[0]) { + if (hasOwnProp(arguments[0], key)) { + arg += key + ': ' + arguments[0][key] + ', '; + } + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn( + msg + + '\nArguments: ' + + Array.prototype.slice.call(args).join('') + + '\n' + + new Error().stack + ); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } -module.exports = uniqBy; + var deprecations = {}; + function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } -/***/ }), + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js ***! - \*************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function isFunction(input) { + return ( + (typeof Function !== 'undefined' && input instanceof Function) || + Object.prototype.toString.call(input) === '[object Function]' + ); + } -(function(){ - var crypt = __webpack_require__(/*! crypt */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js"), - utf8 = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js").utf8, - isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js"), - bin = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js").bin, - - // The core - md5 = function (message, options) { - // Convert to byte array - if (message.constructor == String) - if (options && options.encoding === 'binary') - message = bin.stringToBytes(message); - else - message = utf8.stringToBytes(message); - else if (isBuffer(message)) - message = Array.prototype.slice.call(message, 0); - else if (!Array.isArray(message)) - message = message.toString(); - // else, assume byte array already - - var m = crypt.bytesToWords(message), - l = message.length * 8, - a = 1732584193, - b = -271733879, - c = -1732584194, - d = 271733878; - - // Swap endian - for (var i = 0; i < m.length; i++) { - m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | - ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; - } - - // Padding - m[l >>> 5] |= 0x80 << (l % 32); - m[(((l + 64) >>> 9) << 4) + 14] = l; - - // Method shortcuts - var FF = md5._ff, - GG = md5._gg, - HH = md5._hh, - II = md5._ii; - - for (var i = 0; i < m.length; i += 16) { - - var aa = a, - bb = b, - cc = c, - dd = d; - - a = FF(a, b, c, d, m[i+ 0], 7, -680876936); - d = FF(d, a, b, c, m[i+ 1], 12, -389564586); - c = FF(c, d, a, b, m[i+ 2], 17, 606105819); - b = FF(b, c, d, a, m[i+ 3], 22, -1044525330); - a = FF(a, b, c, d, m[i+ 4], 7, -176418897); - d = FF(d, a, b, c, m[i+ 5], 12, 1200080426); - c = FF(c, d, a, b, m[i+ 6], 17, -1473231341); - b = FF(b, c, d, a, m[i+ 7], 22, -45705983); - a = FF(a, b, c, d, m[i+ 8], 7, 1770035416); - d = FF(d, a, b, c, m[i+ 9], 12, -1958414417); - c = FF(c, d, a, b, m[i+10], 17, -42063); - b = FF(b, c, d, a, m[i+11], 22, -1990404162); - a = FF(a, b, c, d, m[i+12], 7, 1804603682); - d = FF(d, a, b, c, m[i+13], 12, -40341101); - c = FF(c, d, a, b, m[i+14], 17, -1502002290); - b = FF(b, c, d, a, m[i+15], 22, 1236535329); - - a = GG(a, b, c, d, m[i+ 1], 5, -165796510); - d = GG(d, a, b, c, m[i+ 6], 9, -1069501632); - c = GG(c, d, a, b, m[i+11], 14, 643717713); - b = GG(b, c, d, a, m[i+ 0], 20, -373897302); - a = GG(a, b, c, d, m[i+ 5], 5, -701558691); - d = GG(d, a, b, c, m[i+10], 9, 38016083); - c = GG(c, d, a, b, m[i+15], 14, -660478335); - b = GG(b, c, d, a, m[i+ 4], 20, -405537848); - a = GG(a, b, c, d, m[i+ 9], 5, 568446438); - d = GG(d, a, b, c, m[i+14], 9, -1019803690); - c = GG(c, d, a, b, m[i+ 3], 14, -187363961); - b = GG(b, c, d, a, m[i+ 8], 20, 1163531501); - a = GG(a, b, c, d, m[i+13], 5, -1444681467); - d = GG(d, a, b, c, m[i+ 2], 9, -51403784); - c = GG(c, d, a, b, m[i+ 7], 14, 1735328473); - b = GG(b, c, d, a, m[i+12], 20, -1926607734); - - a = HH(a, b, c, d, m[i+ 5], 4, -378558); - d = HH(d, a, b, c, m[i+ 8], 11, -2022574463); - c = HH(c, d, a, b, m[i+11], 16, 1839030562); - b = HH(b, c, d, a, m[i+14], 23, -35309556); - a = HH(a, b, c, d, m[i+ 1], 4, -1530992060); - d = HH(d, a, b, c, m[i+ 4], 11, 1272893353); - c = HH(c, d, a, b, m[i+ 7], 16, -155497632); - b = HH(b, c, d, a, m[i+10], 23, -1094730640); - a = HH(a, b, c, d, m[i+13], 4, 681279174); - d = HH(d, a, b, c, m[i+ 0], 11, -358537222); - c = HH(c, d, a, b, m[i+ 3], 16, -722521979); - b = HH(b, c, d, a, m[i+ 6], 23, 76029189); - a = HH(a, b, c, d, m[i+ 9], 4, -640364487); - d = HH(d, a, b, c, m[i+12], 11, -421815835); - c = HH(c, d, a, b, m[i+15], 16, 530742520); - b = HH(b, c, d, a, m[i+ 2], 23, -995338651); - - a = II(a, b, c, d, m[i+ 0], 6, -198630844); - d = II(d, a, b, c, m[i+ 7], 10, 1126891415); - c = II(c, d, a, b, m[i+14], 15, -1416354905); - b = II(b, c, d, a, m[i+ 5], 21, -57434055); - a = II(a, b, c, d, m[i+12], 6, 1700485571); - d = II(d, a, b, c, m[i+ 3], 10, -1894986606); - c = II(c, d, a, b, m[i+10], 15, -1051523); - b = II(b, c, d, a, m[i+ 1], 21, -2054922799); - a = II(a, b, c, d, m[i+ 8], 6, 1873313359); - d = II(d, a, b, c, m[i+15], 10, -30611744); - c = II(c, d, a, b, m[i+ 6], 15, -1560198380); - b = II(b, c, d, a, m[i+13], 21, 1309151649); - a = II(a, b, c, d, m[i+ 4], 6, -145523070); - d = II(d, a, b, c, m[i+11], 10, -1120210379); - c = II(c, d, a, b, m[i+ 2], 15, 718787259); - b = II(b, c, d, a, m[i+ 9], 21, -343485551); - - a = (a + aa) >>> 0; - b = (b + bb) >>> 0; - c = (c + cc) >>> 0; - d = (d + dd) >>> 0; - } - - return crypt.endian([a, b, c, d]); - }; - - // Auxiliary functions - md5._ff = function (a, b, c, d, x, s, t) { - var n = a + (b & c | ~b & d) + (x >>> 0) + t; - return ((n << s) | (n >>> (32 - s))) + b; - }; - md5._gg = function (a, b, c, d, x, s, t) { - var n = a + (b & d | c & ~d) + (x >>> 0) + t; - return ((n << s) | (n >>> (32 - s))) + b; - }; - md5._hh = function (a, b, c, d, x, s, t) { - var n = a + (b ^ c ^ d) + (x >>> 0) + t; - return ((n << s) | (n >>> (32 - s))) + b; - }; - md5._ii = function (a, b, c, d, x, s, t) { - var n = a + (c ^ (b | ~d)) + (x >>> 0) + t; - return ((n << s) | (n >>> (32 - s))) + b; - }; - - // Package private blocksize - md5._blocksize = 16; - md5._digestsize = 16; - - module.exports = function (message, options) { - if (message === undefined || message === null) - throw new Error('Illegal argument ' + message); - - var digestbytes = crypt.wordsToBytes(md5(message, options)); - return options && options.asBytes ? digestbytes : - options && options.asString ? bin.bytesToString(digestbytes) : - crypt.bytesToHex(digestbytes); - }; - -})(); + function set(config) { + var prop, i; + for (i in config) { + if (hasOwnProp(config, i)) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + + /\d{1,2}/.source + ); + } + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), + prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if ( + hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop]) + ) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; + } -/***/ }), + function Locale(config) { + if (config != null) { + this.set(config); + } + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var keys; -const _ = __webpack_require__(/*! underscore */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore.js"); + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, + res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } -const NO_LMP_DATE_MODIFIER = 4; + var defaultCalendar = { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }; -module.exports = function(settings) { - const taskSchedules = settings && settings.tasks && settings.tasks.schedules; - const lib = { - /** - * @function - * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this. - * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display. - * To this end - Utils.isTimely becomes a pass-through in nootils@4.x - * @returns True - */ - isTimely: () => true, + function calendar(key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; + } - addDate: function(date, days) { - let result; - if (date) { - result = new Date(date.getTime()); - } else { - result = lib.now(); - } - result.setDate(result.getDate() + days); - result.setHours(0, 0, 0, 0); - return result; - }, + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return ( + (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + + absNumber + ); + } - getLmpDate: function(doc) { - const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER; - return lib.addDate(new Date(doc.reported_date), weeks * -7); - }, + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + formatFunctions = {}, + formatTokenFunctions = {}; - // TODO getSchedule() can be removed when tasks.json support is dropped - getSchedule: function(name) { - return _.findWhere(taskSchedules, { name: name }); - }, + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken(token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal( + func.apply(this, arguments), + token + ); + }; + } + } - getMostRecentTimestamp: function(reports, form, fields) { - const report = lib.getMostRecentReport(reports, form, fields); - return report && report.reported_date; - }, + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } - getMostRecentReport: function(reports, form, fields) { - let result = null; - reports.forEach(function(report) { - if (report.form === form && - !report.deleted && - (!result || (report.reported_date > result.reported_date)) && - (!fields || (report.fields && lib.fieldsMatch(report, fields)))) { - result = report; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), + i, + length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } } - }); - return result; - }, - isFormSubmittedInWindow: function(reports, form, start, end, count) { - let result = false; - reports.forEach(function(report) { - if (!result && report.form === form) { - if (report.reported_date >= start && report.reported_date <= end) { - if (!count || - (count && report.fields && report.fields.follow_up_count > count)) { - result = true; + return function (mom) { + var output = '', + i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) + ? array[i].call(mom, format) + : array[i]; } - } - } - }); - return result; - }, + return output; + }; + } - isFirstReportNewer: function(firstReport, secondReport) { - if (firstReport && firstReport.reported_date) { - if (secondReport && secondReport.reported_date) { - return firstReport.reported_date > secondReport.reported_date; + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); } - return true; - } - return null; - }, - isDateValid: function(date) { - return !isNaN(date.getTime()); - }, + format = expandFormat(format, m.localeData()); + formatFunctions[format] = + formatFunctions[format] || makeFormatFunction(format); - /** - * @function - * @name getField - * - * Gets the value of specified field path. - * @param {Object} report - The report object. - * @param {string} field - Period separated json path assuming report.fields as - * the root node e.g 'dob' (equivalent to report.fields.dob) - * or 'screening.test_result' equivalent to report.fields.screening.test_result - */ - getField: function(report, field) { - return _.propertyOf(report.fields)(field.split('.')); - }, + return formatFunctions[format](m); + } - fieldsMatch: function(report, fieldValues) { - return Object.keys(fieldValues).every(function(field) { - return lib.getField(report, field) === fieldValues[field]; - }); - }, + function expandFormat(format, locale) { + var i = 5; - MS_IN_DAY: 24*60*60*1000, // 1 day in ms + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - now: function() { return new Date(); }, - }; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace( + localFormattingTokens, + replaceLongDateFormatTokens + ); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - return lib; -}; + return format; + } + var defaultLongDateFormat = { + LTS: 'h:mm:ss A', + LT: 'h:mm A', + L: 'MM/DD/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY h:mm A', + LLLL: 'dddd, MMMM D, YYYY h:mm A', + }; -/***/ }), + function longDateFormat(key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js ***! - \*****************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { + if (format || !formatUpper) { + return format; + } -module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js"); + this._longDateFormat[key] = formatUpper + .match(formattingTokens) + .map(function (tok) { + if ( + tok === 'MMMM' || + tok === 'MM' || + tok === 'DD' || + tok === 'dddd' + ) { + return tok.slice(1); + } + return tok; + }) + .join(''); -/***/ }), + return this._longDateFormat[key]; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js ***! - \**********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + var defaultInvalidDate = 'Invalid date'; -"use strict"; + function invalidDate() { + return this._invalidDate; + } -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - declare = extd.declare, - AVLTree = extd.AVLTree, - LinkedList = extd.LinkedList, - isPromise = extd.isPromiseLike, - EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter; + var defaultOrdinal = '%d', + defaultDayOfMonthOrdinalParse = /\d{1,2}/; + function ordinal(number) { + return this._ordinal.replace('%d', number); + } -var FactHash = declare({ - instance: { - constructor: function () { - this.memory = {}; - this.memoryValues = new LinkedList(); - }, + var defaultRelativeTime = { + future: 'in %s', + past: '%s ago', + s: 'a few seconds', + ss: '%d seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', + d: 'a day', + dd: '%d days', + w: 'a week', + ww: '%d weeks', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }; - clear: function () { - this.memoryValues.clear(); - this.memory = {}; - }, + function relativeTime(number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return isFunction(output) + ? output(number, withoutSuffix, string, isFuture) + : output.replace(/%d/i, number); + } + function pastFuture(diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); + } - remove: function (v) { - var hashCode = v.hashCode, - memory = this.memory, - ret = memory[hashCode]; - if (ret) { - this.memoryValues.remove(ret); - delete memory[hashCode]; - } - return ret; - }, + var aliases = {}; - insert: function (insert) { - var hashCode = insert.hashCode; - if (hashCode in this.memory) { - throw new Error("Activation already in agenda " + insert.rule.name + " agenda"); - } - this.memoryValues.push((this.memory[hashCode] = insert)); - } + function addUnitAlias(unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; } -}); + function normalizeUnits(units) { + return typeof units === 'string' + ? aliases[units] || aliases[units.toLowerCase()] + : undefined; + } -var DEFAULT_AGENDA_GROUP = "main"; -module.exports = declare(EventEmitter, { - - instance: { - constructor: function (flow, conflictResolution) { - this.agendaGroups = {}; - this.agendaGroupStack = [DEFAULT_AGENDA_GROUP]; - this.rules = {}; - this.flow = flow; - this.comparator = conflictResolution; - this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP); - }, + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - addAgendaGroup: function (groupName) { - if (!extd.has(this.agendaGroups, groupName)) { - this.agendaGroups[groupName] = new AVLTree({compare: this.comparator}); + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } } - }, - - getAgendaGroup: function (groupName) { - return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP]; - }, + } - setFocus: function (agendaGroup) { - if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) { - this.agendaGroupStack.push(agendaGroup); - this.emit("focused", agendaGroup); - } - return this; - }, + return normalizedInput; + } - getFocused: function () { - var ags = this.agendaGroupStack; - return ags[ags.length - 1]; - }, + var priorities = {}; - getFocusedAgenda: function () { - return this.agendaGroups[this.getFocused()]; - }, + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } - register: function (node) { - var agendaGroup = node.rule.agendaGroup; - this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()}; - if (agendaGroup) { - this.addAgendaGroup(agendaGroup); + function getPrioritizedUnits(unitsObj) { + var units = [], + u; + for (u in unitsObj) { + if (hasOwnProp(unitsObj, u)) { + units.push({ unit: u, priority: priorities[u] }); } - }, + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } - isEmpty: function () { - var agendaGroupStack = this.agendaGroupStack, changed = false; - while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) { - agendaGroupStack.pop(); - changed = true; - } - if (changed) { - this.emit("focused", this.getFocused()); - } - return this.getFocusedAgenda().isEmpty(); - }, + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - fireNext: function () { - var agendaGroupStack = this.agendaGroupStack, ret = false; - while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) { - agendaGroupStack.pop(); - } - if (!this.getFocusedAgenda().isEmpty()) { - var activation = this.pop(); - this.emit("fire", activation.rule.name, activation.match.factHash); - var fired = activation.rule.fire(this.flow, activation.match); - if (isPromise(fired)) { - ret = fired.then(function () { - //return true if an activation fired - return true; - }); - } else { - ret = true; - } - } - //return false if activation not fired - return ret; - }, + function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } - pop: function () { - var tree = this.getFocusedAgenda(), root = tree.__root; - while (root.right) { - root = root.right; - } - var v = root.data; - tree.remove(v); - var rule = this.rules[v.name]; - rule.tree.remove(v); - rule.factTable.remove(v); - return v; - }, + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - peek: function () { - var tree = this.getFocusedAgenda(), root = tree.__root; - while (root.right) { - root = root.right; - } - return root.data; - }, + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } - modify: function (node, context) { - this.retract(node, context); - this.insert(node, context); - }, + return value; + } - retract: function (node, retract) { - var rule = this.rules[node.name]; - retract.rule = node; - var activation = rule.factTable.remove(retract); - if (activation) { - this.getAgendaGroup(node.rule.agendaGroup).remove(activation); - rule.tree.remove(activation); + function makeGetSet(unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); } - }, + }; + } - insert: function (node, insert) { - var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup; - rule.tree.insert(insert); - this.getAgendaGroup(agendaGroup).insert(insert); - if (nodeRule.autoFocus) { - this.setFocus(agendaGroup); + function get(mom, unit) { + return mom.isValid() + ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() + : NaN; + } + + function set$1(mom, unit, value) { + if (mom.isValid() && !isNaN(value)) { + if ( + unit === 'FullYear' && + isLeapYear(mom.year()) && + mom.month() === 1 && + mom.date() === 29 + ) { + value = toInt(value); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit]( + value, + mom.month(), + daysInMonth(value, mom.month()) + ); + } else { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } + } + } - rule.factTable.insert(insert); - }, + // MOMENTS - dispose: function () { - for (var i in this.agendaGroups) { - this.agendaGroups[i].clear(); - } - var rules = this.rules; - for (i in rules) { - if (i in rules) { - rules[i].tree.clear(); - rules[i].factTable.clear(); + function stringGet(units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } - } + function stringSet(units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units), + i; + for (i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); } - this.rules = {}; } + return this; } -}); + var match1 = /\d/, // 0 - 9 + match2 = /\d\d/, // 00 - 99 + match3 = /\d{3}/, // 000 - 999 + match4 = /\d{4}/, // 0000 - 9999 + match6 = /[+-]?\d{6}/, // -999999 - 999999 + match1to2 = /\d\d?/, // 0 - 99 + match3to4 = /\d\d\d\d?/, // 999 - 9999 + match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 + match1to3 = /\d{1,3}/, // 0 - 999 + match1to4 = /\d{1,4}/, // 0 - 9999 + match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 + matchUnsigned = /\d+/, // 0 - inf + matchSigned = /[+-]?\d+/, // -inf - inf + matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z + matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, + regexes; -/***/ }), + regexes = {}; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js ***! - \******************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + function addRegexToken(token, regex, strictRegex) { + regexes[token] = isFunction(regex) + ? regex + : function (isStrict, localeData) { + return isStrict && strictRegex ? strictRegex : regex; + }; + } -"use strict"; -/*jshint evil:true*/ + function getParseRegexForToken(token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - forEach = extd.forEach, - isString = extd.isString; + return regexes[token](config._strict, config._locale); + } -exports.modifiers = ["assert", "modify", "retract", "emit", "halt", "focus", "getFacts"]; + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape( + s + .replace('\\', '') + .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function ( + matched, + p1, + p2, + p3, + p4 + ) { + return p1 || p2 || p3 || p4; + }) + ); + } -var createFunction = function (body, defined, scope, scopeNames, definedNames) { - var declares = []; - forEach(definedNames, function (i) { - if (body.indexOf(i) !== -1) { - declares.push("var " + i + "= defined." + i + ";"); + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken(token, callback) { + var i, + func = callback; + if (typeof token === 'string') { + token = [token]; } - }); + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } - forEach(scopeNames, function (i) { - if (body.indexOf(i) !== -1) { - declares.push("var " + i + "= scope." + i + ";"); + function addWeekParseToken(token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); } - }); - body = ["((function(){", declares.join(""), "\n\treturn ", body, "\n})())"].join(""); - try { - return eval(body); - } catch (e) { - throw new Error("Invalid action : " + body + "\n" + e.message); } -}; -var createDefined = (function () { + var YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, + WEEK = 7, + WEEKDAY = 8; - var _createDefined = function (action, defined, scope) { - if (isString(action)) { - var declares = []; - extd(defined).keys().forEach(function (i) { - if (action.indexOf(i) !== -1) { - declares.push("var " + i + "= defined." + i + ";"); - } - }); + function mod(n, x) { + return ((n % x) + x) % x; + } - extd(scope).keys().forEach(function (i) { - if (action.indexOf(i) !== -1) { - declares.push("var " + i + "= function(){var prop = scope." + i + "; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};"); - } - }); - if (declares.length) { - declares.unshift("var __objToStr__ = Object.prototype.toString;"); - } - action = [declares.join(""), "return ", action, ";"].join(""); - action = new Function("defined", "scope", action)(defined, scope); - } - var ret = action.hasOwnProperty("constructor") && "function" === typeof action.constructor ? action.constructor : function (opts) { - opts = opts || {}; - for (var i in opts) { - if (i in action) { - this[i] = opts[i]; + var indexOf; + + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; } } + return -1; }; - var proto = ret.prototype; - for (var i in action) { - proto[i] = action[i]; + } + + function daysInMonth(year, month) { + if (isNaN(year) || isNaN(month)) { + return NaN; } - return ret; + var modMonth = mod(month, 12); + year += (month - modMonth) / 12; + return modMonth === 1 + ? isLeapYear(year) + ? 29 + : 28 + : 31 - ((modMonth % 7) % 2); + } - }; + // FORMATTING - return function (options, defined, scope) { - return _createDefined(options.properties, defined, scope); - }; -})(); + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); -exports.createFunction = createFunction; -exports.createDefined = createDefined; + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); -/***/ }), + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js ***! - \*****************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + // ALIASES -"use strict"; -/*jshint evil:true*/ + addUnitAlias('month', 'M'); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), - constraintMatcher = __webpack_require__(/*! ../constraintMatcher.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), - indexOf = extd.indexOf, - forEach = extd.forEach, - removeDuplicates = extd.removeDuplicates, - map = extd.map, - obj = extd.hash, - keys = obj.keys, - merge = extd.merge, - rules = __webpack_require__(/*! ../rule */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), - common = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js"), - modifiers = common.modifiers, - createDefined = common.createDefined, - createFunction = common.createFunction; + // PRIORITY + addUnitPriority('month', 8); -/** - * @private - * Parses an action from a rule definition - * @param {String} action the body of the action to execute - * @param {Array} identifiers array of identifiers collected - * @param {Object} defined an object of defined - * @param scope - * @return {Object} - */ -var parseAction = function (action, identifiers, defined, scope) { - var declares = []; - forEach(identifiers, function (i) { - if (action.indexOf(i) !== -1) { - declares.push("var " + i + "= facts." + i + ";"); - } + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); }); - extd(defined).keys().forEach(function (i) { - if (action.indexOf(i) !== -1) { - declares.push("var " + i + "= defined." + i + ";"); - } + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); }); - extd(scope).keys().forEach(function (i) { - if (action.indexOf(i) !== -1) { - declares.push("var " + i + "= scope." + i + ";"); - } + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; }); - extd(modifiers).forEach(function (i) { - if (action.indexOf(i) !== -1) { - declares.push("if(!" + i + "){ var " + i + "= flow." + i + ";}"); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; } }); - var params = ["facts", 'flow']; - if (/next\(.*\)/.test(action)) { - params.push("next"); + + // LOCALES + + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split( + '_' + ), + MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, + defaultMonthsShortRegex = matchWord, + defaultMonthsRegex = matchWord; + + function localeMonths(m, format) { + if (!m) { + return isArray(this._months) + ? this._months + : this._months['standalone']; + } + return isArray(this._months) + ? this._months[m.month()] + : this._months[ + (this._months.isFormat || MONTHS_IN_FORMAT).test(format) + ? 'format' + : 'standalone' + ][m.month()]; } - action = declares.join("") + action; - try { - return new Function("defined, scope", "return " + new Function(params.join(","), action).toString())(defined, scope); - } catch (e) { - throw new Error("Invalid action : " + action + "\n" + e.message); + + function localeMonthsShort(m, format) { + if (!m) { + return isArray(this._monthsShort) + ? this._monthsShort + : this._monthsShort['standalone']; + } + return isArray(this._monthsShort) + ? this._monthsShort[m.month()] + : this._monthsShort[ + MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' + ][m.month()]; } -}; -var createRuleFromObject = (function () { - var __resolveRule = function (rule, identifiers, conditions, defined, name) { - var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3]; - if (extd.isHash(constraint)) { - refs = constraint; - constraint = null; + function handleStrictParse(monthName, format, strict) { + var i, + ii, + mom, + llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort( + mom, + '' + ).toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } } - if (definedClass && !!(definedClass = defined[definedClass])) { - condition.push(definedClass); + + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } } else { - throw new Error("Invalid class " + rule[0] + " for rule " + name); + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } } - condition.push(alias, constraint, refs); - conditions.push(condition); - identifiers.push(alias); - if (constraint) { - forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) { - identifiers.push(i); - }); + } + + function localeMonthsParse(monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); } - if (extd.isObject(refs)) { - for (var j in refs) { - var ident = refs[j]; - if (indexOf(identifiers, ident) === -1) { - identifiers.push(ident); - } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp( + '^' + this.months(mom, '').replace('.', '') + '$', + 'i' + ); + this._shortMonthsParse[i] = new RegExp( + '^' + this.monthsShort(mom, '').replace('.', '') + '$', + 'i' + ); + } + if (!strict && !this._monthsParse[i]) { + regex = + '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if ( + strict && + format === 'MMMM' && + this._longMonthsParse[i].test(monthName) + ) { + return i; + } else if ( + strict && + format === 'MMM' && + this._shortMonthsParse[i].test(monthName) + ) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; } } - }; + } - function parseRule(rule, conditions, identifiers, defined, name) { - if (rule.length) { - var r0 = rule[0]; - if (r0 === "not" || r0 === "exists") { - var temp = []; - rule.shift(); - __resolveRule(rule, identifiers, temp, defined, name); - var cond = temp[0]; - cond.unshift(r0); - conditions.push(cond); - } else if (r0 === "or") { - var conds = [r0]; - rule.shift(); - forEach(rule, function (cond) { - parseRule(cond, conds, identifiers, defined, name); - }); - conditions.push(conds); + // MOMENTS + + function setMonth(mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); } else { - __resolveRule(rule, identifiers, conditions, defined, name); - identifiers = removeDuplicates(identifiers); + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } } } + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; } - return function (obj, defined, scope) { - var name = obj.name; - if (extd.isEmpty(obj)) { - throw new Error("Rule is empty"); - } - var options = obj.options || {}; - options.scope = scope; - var constraints = obj.constraints || [], l = constraints.length; - if (!l) { - constraints = ["true"]; - } - var action = obj.action; - if (extd.isUndefined(action)) { - throw new Error("No action was defined for rule " + name); + function getSetMonth(value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); } - var conditions = [], identifiers = []; - forEach(constraints, function (rule) { - parseRule(rule, conditions, identifiers, defined, name); - }); - return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope)); - }; -})(); + } -exports.parse = function (src, file) { - //parse flow from file - return parser.parseRuleSet(src, file); + function getDaysInMonth() { + return daysInMonth(this.year(), this.month()); + } -}; -exports.compile = function (flowObj, options, cb, Container) { - if (extd.isFunction(options)) { - cb = options; - options = {}; - } else { - options = options || {}; + function monthsShortRegex(isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict + ? this._monthsShortStrictRegex + : this._monthsShortRegex; + } } - var name = flowObj.name || options.name; - //if !name throw an error - if (!name) { - throw new Error("Name must be present in JSON or options"); + + function monthsRegex(isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict + ? this._monthsStrictRegex + : this._monthsRegex; + } } - var flow = new Container(name); - var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {}); - if (typeof Buffer !== "undefined") { - defined.Buffer = Buffer; + + function computeMonthsParse() { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], + longPieces = [], + mixedPieces = [], + i, + mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp( + '^(' + longPieces.join('|') + ')', + 'i' + ); + this._monthsShortStrictRegex = new RegExp( + '^(' + shortPieces.join('|') + ')', + 'i' + ); } - var scope = merge({console: console}, options.scope); - //add the anything added to the scope as a property - forEach(flowObj.scope, function (s) { - scope[s.name] = true; - }); - //add any defined classes in the parsed flowObj to defined - forEach(flowObj.define, function (d) { - defined[d.name] = createDefined(d, defined, scope); - }); - //expose any defined classes to the flow. - extd(defined).forEach(function (cls, name) { - flow.addDefined(name, cls); - }); + // FORMATTING - var scopeNames = extd(flowObj.scope).pluck("name").union(extd(scope).keys().value()).value(); - var definedNames = map(keys(defined), function (s) { - return s; + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? zeroFill(y, 4) : '+' + y; }); - forEach(flowObj.scope, function (s) { - scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; }); - var rules = flowObj.rules; - if (rules.length) { - forEach(rules, function (rule) { - flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope)); - }); - } - if (cb) { - cb.call(flow, flow); - } - return flow; -}; -exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js").transpile; + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + // ALIASES + addUnitAlias('year', 'y'); + // PRIORITIES + addUnitPriority('year', 1); -/***/ }), + // PARSING -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js ***! - \*********************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - forEach = extd.forEach, - indexOf = extd.indexOf, - merge = extd.merge, - isString = extd.isString, - modifiers = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js").modifiers, - constraintMatcher = __webpack_require__(/*! ../constraintMatcher */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), - parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"); + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = + input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); -function definedToJs(options) { - /*jshint evil:true*/ - options = isString(options) ? new Function("return " + options + ";")() : options; - var ret = ["(function(){"], value; + // HELPERS - if (options.hasOwnProperty("constructor") && "function" === typeof options.constructor) { - ret.push("var Defined = " + options.constructor.toString() + ";"); - } else { - ret.push("var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};"); - } - ret.push("var proto = Defined.prototype;"); - for (var key in options) { - if (options.hasOwnProperty(key)) { - value = options[key]; - ret.push("proto." + key + " = " + (extd.isFunction(value) ? value.toString() : extd.format("%j", value)) + ";"); - } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; } - ret.push("return Defined;"); - ret.push("}())"); - return ret.join(""); -} + // HOOKS -function actionToJs(action, identifiers, defined, scope) { - var declares = [], usedVars = {}; - forEach(identifiers, function (i) { - if (action.indexOf(i) !== -1) { - usedVars[i] = true; - declares.push("var " + i + "= facts." + i + ";"); - } - }); - extd(defined).keys().forEach(function (i) { - if (action.indexOf(i) !== -1 && !usedVars[i]) { - usedVars[i] = true; - declares.push("var " + i + "= defined." + i + ";"); - } - }); + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - extd(scope).keys().forEach(function (i) { - if (action.indexOf(i) !== -1 && !usedVars[i]) { - usedVars[i] = true; - declares.push("var " + i + "= scope." + i + ";"); - } - }); - extd(modifiers).forEach(function (i) { - if (action.indexOf(i) !== -1 && !usedVars[i]) { - declares.push("var " + i + "= flow." + i + ";"); - } - }); - var params = ["facts", 'flow']; - if (/next\(.*\)/.test(action)) { - params.push("next"); - } - action = declares.join("") + action; - try { - return ["function(", params.join(","), "){", action, "}"].join(""); - } catch (e) { - throw new Error("Invalid action : " + action + "\n" + e.message); + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear() { + return isLeapYear(this.year()); } -} -function parseConstraintModifier(constraint, ret) { - if (constraint.length && extd.isString(constraint[0])) { - var modifier = constraint[0].match(" *(from)"); - if (modifier) { - modifier = modifier[0]; - switch (modifier) { - case "from": - ret.push(', "', constraint.shift(), '"'); - break; - default: - throw new Error("Unrecognized modifier " + modifier); + function createDate(y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date; + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + date = new Date(y + 400, m, d, h, M, s, ms); + if (isFinite(date.getFullYear())) { + date.setFullYear(y); } + } else { + date = new Date(y, m, d, h, M, s, ms); } + + return date; } -} -function parseConstraintHash(constraint, ret, identifiers) { - if (constraint.length && extd.isHash(constraint[0])) { - //ret of options - var refs = constraint.shift(); - extd(refs).values().forEach(function (ident) { - if (indexOf(identifiers, ident) === -1) { - identifiers.push(ident); + function createUTCDate(y) { + var date, args; + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + args = Array.prototype.slice.call(arguments); + // preserve leap years using a full 400 year cycle, then reset + args[0] = y + 400; + date = new Date(Date.UTC.apply(null, args)); + if (isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); } - }); - ret.push(',' + extd.format('%j', [refs])); + } else { + date = new Date(Date.UTC.apply(null, arguments)); + } + + return date; } -} -function constraintsToJs(constraint, identifiers) { - constraint = constraint.slice(0); - var ret = []; - if (constraint[0] === "or") { - ret.push('["' + constraint.shift() + '"'); - ret.push(extd.map(constraint,function (c) { - return constraintsToJs(c, identifiers); - }).join(",") + "]"); - return ret; - } else if (constraint[0] === "not" || constraint[0] === "exists") { - ret.push('"', constraint.shift(), '", '); + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; } - identifiers.push(constraint[1]); - ret.push(constraint[0], ', "' + constraint[1].replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + '"'); - constraint.splice(0, 2); - if (constraint.length) { - //constraint - var c = constraint.shift(); - if (extd.isString(c) && c) { - ret.push(',"' + c.replace(/\\/g, "\\\\").replace(/"/g, "\\\""), '"'); - forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) { - identifiers.push(i); - }); + + // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, + resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); } else { - ret.push(',"true"'); - constraint.unshift(c); + resYear = year; + resDayOfYear = dayOfYear; } - } - parseConstraintModifier(constraint, ret); - parseConstraintHash(constraint, ret, identifiers); - return '[' + ret.join("") + ']'; -} -exports.transpile = function (flowObj, options) { - options = options || {}; - var ret = []; - ret.push("(function(){"); - ret.push("return function(options){"); - ret.push("options = options || {};"); - ret.push("var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};"); - ret.push("var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}"); - var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {}); - if (typeof Buffer !== "undefined") { - defined.Buffer = Buffer; + return { + year: resYear, + dayOfYear: resDayOfYear, + }; } - var scope = merge({console: console}, options.scope); - ret.push(["return nools.flow('", options.name, "', function(){"].join("")); - //add any defined classes in the parsed flowObj to defined - ret.push(extd(flowObj.define || []).map(function (defined) { - var name = defined.name; - defined[name] = {}; - return ["var", name, "= defined." + name, "= this.addDefined('" + name + "',", definedToJs(defined.properties) + ");"].join(" "); - }).value().join("\n")); - ret.push(extd(flowObj.scope || []).map(function (s) { - var name = s.name; - scope[name] = {}; - return ["var", name, "= scope." + name, "= ", s.body, ";"].join(" "); - }).value().join("\n")); - ret.push("scope.console = console;\n"); + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, + resYear; - ret.push(extd(flowObj.rules || []).map(function (rule) { - var identifiers = [], ret = ["this.rule('", rule.name.replace(/'/g, "\\'"), "'"], options = extd.merge(rule.options || {}, {scope: "scope"}); - ret.push(",", extd.format("%j", [options]).replace(/(:"scope")/, ":scope")); - if (rule.constraints && !extd.isEmpty(rule.constraints)) { - ret.push(", ["); - ret.push(extd(rule.constraints).map(function (c) { - return constraintsToJs(c, identifiers); - }).value().join(",")); - ret.push("]"); + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; } - ret.push(",", actionToJs(rule.action, identifiers, defined, scope)); - ret.push(");"); - return ret.join(""); - }).value().join("")); - ret.push("});"); - ret.push("};"); - ret.push("}());"); - return ret.join(""); -}; + return { + week: resWeek, + year: resYear, + }; + } + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } + // FORMATTING -/***/ }), + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js ***! - \************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + // ALIASES -var map = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js").map; + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); -function salience(a, b) { - return a.rule.priority - b.rule.priority; -} + // PRIORITIES -function bucketCounter(a, b) { - return a.counter - b.counter; -} + addUnitPriority('week', 5); + addUnitPriority('isoWeek', 5); -function factRecency(a, b) { - /*jshint noempty: false*/ + // PARSING - var i = 0; - var aMatchRecency = a.match.recency, - bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1; - while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) { - } - var ret = aMatchRecency[i] - bMatchRecency[i]; - if (!ret) { - ret = aLength - bLength; - } - return ret; -} + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); -function activationRecency(a, b) { - return a.recency - b.recency; -} + addWeekParseToken(['w', 'ww', 'W', 'WW'], function ( + input, + week, + config, + token + ) { + week[token.substr(0, 1)] = toInt(input); + }); -var strategies = { - salience: salience, - bucketCounter: bucketCounter, - factRecency: factRecency, - activationRecency: activationRecency -}; + // HELPERS -exports.strategies = strategies; -exports.strategy = function (strats) { - strats = map(strats, function (s) { - return strategies[s]; - }); - var stratsLength = strats.length; + // LOCALES - return function (a, b) { - var i = -1, ret = 0; - var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode); - if (!equal) { - while (++i < stratsLength && !ret) { - ret = strats[i](a, b); - } - ret = ret > 0 ? 1 : -1; - } - return ret; - }; -}; + function localeWeek(mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } -/***/ }), + var defaultLocaleWeek = { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js ***! - \**************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + function localeFirstDayOfWeek() { + return this._week.dow; + } -"use strict"; + function localeFirstDayOfYear() { + return this._week.doy; + } + // MOMENTS -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - deepEqual = extd.deepEqual, - merge = extd.merge, - instanceOf = extd.instanceOf, - filter = extd.filter, - declare = extd.declare, - constraintMatcher; + function getSetWeek(input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } -var id = 0; -var Constraint = declare({ + function getSetISOWeek(input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } - type: null, + // FORMATTING - instance: { - constructor: function (constraint) { - if (!constraintMatcher) { - constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"); - } - this.id = id++; - this.constraint = constraint; - extd.bindAll(this, ["assert"]); - }, - "assert": function () { - throw new Error("not implemented"); - }, + addFormatToken('d', 0, 'do', 'day'); - getIndexableProperties: function () { - return []; - }, + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); - equal: function (constraint) { - return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && extd.deepEqual(this.constraint, constraint.constraint); - }, + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); - getters: { - variables: function () { - return [this.get("alias")]; - } - } + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); - } -}); + // ALIASES -Constraint.extend({ - instance: { + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); - type: "object", + // PRIORITY + addUnitPriority('day', 11); + addUnitPriority('weekday', 11); + addUnitPriority('isoWeekday', 11); - constructor: function (type) { - this._super([type]); - }, + // PARSING - "assert": function (param) { - return param instanceof this.constraint || param.constructor === this.constraint; - }, + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); - equal: function (constraint) { - return instanceOf(constraint, this._static) && this.constraint === constraint.constraint; + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; } - } -}).as(exports, "ObjectConstraint"); + }); -var EqualityConstraint = Constraint.extend({ + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); - instance: { + // HELPERS - type: "equality", + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } - constructor: function (constraint, options) { - this._super([constraint]); - options = options || {}; - this.pattern = options.pattern; - this._matcher = constraintMatcher.getMatcher(constraint, options, true); - }, + if (!isNaN(input)) { + return parseInt(input, 10); + } - "assert": function (values) { - return this._matcher(values); + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; } + + return null; } -}).as(exports, "EqualityConstraint"); -EqualityConstraint.extend({instance: {type: "inequality"}}).as(exports, "InequalityConstraint"); -EqualityConstraint.extend({instance: {type: "comparison"}}).as(exports, "ComparisonConstraint"); + function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; + } -Constraint.extend({ + // LOCALES + function shiftWeekdays(ws, n) { + return ws.slice(n, 7).concat(ws.slice(0, n)); + } - instance: { + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + defaultWeekdaysRegex = matchWord, + defaultWeekdaysShortRegex = matchWord, + defaultWeekdaysMinRegex = matchWord; - type: "equality", + function localeWeekdays(m, format) { + var weekdays = isArray(this._weekdays) + ? this._weekdays + : this._weekdays[ + m && m !== true && this._weekdays.isFormat.test(format) + ? 'format' + : 'standalone' + ]; + return m === true + ? shiftWeekdays(weekdays, this._week.dow) + : m + ? weekdays[m.day()] + : weekdays; + } - constructor: function () { - this._super([ - [true] - ]); - }, + function localeWeekdaysShort(m) { + return m === true + ? shiftWeekdays(this._weekdaysShort, this._week.dow) + : m + ? this._weekdaysShort[m.day()] + : this._weekdaysShort; + } - equal: function (constraint) { - return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias"); - }, + function localeWeekdaysMin(m) { + return m === true + ? shiftWeekdays(this._weekdaysMin, this._week.dow) + : m + ? this._weekdaysMin[m.day()] + : this._weekdaysMin; + } + function handleStrictParse$1(weekdayName, format, strict) { + var i, + ii, + mom, + llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; - "assert": function () { - return true; + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin( + mom, + '' + ).toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort( + mom, + '' + ).toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } } } -}).as(exports, "TrueConstraint"); -var ReferenceConstraint = Constraint.extend({ + function localeWeekdaysParse(weekdayName, format, strict) { + var i, mom, regex; - instance: { + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } - type: "reference", + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } - constructor: function (constraint, options) { - this.cache = {}; - this._super([constraint]); - options = options || {}; - this.values = []; - this.pattern = options.pattern; - this._options = options; - this._matcher = constraintMatcher.getMatcher(constraint, options, false); - }, + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already - "assert": function (fact, fh) { - try { - return this._matcher(fact, fh); - } catch (e) { - throw new Error("Error with evaluating pattern " + this.pattern + " " + e.message); + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp( + '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', + 'i' + ); + this._shortWeekdaysParse[i] = new RegExp( + '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', + 'i' + ); + this._minWeekdaysParse[i] = new RegExp( + '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', + 'i' + ); + } + if (!this._weekdaysParse[i]) { + regex = + '^' + + this.weekdays(mom, '') + + '|^' + + this.weekdaysShort(mom, '') + + '|^' + + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if ( + strict && + format === 'dddd' && + this._fullWeekdaysParse[i].test(weekdayName) + ) { + return i; + } else if ( + strict && + format === 'ddd' && + this._shortWeekdaysParse[i].test(weekdayName) + ) { + return i; + } else if ( + strict && + format === 'dd' && + this._minWeekdaysParse[i].test(weekdayName) + ) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; } + } + } - }, + // MOMENTS - merge: function (that) { - var ret = this; - if (that instanceof ReferenceConstraint) { - ret = new this._static([this.constraint, that.constraint, "and"], merge({}, this._options, this._options)); - ret._alias = this._alias || that._alias; - ret.vars = this.vars.concat(that.vars); - } - return ret; - }, + function getSetDayOfWeek(input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } - equal: function (constraint) { - return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint); - }, + function getSetLocaleDayOfWeek(input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + function getSetISODayOfWeek(input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } - getters: { - variables: function () { - return this.vars; - }, + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. - alias: function () { - return this._alias; - } - }, + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } - setters: { - alias: function (alias) { - this._alias = alias; - this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) { - return v !== alias; - }); + function weekdaysRegex(isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; } + return this._weekdaysStrictRegex && isStrict + ? this._weekdaysStrictRegex + : this._weekdaysRegex; } } -}).as(exports, "ReferenceConstraint"); - - -ReferenceConstraint.extend({ - instance: { - type: "reference_equality", - op: "eq", - getIndexableProperties: function () { - return constraintMatcher.getIndexableProperties(this.constraint); + function weekdaysShortRegex(isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict + ? this._weekdaysShortStrictRegex + : this._weekdaysShortRegex; } } -}).as(exports, "ReferenceEqualityConstraint") - .extend({instance: {type: "reference_inequality", op: "neq"}}).as(exports, "ReferenceInequalityConstraint") - .extend({instance: {type: "reference_gt", op: "gt"}}).as(exports, "ReferenceGTConstraint") - .extend({instance: {type: "reference_gte", op: "gte"}}).as(exports, "ReferenceGTEConstraint") - .extend({instance: {type: "reference_lt", op: "lt"}}).as(exports, "ReferenceLTConstraint") - .extend({instance: {type: "reference_lte", op: "lte"}}).as(exports, "ReferenceLTEConstraint"); - -Constraint.extend({ - instance: { + function weekdaysMinRegex(isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict + ? this._weekdaysMinStrictRegex + : this._weekdaysMinRegex; + } + } - type: "hash", + function computeWeekdaysParse() { + function cmpLenRev(a, b) { + return b.length - a.length; + } - constructor: function (hash) { - this._super([hash]); - }, + var minPieces = [], + shortPieces = [], + longPieces = [], + mixedPieces = [], + i, + mom, + minp, + shortp, + longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = regexEscape(this.weekdaysMin(mom, '')); + shortp = regexEscape(this.weekdaysShort(mom, '')); + longp = regexEscape(this.weekdays(mom, '')); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); - equal: function (constraint) { - return extd.instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && extd.deepEqual(this.constraint, constraint.constraint); - }, + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; - "assert": function () { - return true; - }, + this._weekdaysStrictRegex = new RegExp( + '^(' + longPieces.join('|') + ')', + 'i' + ); + this._weekdaysShortStrictRegex = new RegExp( + '^(' + shortPieces.join('|') + ')', + 'i' + ); + this._weekdaysMinStrictRegex = new RegExp( + '^(' + minPieces.join('|') + ')', + 'i' + ); + } - getters: { - variables: function () { - return this.constraint; - } - } + // FORMATTING + function hFormat() { + return this.hours() % 12 || 12; } -}).as(exports, "HashConstraint"); - -Constraint.extend({ - instance: { - constructor: function (constraints, options) { - this.type = "from"; - this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true); - extd.bindAll(this, ["assert"]); - }, - equal: function (constraint) { - return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && deepEqual(this.constraints, constraint.constraints); - }, + function kFormat() { + return this.hours() || 24; + } - "assert": function (fact, fh) { - return this.constraints(fact, fh); - }, + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); - getters: { - variables: function () { - return this.constraint; - } - } + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); - } -}).as(exports, "FromConstraint"); + addFormatToken('hmmss', 0, 0, function () { + return ( + '' + + hFormat.apply(this) + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); + }); -Constraint.extend({ - instance: { - constructor: function (func, options) { - this.type = "custom"; - this.fn = func; - this.options = options; - extd.bindAll(this, ["assert"]); - }, + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); - equal: function (constraint) { - return instanceOf(constraint, this._static) && this.fn === constraint.constraint; - }, + addFormatToken('Hmmss', 0, 0, function () { + return ( + '' + + this.hours() + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); + }); - "assert": function (fact, fh) { - return this.fn(fact, fh); - } + function meridiem(token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem( + this.hours(), + this.minutes(), + lowercase + ); + }); } -}).as(exports, "CustomConstraint"); + meridiem('a', true); + meridiem('A', false); + // ALIASES + addUnitAlias('hour', 'h'); -/***/ }), + // PRIORITY + addUnitPriority('hour', 13); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js ***! - \*********************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + // PARSING -"use strict"; + function matchMeridiem(isStrict, locale) { + return locale._meridiemParse; + } + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + addRegexToken('kk', match1to2, match2); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - isArray = extd.isArray, - forEach = extd.forEach, - some = extd.some, - indexOf = extd.indexOf, - isNumber = extd.isNumber, - removeDups = extd.removeDuplicates, - atoms = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"); + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); -function getProps(val) { - return extd(val).map(function mapper(val) { - return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(".") : val; - }).flatten().filter(function (v) { - return !!v; + addParseToken(['H', 'HH'], HOUR); + addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; + }); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4, + pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4, + pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); }); -} -var definedFuncs = { - indexOf: extd.indexOf, - now: function () { - return new Date(); - }, + // LOCALES - Date: function (y, m, d, h, min, s, ms) { - var date = new Date(); - if (isNumber(y)) { - date.setYear(y); - } - if (isNumber(m)) { - date.setMonth(m); - } - if (isNumber(d)) { - date.setDate(d); - } - if (isNumber(h)) { - date.setHours(h); - } - if (isNumber(min)) { - date.setMinutes(min); - } - if (isNumber(s)) { - date.setSeconds(s); - } - if (isNumber(ms)) { - date.setMilliseconds(ms); - } - return date; - }, + function localeIsPM(input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return (input + '').toLowerCase().charAt(0) === 'p'; + } - lengthOf: function (arr, length) { - return arr.length === length; - }, + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, + // Setting the hour should keep the time, because the user explicitly + // specified which hour they want. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + getSetHour = makeGetSet('Hours', true); - isTrue: function (val) { - return val === true; - }, + function localeMeridiem(hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } - isFalse: function (val) { - return val === false; - }, + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, - isNotNull: function (actual) { - return actual !== null; - }, + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, - dateCmp: function (dt1, dt2) { - return extd.compare(dt1, dt2); - } + week: defaultLocaleWeek, -}; + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, -forEach(["years", "days", "months", "hours", "minutes", "seconds"], function (k) { - definedFuncs[k + "FromNow"] = extd[k + "FromNow"]; - definedFuncs[k + "Ago"] = extd[k + "Ago"]; -}); + meridiemParse: defaultLocaleMeridiemParse, + }; + // internal storage for locale config files + var locales = {}, + localeFamilies = {}, + globalLocale; -forEach(["isArray", "isNumber", "isHash", "isObject", "isDate", "isBoolean", "isString", "isRegExp", "isNull", "isEmpty", - "isUndefined", "isDefined", "isUndefinedOrNull", "isPromiseLike", "isFunction", "deepEqual"], function (k) { - var m = extd[k]; - definedFuncs[k] = function () { - return m.apply(extd, arguments); - }; -}); + function commonPrefix(arr1, arr2) { + var i, + minl = Math.min(arr1.length, arr2.length); + for (i = 0; i < minl; i += 1) { + if (arr1[i] !== arr2[i]) { + return i; + } + } + return minl; + } + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } -var lang = { + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, + j, + next, + locale, + split; - equal: function (c1, c2) { - var ret = false; - if (c1 === c2) { - ret = true; - } else { - if (c1[2] === c2[2]) { - if (indexOf(["string", "number", "boolean", "regexp", "identifier", "null"], c1[2]) !== -1) { - ret = c1[0] === c2[0]; - } else if (c1[2] === "unary" || c1[2] === "logicalNot") { - ret = this.equal(c1[0], c2[0]); - } else { - ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]); + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; } + if ( + next && + next.length >= j && + commonPrefix(split, next) >= j - 1 + ) { + //the next array item is better than a shallower substring of this one + break; + } + j--; } + i++; } - return ret; - }, + return globalLocale; + } - __getProperties: function (rule) { - var ret = []; - if (rule) { - var rule2 = rule[2]; - if (!rule2) { - return ret; + function loadLocale(name) { + var oldLocale = null, + aliasedRequire; + // TODO: Find a better way to register and load all the locales in Node + if ( + locales[name] === undefined && + "object" !== 'undefined' && + module && + module.exports + ) { + try { + oldLocale = globalLocale._abbr; + aliasedRequire = undefined; + __webpack_require__("./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name); + getSetGlobalLocale(oldLocale); + } catch (e) { + // mark as not found to avoid repeating expensive file require call causing high CPU + // when trying to find en-US, en_US, en-us for every format call + locales[name] = null; // null means not found } - if (rule2 !== "prop" && - rule2 !== "identifier" && - rule2 !== "string" && - rule2 !== "number" && - rule2 !== "boolean" && - rule2 !== "regexp" && - rule2 !== "unary" && - rule2 !== "unary") { - ret[0] = this.__getProperties(rule[0]); - ret[1] = this.__getProperties(rule[1]); - } else if (rule2 === "identifier") { - //at the bottom - ret = [rule[0]]; + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function getSetGlobalLocale(key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); } else { - ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0])); + data = defineLocale(key, values); } - } - return ret; - }, - getIndexableProperties: function (rule) { - if (rule[2] === "composite") { - return this.getIndexableProperties(rule[0]); - } else if (/^(\w+(\['[^']*'])*) *([!=]==?|[<>]=?) (\w+(\['[^']*'])*)$/.test(this.parse(rule))) { - return getProps(this.__getProperties(rule)).flatten().value(); - } else { - return []; + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } else { + if (typeof console !== 'undefined' && console.warn) { + //warn user if arguments are passed but the locale could not be set + console.warn( + 'Locale ' + key + ' not found. Did you forget to load it?' + ); + } + } } - }, - getIdentifiers: function (rule) { - var ret = []; - var rule2 = rule[2]; + return globalLocale._abbr; + } - if (rule2 === "identifier") { - //its an identifier so stop - return [rule[0]]; - } else if (rule2 === "function") { - ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1])); - } else if (rule2 !== "string" && - rule2 !== "number" && - rule2 !== "boolean" && - rule2 !== "regexp" && - rule2 !== "unary" && - rule2 !== "unary") { - //its an expression so keep going - if (rule2 === "prop") { - ret = ret.concat(this.getIdentifiers(rule[0])); - if (rule[1]) { - var propChain = rule[1]; - //go through the member variables and collect any identifiers that may be in functions - while (isArray(propChain)) { - if (propChain[2] === "function") { - ret = ret.concat(this.getIdentifiers(propChain[1])); - break; - } else { - propChain = propChain[1]; + function defineLocale(name, config) { + if (config !== null) { + var locale, + parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple( + 'defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' + ); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + locale = loadLocale(config.parentLocale); + if (locale != null) { + parentConfig = locale._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; } + localeFamilies[config.parentLocale].push({ + name: name, + config: config, + }); + return null; } } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); - } else { - if (rule[0]) { - ret = ret.concat(this.getIdentifiers(rule[0])); - } - if (rule[1]) { - ret = ret.concat(this.getIdentifiers(rule[1])); - } + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); } - } - //remove dups and return - return removeDups(ret); - }, - toConstraints: function (rule, options) { - var ret = [], - alias = options.alias, - scope = options.scope || {}; + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); - var rule2 = rule[2]; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + function updateLocale(name, config) { + if (config != null) { + var locale, + tmpLocale, + parentConfig = baseConfig; - if (rule2 === "and") { - ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options)); - } else if ( - rule2 === "composite" || - rule2 === "or" || - rule2 === "lt" || - rule2 === "gt" || - rule2 === "lte" || - rule2 === "gte" || - rule2 === "like" || - rule2 === "notLike" || - rule2 === "eq" || - rule2 === "neq" || - rule2 === "seq" || - rule2 === "sneq" || - rule2 === "in" || - rule2 === "notIn" || - rule2 === "prop" || - rule2 === "propLookup" || - rule2 === "function" || - rule2 === "logicalNot") { - var isReference = some(this.getIdentifiers(rule), function (i) { - return i !== alias && !(i in definedFuncs) && !(i in scope); - }); - switch (rule2) { - case "eq": - ret.push(new atoms[isReference ? "ReferenceEqualityConstraint" : "EqualityConstraint"](rule, options)); - break; - case "seq": - ret.push(new atoms[isReference ? "ReferenceEqualityConstraint" : "EqualityConstraint"](rule, options)); - break; - case "neq": - ret.push(new atoms[isReference ? "ReferenceInequalityConstraint" : "InequalityConstraint"](rule, options)); - break; - case "sneq": - ret.push(new atoms[isReference ? "ReferenceInequalityConstraint" : "InequalityConstraint"](rule, options)); - break; - case "gt": - ret.push(new atoms[isReference ? "ReferenceGTConstraint" : "ComparisonConstraint"](rule, options)); - break; - case "gte": - ret.push(new atoms[isReference ? "ReferenceGTEConstraint" : "ComparisonConstraint"](rule, options)); - break; - case "lt": - ret.push(new atoms[isReference ? "ReferenceLTConstraint" : "ComparisonConstraint"](rule, options)); - break; - case "lte": - ret.push(new atoms[isReference ? "ReferenceLTEConstraint" : "ComparisonConstraint"](rule, options)); - break; - default: - ret.push(new atoms[isReference ? "ReferenceConstraint" : "ComparisonConstraint"](rule, options)); + if (locales[name] != null && locales[name].parentLocale != null) { + // Update existing child locale in-place to avoid memory-leaks + locales[name].set(mergeConfigs(locales[name]._config, config)); + } else { + // MERGE + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + if (tmpLocale == null) { + // updateLocale is called for creating a new locale + // Set abbr so it will have a name (getters return + // undefined otherwise). + config.abbr = name; + } + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; } + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + if (name === getSetGlobalLocale()) { + getSetGlobalLocale(name); + } + } else if (locales[name] != null) { + delete locales[name]; + } + } } - return ret; - }, - - - parse: function (rule) { - return this[rule[2]](rule[0], rule[1]); - }, - - composite: function (lhs) { - return this.parse(lhs); - }, - - and: function (lhs, rhs) { - return ["(", this.parse(lhs), "&&", this.parse(rhs), ")"].join(" "); - }, + return locales[name]; + } - or: function (lhs, rhs) { - return ["(", this.parse(lhs), "||", this.parse(rhs), ")"].join(" "); - }, + // returns locale data + function getLocale(key) { + var locale; - prop: function (name, prop) { - if (prop[2] === "function") { - return [this.parse(name), this.parse(prop)].join("."); - } else { - return [this.parse(name), "['", this.parse(prop), "']"].join(""); + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; } - }, - propLookup: function (name, prop) { - if (prop[2] === "function") { - return [this.parse(name), this.parse(prop)].join("."); - } else { - return [this.parse(name), "[", this.parse(prop), "]"].join(""); + if (!key) { + return globalLocale; } - }, - - unary: function (lhs) { - return -1 * this.parse(lhs); - }, - plus: function (lhs, rhs) { - return [this.parse(lhs), "+", this.parse(rhs)].join(" "); - }, - minus: function (lhs, rhs) { - return [this.parse(lhs), "-", this.parse(rhs)].join(" "); - }, + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } - mult: function (lhs, rhs) { - return [this.parse(lhs), "*", this.parse(rhs)].join(" "); - }, + return chooseLocale(key); + } - div: function (lhs, rhs) { - return [this.parse(lhs), "/", this.parse(rhs)].join(" "); - }, + function listLocales() { + return keys(locales); + } - mod: function (lhs, rhs) { - return [this.parse(lhs), "%", this.parse(rhs)].join(" "); - }, + function checkOverflow(m) { + var overflow, + a = m._a; - lt: function (lhs, rhs) { - return [this.parse(lhs), "<", this.parse(rhs)].join(" "); - }, - gt: function (lhs, rhs) { - return [this.parse(lhs), ">", this.parse(rhs)].join(" "); - }, - lte: function (lhs, rhs) { - return [this.parse(lhs), "<=", this.parse(rhs)].join(" "); - }, - gte: function (lhs, rhs) { - return [this.parse(lhs), ">=", this.parse(rhs)].join(" "); - }, - like: function (lhs, rhs) { - return [this.parse(rhs), ".test(", this.parse(lhs), ")"].join(""); - }, - notLike: function (lhs, rhs) { - return ["!", this.parse(rhs), ".test(", this.parse(lhs), ")"].join(""); - }, - eq: function (lhs, rhs) { - return [this.parse(lhs), "==", this.parse(rhs)].join(" "); - }, + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 + ? MONTH + : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) + ? DATE + : a[HOUR] < 0 || + a[HOUR] > 24 || + (a[HOUR] === 24 && + (a[MINUTE] !== 0 || + a[SECOND] !== 0 || + a[MILLISECOND] !== 0)) + ? HOUR + : a[MINUTE] < 0 || a[MINUTE] > 59 + ? MINUTE + : a[SECOND] < 0 || a[SECOND] > 59 + ? SECOND + : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 + ? MILLISECOND + : -1; - seq: function (lhs, rhs) { - return [this.parse(lhs), "===", this.parse(rhs)].join(" "); - }, + if ( + getParsingFlags(m)._overflowDayOfYear && + (overflow < YEAR || overflow > DATE) + ) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } - neq: function (lhs, rhs) { - return [this.parse(lhs), "!=", this.parse(rhs)].join(" "); - }, + getParsingFlags(m).overflow = overflow; + } - sneq: function (lhs, rhs) { - return [this.parse(lhs), "!==", this.parse(rhs)].join(" "); - }, + return m; + } - "in": function (lhs, rhs) { - return ["(indexOf(", this.parse(rhs), ",", this.parse(lhs), ")) != -1"].join(""); - }, + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/], + ['YYYYMM', /\d{6}/, false], + ['YYYY', /\d{4}/, false], + ], + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/], + ], + aspNetJsonRegex = /^\/?Date\((-?\d+)/i, + // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 + rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, + obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60, + }; - "notIn": function (lhs, rhs) { - return ["(indexOf(", this.parse(rhs), ",", this.parse(lhs), ")) == -1"].join(""); - }, + // date from iso format + function configFromISO(config) { + var i, + l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, + dateFormat, + timeFormat, + tzFormat; - "arguments": function (lhs, rhs) { - var ret = []; - if (lhs) { - ret.push(this.parse(lhs)); - } - if (rhs) { - ret.push(this.parse(rhs)); - } - return ret.join(","); - }, + if (match) { + getParsingFlags(config).iso = true; - "array": function (lhs) { - var args = []; - if (lhs) { - args = this.parse(lhs); - if (isArray(args)) { - return args; - } else { - return ["[", args, "]"].join(""); + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; } - return ["[", args.join(","), "]"].join(""); - }, - - "function": function (lhs, rhs) { - var args = this.parse(rhs); - return [this.parse(lhs), "(", args, ")"].join(""); - }, - - "string": function (lhs) { - return "'" + lhs + "'"; - }, + } - "number": function (lhs) { - return lhs; - }, + function extractFromRFC2822Strings( + yearStr, + monthStr, + dayStr, + hourStr, + minuteStr, + secondStr + ) { + var result = [ + untruncateYear(yearStr), + defaultLocaleMonthsShort.indexOf(monthStr), + parseInt(dayStr, 10), + parseInt(hourStr, 10), + parseInt(minuteStr, 10), + ]; - "boolean": function (lhs) { - return lhs; - }, + if (secondStr) { + result.push(parseInt(secondStr, 10)); + } - regexp: function (lhs) { - return lhs; - }, + return result; + } - identifier: function (lhs) { - return lhs; - }, + function untruncateYear(yearStr) { + var year = parseInt(yearStr, 10); + if (year <= 49) { + return 2000 + year; + } else if (year <= 999) { + return 1900 + year; + } + return year; + } - "null": function () { - return "null"; - }, + function preprocessRFC2822(s) { + // Remove comments and folding whitespace and replace multiple-spaces with a single space + return s + .replace(/\([^)]*\)|[\n\t]/g, ' ') + .replace(/(\s\s+)/g, ' ') + .replace(/^\s\s*/, '') + .replace(/\s\s*$/, ''); + } - logicalNot: function (lhs) { - return ["!(", this.parse(lhs), ")"].join(""); + function checkWeekday(weekdayStr, parsedInput, config) { + if (weekdayStr) { + // TODO: Replace the vanilla JS Date object with an independent day-of-week check. + var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), + weekdayActual = new Date( + parsedInput[0], + parsedInput[1], + parsedInput[2] + ).getDay(); + if (weekdayProvided !== weekdayActual) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return false; + } + } + return true; } -}; -var matcherCount = 0; -var toJs = exports.toJs = function (rule, scope, alias, equality, wrap) { - /*jshint evil:true*/ - var js = lang.parse(rule); - scope = scope || {}; - var vars = lang.getIdentifiers(rule); - var closureVars = ["var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;"], funcVars = []; - extd(vars).filter(function (v) { - var ret = ["var ", v, " = "]; - if (definedFuncs.hasOwnProperty(v)) { - ret.push("definedFuncs['", v, "']"); - } else if (scope.hasOwnProperty(v)) { - ret.push("scope['", v, "']"); + function calculateOffset(obsOffset, militaryOffset, numOffset) { + if (obsOffset) { + return obsOffsets[obsOffset]; + } else if (militaryOffset) { + // the only allowed military tz is Z + return 0; } else { - return true; - } - ret.push(";"); - closureVars.push(ret.join("")); - return false; - }).forEach(function (v) { - var ret = ["var ", v, " = "]; - if (equality || v !== alias) { - ret.push("fact." + v); - } else if (v === alias) { - ret.push("hash.", v, ""); + var hm = parseInt(numOffset, 10), + m = hm % 100, + h = (hm - m) / 100; + return h * 60 + m; } - ret.push(";"); - funcVars.push(ret.join("")); - }); - var closureBody = closureVars.join("") + "return function matcher" + (matcherCount++) + (!equality ? "(fact, hash){" : "(fact){") + funcVars.join("") + " return " + (wrap ? wrap(js) : js) + ";}"; - var f = new Function("definedFuncs, scope", closureBody)(definedFuncs, scope); - //console.log(f.toString()); - return f; -}; - -exports.getMatcher = function (rule, options, equality) { - options = options || {}; - return toJs(rule, options.scope, options.alias, equality, function (src) { - return "!!(" + src + ")"; - }); -}; - -exports.getSourceMatcher = function (rule, options, equality) { - options = options || {}; - return toJs(rule, options.scope, options.alias, equality, function (src) { - return src; - }); -}; - -exports.toConstraints = function (constraint, options) { - if (typeof constraint === 'function') { - return [new atoms.CustomConstraint(constraint, options)]; } - //constraint.split("&&") - return lang.toConstraints(constraint, options); -}; - -exports.equal = function (c1, c2) { - return lang.equal(c1, c2); -}; - -exports.getIdentifiers = function (constraint) { - return lang.getIdentifiers(constraint); -}; -exports.getIndexableProperties = function (constraint) { - return lang.getIndexableProperties(constraint); -}; + // date and time from ref 2822 format + function configFromRFC2822(config) { + var match = rfc2822.exec(preprocessRFC2822(config._i)), + parsedArray; + if (match) { + parsedArray = extractFromRFC2822Strings( + match[4], + match[3], + match[2], + match[5], + match[6], + match[7] + ); + if (!checkWeekday(match[1], parsedArray, config)) { + return; + } -/***/ }), + config._a = parsedArray; + config._tzm = calculateOffset(match[8], match[9], match[10]); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + config._d = createUTCDate.apply(null, config._a); + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); -"use strict"; -/* module decorator */ module = __webpack_require__.nmd(module); + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } + } -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - isBoolean = extd.isBoolean, - declare = extd.declare, - indexOf = extd.indexOf, - pPush = Array.prototype.push; + // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } -function createContextHash(paths, hashCode) { - var ret = "", - i = -1, - l = paths.length; - while (++i < l) { - ret += paths[i].id + ":"; - } - ret += hashCode; - return ret; -} + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } -function merge(h1, h2, aliases) { - var i = -1, l = aliases.length, alias; - while (++i < l) { - alias = aliases[i]; - h1[alias] = h2[alias]; - } -} + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } -function unionRecency(arr, arr1, arr2) { - pPush.apply(arr, arr1); - var i = -1, l = arr2.length, val, j = arr.length; - while (++i < l) { - val = arr2[i]; - if (indexOf(arr, val) === -1) { - arr[j++] = val; + if (config._strict) { + config._isValid = false; + } else { + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); } } -} -var Match = declare({ - instance: { + hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); - isMatch: true, - hashCode: "", - facts: null, - factIds: null, - factHash: null, - recency: null, - aliases: null, + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } - constructor: function () { - this.facts = []; - this.factIds = []; - this.factHash = {}; - this.recency = []; - this.aliases = []; - }, + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [ + nowValue.getUTCFullYear(), + nowValue.getUTCMonth(), + nowValue.getUTCDate(), + ]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } - addFact: function (assertable) { - pPush.call(this.facts, assertable); - pPush.call(this.recency, assertable.recency); - pPush.call(this.factIds, assertable.id); - this.hashCode = this.factIds.join(":"); - return this; - }, + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray(config) { + var i, + date, + input = [], + currentDate, + expectedWeekday, + yearToUse; - merge: function (mr) { - var ret = new Match(); - ret.isMatch = mr.isMatch; - pPush.apply(ret.facts, this.facts); - pPush.apply(ret.facts, mr.facts); - pPush.apply(ret.aliases, this.aliases); - pPush.apply(ret.aliases, mr.aliases); - ret.hashCode = this.hashCode + ":" + mr.hashCode; - merge(ret.factHash, this.factHash, this.aliases); - merge(ret.factHash, mr.factHash, mr.aliases); - unionRecency(ret.recency, this.recency, mr.recency); - return ret; + if (config._d) { + return; } - } -}); -var Context = declare({ - instance: { - match: null, - factHash: null, - aliases: null, - fact: null, - hashCode: null, - paths: null, - pathsHash: null, + currentDate = currentDateArray(config); - constructor: function (fact, paths, mr) { - this.fact = fact; - if (mr) { - this.match = mr; - } else { - this.match = new Match().addFact(fact); - } - this.factHash = this.match.factHash; - this.aliases = this.match.aliases; - this.hashCode = this.match.hashCode; - if (paths) { - this.paths = paths; - this.pathsHash = createContextHash(paths, this.hashCode); - } else { - this.pathsHash = this.hashCode; - } - }, + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - "set": function (key, value) { - this.factHash[key] = value; - this.aliases.push(key); - return this; - }, + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - isMatch: function (isMatch) { - if (isBoolean(isMatch)) { - this.match.isMatch = isMatch; - } else { - return this.match.isMatch; + if ( + config._dayOfYear > daysInYear(yearToUse) || + config._dayOfYear === 0 + ) { + getParsingFlags(config)._overflowDayOfYear = true; } - return this; - }, - - mergeMatch: function (merge) { - var match = this.match = this.match.merge(merge); - this.factHash = match.factHash; - this.hashCode = match.hashCode; - this.aliases = match.aliases; - return this; - }, - clone: function (fact, paths, match) { - return new Context(fact || this.fact, paths || this.path, match || this.match); + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); } - } -}).as(module); + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = + config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; + } + // Check for 24:00:00.000 + if ( + config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0 + ) { + config._nextDay = true; + config._a[HOUR] = 0; + } -/***/ }), + config._d = (config._useUTC ? createUTCDate : createDate).apply( + null, + input + ); + expectedWeekday = config._useUTC + ? config._d.getUTCDay() + : config._d.getDay(); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } -/* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - Promise = extd.Promise, - nextTick = __webpack_require__(/*! ./nextTick */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js"), - isPromiseLike = extd.isPromiseLike; + if (config._nextDay) { + config._a[HOUR] = 24; + } -Promise.extend({ - instance: { + // check for mismatching day of week + if ( + config._w && + typeof config._w.d !== 'undefined' && + config._w.d !== expectedWeekday + ) { + getParsingFlags(config).weekdayMismatch = true; + } + } - looping: false, + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; - constructor: function (flow, matchUntilHalt) { - this._super([]); - this.flow = flow; - this.agenda = flow.agenda; - this.rootNode = flow.rootNode; - this.matchUntilHalt = !!(matchUntilHalt); - extd.bindAll(this, ["onAlter", "callNext"]); - }, + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - halt: function () { - this.__halted = true; - if (!this.looping) { - this.callback(); + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults( + w.GG, + config._a[YEAR], + weekOfYear(createLocal(), 1, 4).year + ); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; } - }, + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - onAlter: function () { - this.flowAltered = true; - if (!this.looping && this.matchUntilHalt && !this.__halted) { - this.callNext(); - } - }, + curWeek = weekOfYear(createLocal(), dow, doy); - setup: function () { - var flow = this.flow; - this.rootNode.resetCounter(); - flow.on("assert", this.onAlter); - flow.on("modify", this.onAlter); - flow.on("retract", this.onAlter); - }, + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - tearDown: function () { - var flow = this.flow; - flow.removeListener("assert", this.onAlter); - flow.removeListener("modify", this.onAlter); - flow.removeListener("retract", this.onAlter); - }, + // Default to current week. + week = defaults(w.w, curWeek.week); - __handleAsyncNext: function (next) { - var self = this, agenda = self.agenda; - return next.then(function () { - self.looping = false; - if (!agenda.isEmpty()) { - if (self.flowAltered) { - self.rootNode.incrementCounter(); - self.flowAltered = false; - } - if (!self.__halted) { - self.callNext(); - } else { - self.callback(); - } - } else if (!self.matchUntilHalt || self.__halted) { - self.callback(); + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; } - self = null; - }, this.errback); - }, - - __handleSyncNext: function (next) { - this.looping = false; - if (!this.agenda.isEmpty()) { - if (this.flowAltered) { - this.rootNode.incrementCounter(); - this.flowAltered = false; + } else if (w.e != null) { + // local weekday -- counting starts from beginning of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; } + } else { + // default to beginning of week + weekday = dow; } - if (next && !this.__halted) { - nextTick(this.callNext); - } else if (!this.matchUntilHalt || this.__halted) { - this.callback(); - } - return next; - }, - - callback: function () { - this.tearDown(); - this._super(arguments); - }, - - - callNext: function () { - this.looping = true; - var next = this.agenda.fireNext(); - return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next); - }, - - execute: function () { - this.setup(); - this.callNext(); - return this; + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } } -}).as(module); -/***/ }), + // constant that refers to the ISO standard + hooks.ISO_8601 = function () {}; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // constant that refers to the RFC 2822 form + hooks.RFC_2822 = function () {}; -var arr = __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js"), - unique = arr.unique, - indexOf = arr.indexOf, - map = arr.map, - pSlice = Array.prototype.slice, - pSplice = Array.prototype.splice; + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; -function plucked(prop) { - var exec = prop.match(/(\w+)\(\)$/); - if (exec) { - prop = exec[1]; - return function (item) { - return item[prop](); - }; - } else { - return function (item) { - return item[prop]; - }; - } -} + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, + parsedInput, + tokens, + token, + skipped, + stringLength = string.length, + totalParsedInputLength = 0, + era; -function plucker(prop) { - prop = prop.split("."); - if (prop.length === 1) { - return plucked(prop[0]); - } else { - var pluckers = map(prop, function (prop) { - return plucked(prop); - }); - var l = pluckers.length; - return function (item) { - var i = -1, res = item; - while (++i < l) { - res = pluckers[i](res); + tokens = + expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || + [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice( + string.indexOf(parsedInput) + parsedInput.length + ); + totalParsedInputLength += parsedInput.length; } - return res; - }; - } -} + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } -function intersection(a, b) { - a = pSlice.call(a); - var aOne, i = -1, l; - l = a.length; - while (++i < l) { - aOne = a[i]; - if (indexOf(b, aOne) === -1) { - pSplice.call(a, i--, 1); - l--; + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = + stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); } - } - return a; -} -function inPlaceIntersection(a, b) { - var aOne, i = -1, l; - l = a.length; - while (++i < l) { - aOne = a[i]; - if (indexOf(b, aOne) === -1) { - pSplice.call(a, i--, 1); - l--; + // clear _12h flag if hour is <= 12 + if ( + config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0 + ) { + getParsingFlags(config).bigHour = undefined; } - } - return a; -} -function inPlaceDifference(a, b) { - var aOne, i = -1, l; - l = a.length; - while (++i < l) { - aOne = a[i]; - if (indexOf(b, aOne) !== -1) { - pSplice.call(a, i--, 1); - l--; + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap( + config._locale, + config._a[HOUR], + config._meridiem + ); + + // handle era + era = getParsingFlags(config).era; + if (era !== null) { + config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); } + + configFromArray(config); + checkOverflow(config); } - return a; -} -function diffArr(arr1, arr2) { - var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found; - if (l2 > l1) { - ret = arr1.slice(); - while (++i < l2) { - a = arr2[i]; - j = -1; - l1 = ret.length; - while (++j < l1) { - if (ret[j] === a) { - ret.splice(j, 1); - break; - } - } + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; } - } else { - while (++i < l1) { - a = arr1[i]; - j = -1; - found = false; - while (++j < l2) { - if (arr2[j] === a) { - found = true; - break; - } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; } - if (!found) { - ret.push(a); + if (!isPm && hour === 12) { + hour = 0; } + return hour; + } else { + // this is not supposed to happen + return hour; } } - return ret; -} -function diffHash(h1, h2) { - var ret = {}; - for (var i in h1) { - if (!hasOwnProperty.call(h2, i)) { - ret[i] = h1[i]; + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + scoreToBeat, + i, + currentScore, + validFormatFound, + bestFormatIsValid = false; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; } - } - return ret; -} + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + validFormatFound = false; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); -function union(arr1, arr2) { - return unique(arr1.concat(arr2)); -} + if (isValid(tempConfig)) { + validFormatFound = true; + } -module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js")() - .register(__webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js")) - .register(arr) - .register(__webpack_require__(/*! object-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js")) - .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js")) - .register(__webpack_require__(/*! promise-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js")) - .register(__webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js")) - .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js")) - .register("intersection", intersection) - .register("inPlaceIntersection", inPlaceIntersection) - .register("inPlaceDifference", inPlaceDifference) - .register("diffArr", diffArr) - .register("diffHash", diffHash) - .register("unionArr", union) - .register("plucker", plucker) - .register("HashTable", __webpack_require__(/*! ht */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js")) - .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js")) - .register(__webpack_require__(/*! leafy */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js")) - .register("LinkedList", __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js")); + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + getParsingFlags(tempConfig).score = currentScore; -/***/ }), + if (!bestFormatIsValid) { + if ( + scoreToBeat == null || + currentScore < scoreToBeat || + validFormatFound + ) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + if (validFormatFound) { + bestFormatIsValid = true; + } + } + } else { + if (currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + extend(config, bestMoment || tempConfig); + } -"use strict"; + function configFromObject(config) { + if (config._d) { + return; + } -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - bind = extd.bind, - declare = extd.declare, - nodes = __webpack_require__(/*! ./nodes */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js"), - EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter, - wm = __webpack_require__(/*! ./workingMemory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js"), - WorkingMemory = wm.WorkingMemory, - ExecutionStragegy = __webpack_require__(/*! ./executionStrategy */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js"), - AgendaTree = __webpack_require__(/*! ./agenda */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js"); + var i = normalizeObjectUnits(config._i), + dayOrDate = i.day === undefined ? i.date : i.day; + config._a = map( + [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], + function (obj) { + return obj && parseInt(obj, 10); + } + ); -module.exports = declare(EventEmitter, { + configFromArray(config); + } - instance: { + function createFromConfig(config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - name: null, + return res; + } - executionStrategy: null, + function prepareConfig(config) { + var input = config._i, + format = config._f; - constructor: function (name, conflictResolutionStrategy) { - this.env = null; - this.name = name; - this.__rules = {}; - this.conflictResolutionStrategy = conflictResolutionStrategy; - this.workingMemory = new WorkingMemory(); - this.agenda = new AgendaTree(this, conflictResolutionStrategy); - this.agenda.on("fire", bind(this, "emit", "fire")); - this.agenda.on("focused", bind(this, "emit", "focused")); - this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda); - extd.bindAll(this, "halt", "assert", "retract", "modify", "focus", - "emit", "getFacts", "getFact"); - }, + config._locale = config._locale || getLocale(config._l); - getFacts: function (Type) { - var ret; - if (Type) { - ret = this.workingMemory.getFactsByType(Type); - } else { - ret = this.workingMemory.getFacts(); - } - return ret; - }, + if (input === null || (format === undefined && input === '')) { + return createInvalid({ nullInput: true }); + } - getFact: function (Type) { - var ret; - if (Type) { - ret = this.workingMemory.getFactsByType(Type); - } else { - ret = this.workingMemory.getFacts(); - } - return ret && ret[0]; - }, + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - focus: function (focused) { - this.agenda.setFocus(focused); - return this; - }, + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } - halt: function () { - this.executionStrategy.halt(); - return this; - }, + if (!isValid(config)) { + config._d = null; + } - dispose: function () { - this.workingMemory.dispose(); - this.agenda.dispose(); - this.rootNode.dispose(); - }, + return config; + } - assert: function (fact) { - this.rootNode.assertFact(this.workingMemory.assertFact(fact)); - this.emit("assert", fact); - return fact; - }, + function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } + } - // This method is called to remove an existing fact from working memory - retract: function (fact) { - //fact = this.workingMemory.getFact(fact); - this.rootNode.retractFact(this.workingMemory.retractFact(fact)); - this.emit("retract", fact); - return fact; - }, + function createLocalOrUTC(input, format, locale, strict, isUTC) { + var c = {}; - // This method is called to alter an existing fact. It is essentially a - // retract followed by an assert. - modify: function (fact, cb) { - //fact = this.workingMemory.getFact(fact); - if ("function" === typeof cb) { - cb.call(fact, fact); - } - this.rootNode.modifyFact(this.workingMemory.modifyFact(fact)); - this.emit("modify", fact); - return fact; - }, + if (format === true || format === false) { + strict = format; + format = undefined; + } - print: function () { - this.rootNode.print(); - }, + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } - containsRule: function (name) { - return this.rootNode.containsRule(name); - }, + if ( + (isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0) + ) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; - rule: function (rule) { - this.rootNode.assertRule(rule); - }, + return createFromConfig(c); + } - matchUntilHalt: function (cb) { - return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise(); - }, + function createLocal(input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } - match: function (cb) { - return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise(); - } + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } + ), + prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } + ); + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; } -}); -/***/ }), + // TODO: Use [].sort instead? + function min() { + var args = [].slice.call(arguments, 0); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return pickBy('isBefore', args); + } -"use strict"; -/* module decorator */ module = __webpack_require__.nmd(module); + function max() { + var args = [].slice.call(arguments, 0); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - instanceOf = extd.instanceOf, - forEach = extd.forEach, - declare = extd.declare, - InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, - conflictStrategies = __webpack_require__(/*! ./conflict */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js"), - conflictResolution = conflictStrategies.strategy(["salience", "activationRecency"]), - rule = __webpack_require__(/*! ./rule */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), - Flow = __webpack_require__(/*! ./flow */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js"); + return pickBy('isAfter', args); + } -var flows = {}; -var FlowContainer = declare({ + var now = function () { + return Date.now ? Date.now() : +new Date(); + }; - instance: { + var ordering = [ + 'year', + 'quarter', + 'month', + 'week', + 'day', + 'hour', + 'minute', + 'second', + 'millisecond', + ]; - constructor: function (name, cb) { - this.name = name; - this.cb = cb; - this.__rules = []; - this.__defined = {}; - this.conflictResolutionStrategy = conflictResolution; - if (cb) { - cb.call(this, this); - } - if (!flows.hasOwnProperty(name)) { - flows[name] = this; - } else { - throw new Error("Flow with " + name + " already defined"); + function isDurationValid(m) { + var key, + unitHasDecimal = false, + i; + for (key in m) { + if ( + hasOwnProp(m, key) && + !( + indexOf.call(ordering, key) !== -1 && + (m[key] == null || !isNaN(m[key])) + ) + ) { + return false; } - }, - - conflictResolution: function (strategies) { - this.conflictResolutionStrategy = conflictStrategies.strategy(strategies); - return this; - }, + } - getDefined: function (name) { - var ret = this.__defined[name.toLowerCase()]; - if (!ret) { - throw new Error(name + " flow class is not defined"); + for (i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } } - return ret; - }, + } - addDefined: function (name, cls) { - //normalize - this.__defined[name.toLowerCase()] = cls; - return cls; - }, + return true; + } - rule: function () { - this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments)); - return this; - }, + function isValid$1() { + return this._isValid; + } - getSession: function () { - var flow = new Flow(this.name, this.conflictResolutionStrategy); - forEach(this.__rules, function (rule) { - flow.rule(rule); - }); - flow.assert(new InitialFact()); - for (var i = 0, l = arguments.length; i < l; i++) { - flow.assert(arguments[i]); - } - return flow; - }, + function createInvalid$1() { + return createDuration(NaN); + } - containsRule: function (name) { - return extd.some(this.__rules, function (rule) { - return rule.name === name; - }); - } + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || normalizedInput.isoWeek || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - }, + this._isValid = isDurationValid(normalizedInput); - "static": { - getFlow: function (name) { - return flows[name]; - }, + // representation for dateAddRemove + this._milliseconds = + +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + weeks * 7; + // It is impossible to translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + quarters * 3 + years * 12; - hasFlow: function (name) { - return extd.has(flows, name); - }, + this._data = {}; - deleteFlow: function (name) { - if (instanceOf(name, FlowContainer)) { - name = name.name; - } - delete flows[name]; - return FlowContainer; - }, + this._locale = getLocale(); - deleteFlows: function () { - for (var name in flows) { - if (name in flows) { - delete flows[name]; - } - } - return FlowContainer; - }, + this._bubble(); + } + + function isDuration(obj) { + return obj instanceof Duration; + } - create: function (name, cb) { - return new FlowContainer(name, cb); + function absRound(number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); } } -}).as(module); - -/***/ }), - -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js ***! - \*********************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ( + (dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) + ) { + diffs++; + } + } + return diffs + lengthDiff; + } -"use strict"; -/** - * - * @projectName nools - * @github https://github.com/C2FO/nools - * @includeDoc [Examples] ../docs-md/examples.md - * @includeDoc [Change Log] ../history.md - * @header [../readme.md] - */ + // FORMATTING + function offset(token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(), + sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return ( + sign + + zeroFill(~~(offset / 60), 2) + + separator + + zeroFill(~~offset % 60, 2) + ); + }); + } -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - fs = __webpack_require__(/*! fs */ "fs"), - path = __webpack_require__(/*! path */ "path"), - compile = __webpack_require__(/*! ./compile */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js"), - FlowContainer = __webpack_require__(/*! ./flowContainer */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js"); + offset('Z', ':'); + offset('ZZ', ''); -function isNoolsFile(file) { - return (/\.nools$/).test(file); -} + // PARSING -function parse(source) { - var ret; - if (isNoolsFile(source)) { - ret = compile.parse(fs.readFileSync(source, "utf8"), source); - } else { - ret = compile.parse(source); - } - return ret; -} + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); -exports.Flow = FlowContainer; + // HELPERS -exports.getFlow = FlowContainer.getFlow; -exports.hasFlow = FlowContainer.hasFlow; + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; -exports.deleteFlow = function (name) { - FlowContainer.deleteFlow(name); - return this; -}; + function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher), + chunk, + parts, + minutes; -exports.deleteFlows = function () { - FlowContainer.deleteFlows(); - return this; -}; + if (matches === null) { + return null; + } -exports.flow = FlowContainer.create; + chunk = matches[matches.length - 1] || []; + parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + minutes = +(parts[1] * 60) + toInt(parts[2]); -exports.compile = function (file, options, cb) { - if (extd.isFunction(options)) { - cb = options; - options = {}; - } else { - options = options || {}; - } - if (extd.isString(file)) { - options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null); - file = parse(file); - } - if (!options.name) { - throw new Error("Name required when compiling nools source"); + return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; } - return compile.compile(file, options, cb, FlowContainer); -}; -exports.transpile = function (file, options) { - options = options || {}; - if (extd.isString(file)) { - options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null); - file = parse(file); + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = + (isMoment(input) || isDate(input) + ? input.valueOf() + : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } } - return compile.transpile(file, options); -}; - -exports.parse = parse; -/***/ }), + function getDateOffset(m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset()); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // HOOKS -/* module decorator */ module = __webpack_require__.nmd(module); -var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js"); -declare({ + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + hooks.updateOffset = function () {}; - instance: { - constructor: function () { - this.head = null; - this.tail = null; - this.length = null; - }, + // MOMENTS - push: function (data) { - var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null}; - if (tail) { - this.tail.next = node; + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset(input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; } - this.tail = node; - if (!head) { - this.head = node; + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); } - this.length++; - return node; - }, - - remove: function (node) { - if (node.prev) { - node.prev.next = node.next; - } else { - this.head = node.next; + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); } - if (node.next) { - node.next.prev = node.prev; - } else { - this.tail = node.prev; + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract( + this, + createDuration(input - offset, 'm'), + 1, + false + ); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } } - //node.data = node.prev = node.next = null; - this.length--; - }, + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } - forEach: function (cb) { - var head = {next: this.head}; - while ((head = head.next)) { - cb(head.data); + function getSetZone(input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; } - }, - toArray: function () { - var head = {next: this.head}, ret = []; - while ((head = head.next)) { - ret.push(head); - } - return ret; - }, + this.utcOffset(input, keepLocalTime); - removeByData: function (data) { - var head = {next: this.head}; - while ((head = head.next)) { - if (head.data === data) { - this.remove(head); - break; - } + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC(keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal(keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); } - }, + } + return this; + } - getByData: function (data) { - var head = {next: this.head}; - while ((head = head.next)) { - if (head.data === data) { - return head; - } + function setOffsetToParsedOffset() { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } else { + this.utcOffset(0, true); } - }, + } + return this; + } - clear: function () { - this.head = this.tail = null; - this.length = 0; + function hasAlignedHourOffset(input) { + if (!this.isValid()) { + return false; } + input = input ? createLocal(input).utcOffset() : 0; + return (this.utcOffset() - input) % 60 === 0; } -}).as(module); + function isDaylightSavingTime() { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + function isDaylightSavingTimeShifted() { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } -/***/ }), + var c = {}, + other; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + copyConfig(c, this); + c = prepareConfig(c); -/*global setImmediate, window, MessageChannel*/ -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); -var nextTick; -if (typeof setImmediate === "function") { - // In IE10, or use https://github.com/NobleJS/setImmediate - if (typeof window !== "undefined") { - nextTick = extd.bind(window, setImmediate); - } else { - nextTick = setImmediate; + if (c._a) { + other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = + this.isValid() && compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; } -} else if (typeof process !== "undefined") { - // node - nextTick = process.nextTick; -} else if (typeof MessageChannel !== "undefined") { - // modern browsers - // http://www.nonblocking.io/2011/06/windownexttick.html - var channel = new MessageChannel(); - // linked list of tasks (single, with head node) - var head = {}, tail = head; - channel.port1.onmessage = function () { - head = head.next; - var task = head.task; - delete head.task; - task(); - }; - nextTick = function (task) { - tail = tail.next = {task: task}; - channel.port2.postMessage(0); - }; -} else { - // old browsers - nextTick = function (task) { - setTimeout(task, 0); - }; -} -module.exports = nextTick; + function isLocal() { + return this.isValid() ? !this._isUTC : false; + } -/***/ }), + function isUtcOffset() { + return this.isValid() ? this._isUTC : false; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function isUtc() { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } -/* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - intersection = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js").intersection; + // ASP.NET json date format regex + var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; -Node.extend({ - instance: { + function createDuration(input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; - __propagatePaths: function (method, context) { - var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths; - while (--i > -1) { - entry = entrySet[i]; - outNode = entry.key; - paths = entry.value; - if ((continuingPaths = intersection(paths, context.paths)).length) { - outNode[method](context.clone(null, continuingPaths, null)); - } + if (isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months, + }; + } else if (isNumber(input) || !isNaN(+input)) { + duration = {}; + if (key) { + duration[key] = +input; + } else { + duration.milliseconds = +input; } - }, + } else if ((match = aspNetRegex.exec(input))) { + sign = match[1] === '-' ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match + }; + } else if ((match = isoRegex.exec(input))) { + sign = match[1] === '-' ? -1 : 1; + duration = { + y: parseIso(match[2], sign), + M: parseIso(match[3], sign), + w: parseIso(match[4], sign), + d: parseIso(match[5], sign), + h: parseIso(match[6], sign), + m: parseIso(match[7], sign), + s: parseIso(match[8], sign), + }; + } else if (duration == null) { + // checks for null or undefined + duration = {}; + } else if ( + typeof duration === 'object' && + ('from' in duration || 'to' in duration) + ) { + diffRes = momentsDifference( + createLocal(duration.from), + createLocal(duration.to) + ); - __propagateNoPaths: function (method, context) { - var entrySet = this.__entrySet, i = entrySet.length; - while (--i > -1) { - entrySet[i].key[method](context); - } - }, + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - __propagate: function (method, context) { - if (context.paths) { - this.__propagatePaths(method, context); - } else { - this.__propagateNoPaths(method, context); - } + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; } - } -}).as(module); -/***/ }), + if (isDuration(input) && hasOwnProp(input, '_isValid')) { + ret._isValid = input._isValid; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return ret; + } -/* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); + createDuration.fn = Duration.prototype; + createDuration.invalid = createInvalid$1; -AlphaNode.extend({ - instance: { + function parseIso(inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } - constructor: function () { - this._super(arguments); - this.alias = this.constraint.get("alias"); - }, + function positiveMomentsDifference(base, other) { + var res = {}; - toString: function () { - return "AliasNode" + this.__count; - }, + res.months = + other.month() - base.month() + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - assert: function (context) { - return this.__propagate("assert", context.set(this.alias, context.fact.object)); - }, + res.milliseconds = +other - +base.clone().add(res.months, 'M'); - modify: function (context) { - return this.__propagate("modify", context.set(this.alias, context.fact.object)); - }, + return res; + } - retract: function (context) { - return this.__propagate("retract", context.set(this.alias, context.fact.object)); - }, + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return { milliseconds: 0, months: 0 }; + } - equal: function (other) { - return other instanceof this._static && this.alias === other.alias; + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; } - } -}).as(module); -/***/ }), + return res; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple( + name, + 'moment().' + + name + + '(period, number) is deprecated. Please use moment().' + + name + + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' + ); + tmp = val; + val = period; + period = tmp; + } -"use strict"; -/* module decorator */ module = __webpack_require__.nmd(module); + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; + } -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"); + function addSubtract(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); -Node.extend({ - instance: { - constructor: function (constraint) { - this._super([]); - this.constraint = constraint; - this.constraintAssert = this.constraint.assert; - }, + if (!mom.isValid()) { + // No op + return; + } - toString: function () { - return "AlphaNode " + this.__count; - }, + updateOffset = updateOffset == null ? true : updateOffset; - equal: function (constraint) { - return this.constraint.equal(constraint.constraint); + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); } } -}).as(module); -/***/ }), + var add = createAdder(1, 'add'), + subtract = createAdder(-1, 'subtract'); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function isString(input) { + return typeof input === 'string' || input instanceof String; + } -/* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - keys = extd.hash.keys, - Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - LeftMemory = __webpack_require__(/*! ./misc/leftMemory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js"), RightMemory = __webpack_require__(/*! ./misc/rightMemory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js"); + // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined + function isMomentInput(input) { + return ( + isMoment(input) || + isDate(input) || + isString(input) || + isNumber(input) || + isNumberOrStringArray(input) || + isMomentInputObject(input) || + input === null || + input === undefined + ); + } -Node.extend({ + function isMomentInputObject(input) { + var objectTest = isObject(input) && !isObjectEmpty(input), + propertyTest = false, + properties = [ + 'years', + 'year', + 'y', + 'months', + 'month', + 'M', + 'days', + 'day', + 'd', + 'dates', + 'date', + 'D', + 'hours', + 'hour', + 'h', + 'minutes', + 'minute', + 'm', + 'seconds', + 'second', + 's', + 'milliseconds', + 'millisecond', + 'ms', + ], + i, + property; - instance: { + for (i = 0; i < properties.length; i += 1) { + property = properties[i]; + propertyTest = propertyTest || hasOwnProp(input, property); + } - nodeType: "BetaNode", + return objectTest && propertyTest; + } - constructor: function () { - this._super([]); - this.leftMemory = {}; - this.rightMemory = {}; - this.leftTuples = new LeftMemory(); - this.rightTuples = new RightMemory(); - }, + function isNumberOrStringArray(input) { + var arrayTest = isArray(input), + dataTypeTest = false; + if (arrayTest) { + dataTypeTest = + input.filter(function (item) { + return !isNumber(item) && isString(input); + }).length === 0; + } + return arrayTest && dataTypeTest; + } - __propagate: function (method, context) { - var entrySet = this.__entrySet, i = entrySet.length, entry, outNode; - while (--i > -1) { - entry = entrySet[i]; - outNode = entry.key; - outNode[method](context); - } - }, + function isCalendarSpec(input) { + var objectTest = isObject(input) && !isObjectEmpty(input), + propertyTest = false, + properties = [ + 'sameDay', + 'nextDay', + 'lastDay', + 'nextWeek', + 'lastWeek', + 'sameElse', + ], + i, + property; - dispose: function () { - this.leftMemory = {}; - this.rightMemory = {}; - this.leftTuples.clear(); - this.rightTuples.clear(); - }, + for (i = 0; i < properties.length; i += 1) { + property = properties[i]; + propertyTest = propertyTest || hasOwnProp(input, property); + } - disposeLeft: function (fact) { - this.leftMemory = {}; - this.leftTuples.clear(); - this.propagateDispose(fact); - }, + return objectTest && propertyTest; + } - disposeRight: function (fact) { - this.rightMemory = {}; - this.rightTuples.clear(); - this.propagateDispose(fact); - }, + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 + ? 'sameElse' + : diff < -1 + ? 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : diff < 7 + ? 'nextWeek' + : 'sameElse'; + } - hashCode: function () { - return this.nodeType + " " + this.__count; - }, + function calendar$1(time, formats) { + // Support for single parameter, formats only overload to the calendar function + if (arguments.length === 1) { + if (isMomentInput(arguments[0])) { + time = arguments[0]; + formats = undefined; + } else if (isCalendarSpec(arguments[0])) { + formats = arguments[0]; + time = undefined; + } + } + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse', + output = + formats && + (isFunction(formats[format]) + ? formats[format].call(this, now) + : formats[format]); - toString: function () { - return this.nodeType + " " + this.__count; - }, + return this.format( + output || this.localeData().calendar(format, this, createLocal(now)) + ); + } - retractLeft: function (context) { - context = this.removeFromLeftMemory(context).data; - var rightMatches = context.rightMatches, - hashCodes = keys(rightMatches), - i = -1, - l = hashCodes.length; - while (++i < l) { - this.__propagate("retract", rightMatches[hashCodes[i]].clone()); - } - }, + function clone() { + return new Moment(this); + } - retractRight: function (context) { - context = this.removeFromRightMemory(context).data; - var leftMatches = context.leftMatches, - hashCodes = keys(leftMatches), - i = -1, - l = hashCodes.length; - while (++i < l) { - this.__propagate("retract", leftMatches[hashCodes[i]].clone()); - } - }, + function isAfter(input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } - assertLeft: function (context) { - this.__addToLeftMemory(context); - var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length; - while (++i < l) { - this.propagateFromLeft(context, rm[i].data); - } - }, + function isBefore(input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } - assertRight: function (context) { - this.__addToRightMemory(context); - var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length; - while (++i < l) { - this.propagateFromRight(context, lm[i].data); - } - }, + function isBetween(from, to, units, inclusivity) { + var localFrom = isMoment(from) ? from : createLocal(from), + localTo = isMoment(to) ? to : createLocal(to); + if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { + return false; + } + inclusivity = inclusivity || '()'; + return ( + (inclusivity[0] === '(' + ? this.isAfter(localFrom, units) + : !this.isBefore(localFrom, units)) && + (inclusivity[1] === ')' + ? this.isBefore(localTo, units) + : !this.isAfter(localTo, units)) + ); + } - modifyLeft: function (context) { - var previousContext = this.removeFromLeftMemory(context).data; - this.__addToLeftMemory(context); - var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches; - if (!l) { - this.propagateRetractModifyFromLeft(previousContext); - } else { - rightMatches = previousContext.rightMatches; - while (++i < l) { - this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data); - } + function isSame(input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || 'millisecond'; + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return ( + this.clone().startOf(units).valueOf() <= inputMs && + inputMs <= this.clone().endOf(units).valueOf() + ); + } + } - } - }, + function isSameOrAfter(input, units) { + return this.isSame(input, units) || this.isAfter(input, units); + } - modifyRight: function (context) { - var previousContext = this.removeFromRightMemory(context).data; - this.__addToRightMemory(context); - var lm = this.leftTuples.getLeftMemory(context); - if (!lm.length) { - this.propagateRetractModifyFromRight(previousContext); - } else { - var leftMatches = previousContext.leftMatches, i = -1, l = lm.length; - while (++i < l) { - this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data); - } - } - }, + function isSameOrBefore(input, units) { + return this.isSame(input, units) || this.isBefore(input, units); + } - propagateFromLeft: function (context, rc) { - this.__propagate("assert", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match)))); - }, + function diff(input, units, asFloat) { + var that, zoneDelta, output; - propagateFromRight: function (context, lc) { - this.__propagate("assert", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match)))); - }, + if (!this.isValid()) { + return NaN; + } - propagateRetractModifyFromLeft: function (context) { - var rightMatches = context.rightMatches, - hashCodes = keys(rightMatches), - l = hashCodes.length, - i = -1; - while (++i < l) { - this.__propagate("retract", rightMatches[hashCodes[i]].clone()); - } - }, + that = cloneWithOffset(input, this); - propagateRetractModifyFromRight: function (context) { - var leftMatches = context.leftMatches, - hashCodes = keys(leftMatches), - l = hashCodes.length, - i = -1; - while (++i < l) { - this.__propagate("retract", leftMatches[hashCodes[i]].clone()); - } - }, + if (!that.isValid()) { + return NaN; + } - propagateAssertModifyFromLeft: function (context, rightMatches, rm) { - var factId = rm.hashCode; - if (factId in rightMatches) { - this.__propagate("modify", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match)))); - } else { - this.propagateFromLeft(context, rm); - } - }, + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - propagateAssertModifyFromRight: function (context, leftMatches, lm) { - var factId = lm.hashCode; - if (factId in leftMatches) { - this.__propagate("modify", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match)))); - } else { - this.propagateFromRight(context, lm); - } - }, + units = normalizeUnits(units); - removeFromRightMemory: function (context) { - var hashCode = context.hashCode, ret; - context = this.rightMemory[hashCode] || null; - var tuples = this.rightTuples; - if (context) { - var leftMemory = this.leftMemory; - ret = context.data; - var leftMatches = ret.leftMatches; - tuples.remove(context); - var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length; - while (++i < l) { - delete leftMemory[hashCodes[i]].data.rightMatches[hashCode]; - } - delete this.rightMemory[hashCode]; - } - return context; - }, + switch (units) { + case 'year': + output = monthDiff(this, that) / 12; + break; + case 'month': + output = monthDiff(this, that); + break; + case 'quarter': + output = monthDiff(this, that) / 3; + break; + case 'second': + output = (this - that) / 1e3; + break; // 1000 + case 'minute': + output = (this - that) / 6e4; + break; // 1000 * 60 + case 'hour': + output = (this - that) / 36e5; + break; // 1000 * 60 * 60 + case 'day': + output = (this - that - zoneDelta) / 864e5; + break; // 1000 * 60 * 60 * 24, negate dst + case 'week': + output = (this - that - zoneDelta) / 6048e5; + break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: + output = this - that; + } - removeFromLeftMemory: function (context) { - var hashCode = context.hashCode; - context = this.leftMemory[hashCode] || null; - if (context) { - var rightMemory = this.rightMemory; - var rightMatches = context.data.rightMatches; - this.leftTuples.remove(context); - var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length; - while (++i < l) { - delete rightMemory[hashCodes[i]].data.leftMatches[hashCode]; - } - delete this.leftMemory[hashCode]; - } - return context; - }, + return asFloat ? output : absFloor(output); + } - getRightMemoryMatches: function (context) { - var lm = this.leftMemory[context.hashCode], ret = {}; - if (lm) { - ret = lm.rightMatches; - } - return ret; - }, + function monthDiff(a, b) { + if (a.date() < b.date()) { + // end-of-month calculations work correct when the start month has more + // days than the end month. + return -monthDiff(b, a); + } + // difference in months + var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, + adjust; - __addToMemoryMatches: function (rightContext, leftContext, createdContext) { - var rightFactId = rightContext.hashCode, - rm = this.rightMemory[rightFactId], - lm, leftFactId = leftContext.hashCode; - if (rm) { - rm = rm.data; - if (leftFactId in rm.leftMatches) { - throw new Error("Duplicate left fact entry"); - } - rm.leftMatches[leftFactId] = createdContext; - } - lm = this.leftMemory[leftFactId]; - if (lm) { - lm = lm.data; - if (rightFactId in lm.rightMatches) { - throw new Error("Duplicate right fact entry"); - } - lm.rightMatches[rightFactId] = createdContext; - } - return createdContext; - }, + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } - __addToRightMemory: function (context) { - var hashCode = context.hashCode, rm = this.rightMemory; - if (hashCode in rm) { - return false; - } - rm[hashCode] = this.rightTuples.push(context); - context.leftMatches = {}; - return true; - }, + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } + hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - __addToLeftMemory: function (context) { - var hashCode = context.hashCode, lm = this.leftMemory; - if (hashCode in lm) { - return false; + function toString() { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function toISOString(keepOffset) { + if (!this.isValid()) { + return null; + } + var utc = keepOffset !== true, + m = utc ? this.clone().utc() : this; + if (m.year() < 0 || m.year() > 9999) { + return formatMoment( + m, + utc + ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' + : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' + ); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + if (utc) { + return this.toDate().toISOString(); + } else { + return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) + .toISOString() + .replace('Z', formatMoment(m, 'Z')); } - lm[hashCode] = this.leftTuples.push(context); - context.rightMatches = {}; - return true; } + return formatMoment( + m, + utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' + ); } -}).as(module); + /** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ + function inspect() { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment', + zone = '', + prefix, + year, + datetime, + suffix; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + prefix = '[' + func + '("]'; + year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; + datetime = '-MM-DD[T]HH:mm:ss.SSS'; + suffix = zone + '[")]'; -/***/ }), + return this.format(prefix + year + datetime + suffix); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function format(inputString) { + if (!inputString) { + inputString = this.isUtc() + ? hooks.defaultFormatUtc + : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } -/* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); + function from(time, withoutSuffix) { + if ( + this.isValid() && + ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) + ) { + return createDuration({ to: this, from: time }) + .locale(this.locale()) + .humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } -AlphaNode.extend({ - instance: { + function fromNow(withoutSuffix) { + return this.from(createLocal(), withoutSuffix); + } - constructor: function () { - this.memory = {}; - this._super(arguments); - this.constraintAssert = this.constraint.assert; - }, + function to(time, withoutSuffix) { + if ( + this.isValid() && + ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) + ) { + return createDuration({ from: this, to: time }) + .locale(this.locale()) + .humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } - assert: function (context) { - if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) { - this.__propagate("assert", context); - } - }, + function toNow(withoutSuffix) { + return this.to(createLocal(), withoutSuffix); + } - modify: function (context) { - var memory = this.memory, - hashCode = context.pathsHash, - wasMatch = memory[hashCode]; - if ((memory[hashCode] = this.constraintAssert(context.factHash))) { - this.__propagate(wasMatch ? "modify" : "assert", context); - } else if (wasMatch) { - this.__propagate("retract", context); - } - }, + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale(key) { + var newLocaleData; - retract: function (context) { - var hashCode = context.pathsHash, - memory = this.memory; - if (memory[hashCode]) { - this.__propagate("retract", context); + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; } - delete memory[hashCode]; - }, + return this; + } + } - toString: function () { - return "EqualityNode" + this.__count; + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } } + ); + + function localeData() { + return this._locale; } -}).as(module); -/***/ }), + var MS_PER_SECOND = 1000, + MS_PER_MINUTE = 60 * MS_PER_SECOND, + MS_PER_HOUR = 60 * MS_PER_MINUTE, + MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js ***! - \************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // actual modulo - handles negative numbers (for dates before 1970): + function mod$1(dividend, divisor) { + return ((dividend % divisor) + divisor) % divisor; + } -/* module decorator */ module = __webpack_require__.nmd(module); -var FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - isDefined = extd.isDefined, - isArray = extd.isArray; + function localStartOfDate(y, m, d) { + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + return new Date(y + 400, m, d) - MS_PER_400_YEARS; + } else { + return new Date(y, m, d).valueOf(); + } + } -FromNotNode.extend({ - instance: { + function utcStartOfDate(y, m, d) { + // Date.UTC remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0) { + // preserve leap years using a full 400 year cycle, then reset + return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; + } else { + return Date.UTC(y, m, d); + } + } - nodeType: "ExistsFromNode", + function startOf(units) { + var time, startOfDate; + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond' || !this.isValid()) { + return this; + } - retractLeft: function (context) { - var ctx = this.removeFromLeftMemory(context); - if (ctx) { - ctx = ctx.data; - if (ctx.blocked) { - this.__propagate("retract", ctx.clone()); - } - } - }, + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - __modify: function (context, leftContext) { - var leftContextBlocked = leftContext.blocked; - var fh = context.factHash, o = this.from(fh); - if (isArray(o)) { - for (var i = 0, l = o.length; i < l; i++) { - if (this.__isMatch(context, o[i], true)) { - context.blocked = true; - break; - } - } - } else if (isDefined(o)) { - context.blocked = this.__isMatch(context, o, true); - } - var newContextBlocked = context.blocked; - if (newContextBlocked) { - if (leftContextBlocked) { - this.__propagate("modify", context.clone()); - } else { - this.__propagate("assert", context.clone()); - } - } else if (leftContextBlocked) { - this.__propagate("retract", context.clone()); - } + switch (units) { + case 'year': + time = startOfDate(this.year(), 0, 1); + break; + case 'quarter': + time = startOfDate( + this.year(), + this.month() - (this.month() % 3), + 1 + ); + break; + case 'month': + time = startOfDate(this.year(), this.month(), 1); + break; + case 'week': + time = startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + ); + break; + case 'isoWeek': + time = startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + ); + break; + case 'day': + case 'date': + time = startOfDate(this.year(), this.month(), this.date()); + break; + case 'hour': + time = this._d.valueOf(); + time -= mod$1( + time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ); + break; + case 'minute': + time = this._d.valueOf(); + time -= mod$1(time, MS_PER_MINUTE); + break; + case 'second': + time = this._d.valueOf(); + time -= mod$1(time, MS_PER_SECOND); + break; + } - }, + this._d.setTime(time); + hooks.updateOffset(this, true); + return this; + } - __findMatches: function (context) { - var fh = context.factHash, o = this.from(fh), isMatch = false; - if (isArray(o)) { - for (var i = 0, l = o.length; i < l; i++) { - if (this.__isMatch(context, o[i], true)) { - context.blocked = true; - this.__propagate("assert", context.clone()); - return; - } - } - } else if (isDefined(o) && (this.__isMatch(context, o, true))) { - context.blocked = true; - this.__propagate("assert", context.clone()); - } - return isMatch; - }, + function endOf(units) { + var time, startOfDate; + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond' || !this.isValid()) { + return this; + } - __isMatch: function (oc, o, add) { - var ret = false; - if (this.type(o)) { - var createdFact = this.workingMemory.getFactHandle(o); - var context = new Context(createdFact, null, null) - .mergeMatch(oc.match) - .set(this.alias, o); - if (add) { - var fm = this.fromMemory[createdFact.id]; - if (!fm) { - fm = this.fromMemory[createdFact.id] = {}; - } - fm[oc.hashCode] = oc; - } - var fh = context.factHash; - var eqConstraints = this.__equalityConstraints; - for (var i = 0, l = eqConstraints.length; i < l; i++) { - if (eqConstraints[i](fh)) { - ret = true; - } else { - ret = false; - break; - } - } - } - return ret; - }, + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - assertLeft: function (context) { - this.__addToLeftMemory(context); - this.__findMatches(context); + switch (units) { + case 'year': + time = startOfDate(this.year() + 1, 0, 1) - 1; + break; + case 'quarter': + time = + startOfDate( + this.year(), + this.month() - (this.month() % 3) + 3, + 1 + ) - 1; + break; + case 'month': + time = startOfDate(this.year(), this.month() + 1, 1) - 1; + break; + case 'week': + time = + startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + 7 + ) - 1; + break; + case 'isoWeek': + time = + startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + 7 + ) - 1; + break; + case 'day': + case 'date': + time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; + break; + case 'hour': + time = this._d.valueOf(); + time += + MS_PER_HOUR - + mod$1( + time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ) - + 1; + break; + case 'minute': + time = this._d.valueOf(); + time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; + break; + case 'second': + time = this._d.valueOf(); + time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; + break; } + this._d.setTime(time); + hooks.updateOffset(this, true); + return this; } -}).as(module); -/***/ }), + function valueOf() { + return this._d.valueOf() - (this._offset || 0) * 60000; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function unix() { + return Math.floor(this.valueOf() / 1000); + } -/* module decorator */ module = __webpack_require__.nmd(module); -var NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), - LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"); + function toDate() { + return new Date(this.valueOf()); + } + function toArray() { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hour(), + m.minute(), + m.second(), + m.millisecond(), + ]; + } -NotNode.extend({ - instance: { + function toObject() { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds(), + }; + } - nodeType: "ExistsNode", + function toJSON() { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } - blockedContext: function (leftContext, rightContext) { - leftContext.blocker = rightContext; - this.removeFromLeftMemory(leftContext); - this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext)); - this.__propagate("assert", this.__cloneContext(leftContext)); - }, + function isValid$2() { + return isValid(this); + } - notBlockedContext: function (leftContext, propagate) { - this.__addToLeftMemory(leftContext); - propagate && this.__propagate("retract", this.__cloneContext(leftContext)); - }, + function parsingFlags() { + return extend({}, getParsingFlags(this)); + } - propagateFromLeft: function (leftContext) { - this.notBlockedContext(leftContext, false); - }, + function invalidAt() { + return getParsingFlags(this).overflow; + } + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict, + }; + } - retractLeft: function (context) { - var ctx; - if (!this.removeFromLeftMemory(context)) { - if ((ctx = this.removeFromLeftBlockedMemory(context))) { - this.__propagate("retract", this.__cloneContext(ctx.data)); - } else { - throw new Error(); - } - } - }, - - modifyLeft: function (context) { - var ctx = this.removeFromLeftMemory(context), - leftContext, - thisConstraint = this.constraint, - rightTuples = this.rightTuples, - l = rightTuples.length, - isBlocked = false, - node, rc, blocker; - if (!ctx) { - //blocked before - ctx = this.removeFromLeftBlockedMemory(context); - isBlocked = true; - } - if (ctx) { - leftContext = ctx.data; + addFormatToken('N', 0, 0, 'eraAbbr'); + addFormatToken('NN', 0, 0, 'eraAbbr'); + addFormatToken('NNN', 0, 0, 'eraAbbr'); + addFormatToken('NNNN', 0, 0, 'eraName'); + addFormatToken('NNNNN', 0, 0, 'eraNarrow'); - if (leftContext && leftContext.blocker) { - //we were blocked before so only check nodes previous to our blocker - blocker = this.rightMemory[leftContext.blocker.hashCode]; - } - if (blocker) { - if (thisConstraint.isMatch(context, rc = blocker.data)) { - //propogate as a modify or assert - this.__propagate(!isBlocked ? "assert" : "modify", this.__cloneContext(leftContext)); - context.blocker = rc; - this.addToLeftBlockedMemory(rc.blocking.push(context)); - context = null; - } - if (context) { - node = {next: blocker.next}; - } - } else { - node = {next: rightTuples.head}; - } - if (context && l) { - node = {next: rightTuples.head}; - //we were propagated before - while ((node = node.next)) { - if (thisConstraint.isMatch(context, rc = node.data)) { - //we cant be proagated so retract previous + addFormatToken('y', ['y', 1], 'yo', 'eraYear'); + addFormatToken('y', ['yy', 2], 0, 'eraYear'); + addFormatToken('y', ['yyy', 3], 0, 'eraYear'); + addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); - //we were asserted before so retract - this.__propagate(!isBlocked ? "assert" : "modify", this.__cloneContext(leftContext)); + addRegexToken('N', matchEraAbbr); + addRegexToken('NN', matchEraAbbr); + addRegexToken('NNN', matchEraAbbr); + addRegexToken('NNNN', matchEraName); + addRegexToken('NNNNN', matchEraNarrow); - this.addToLeftBlockedMemory(rc.blocking.push(context)); - context.blocker = rc; - context = null; - break; - } - } - } - if (context) { - //we can still be propogated - this.__addToLeftMemory(context); - if (isBlocked) { - //we were blocked so retract - this.__propagate("retract", this.__cloneContext(context)); - } + addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function ( + input, + array, + config, + token + ) { + var era = config._locale.erasParse(input, token, config._strict); + if (era) { + getParsingFlags(config).era = era; + } else { + getParsingFlags(config).invalidEra = input; + } + }); - } - } else { - throw new Error(); + addRegexToken('y', matchUnsigned); + addRegexToken('yy', matchUnsigned); + addRegexToken('yyy', matchUnsigned); + addRegexToken('yyyy', matchUnsigned); + addRegexToken('yo', matchEraYearOrdinal); + + addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); + addParseToken(['yo'], function (input, array, config, token) { + var match; + if (config._locale._eraYearOrdinalRegex) { + match = input.match(config._locale._eraYearOrdinalRegex); + } + + if (config._locale.eraYearOrdinalParse) { + array[YEAR] = config._locale.eraYearOrdinalParse(input, match); + } else { + array[YEAR] = parseInt(input, 10); + } + }); + + function localeEras(m, format) { + var i, + l, + date, + eras = this._eras || getLocale('en')._eras; + for (i = 0, l = eras.length; i < l; ++i) { + switch (typeof eras[i].since) { + case 'string': + // truncate time + date = hooks(eras[i].since).startOf('day'); + eras[i].since = date.valueOf(); + break; } - }, + switch (typeof eras[i].until) { + case 'undefined': + eras[i].until = +Infinity; + break; + case 'string': + // truncate time + date = hooks(eras[i].until).startOf('day').valueOf(); + eras[i].until = date.valueOf(); + break; + } + } + return eras; + } - modifyRight: function (context) { - var ctx = this.removeFromRightMemory(context); - if (ctx) { - var rightContext = ctx.data, - leftTuples = this.leftTuples, - leftTuplesLength = leftTuples.length, - leftContext, - thisConstraint = this.constraint, - node, - blocking = rightContext.blocking; - this.__addToRightMemory(context); - context.blocking = new LinkedList(); - if (leftTuplesLength || blocking.length) { - if (blocking.length) { - var rc; - //check old blocked contexts - //check if the same contexts blocked before are still blocked - var blockingNode = {next: blocking.head}; - while ((blockingNode = blockingNode.next)) { - leftContext = blockingNode.data; - leftContext.blocker = null; - if (thisConstraint.isMatch(leftContext, context)) { - leftContext.blocker = context; - this.addToLeftBlockedMemory(context.blocking.push(leftContext)); - this.__propagate("assert", this.__cloneContext(leftContext)); - leftContext = null; - } else { - //we arent blocked anymore - leftContext.blocker = null; - node = ctx; - while ((node = node.next)) { - if (thisConstraint.isMatch(leftContext, rc = node.data)) { - leftContext.blocker = rc; - this.addToLeftBlockedMemory(rc.blocking.push(leftContext)); - this.__propagate("assert", this.__cloneContext(leftContext)); - leftContext = null; - break; - } - } - if (leftContext) { - this.__addToLeftMemory(leftContext); - } - } - } - } + function localeErasParse(eraName, format, strict) { + var i, + l, + eras = this.eras(), + name, + abbr, + narrow; + eraName = eraName.toUpperCase(); - if (leftTuplesLength) { - //check currently left tuples in memory - node = {next: leftTuples.head}; - while ((node = node.next)) { - leftContext = node.data; - if (thisConstraint.isMatch(leftContext, context)) { - this.__propagate("assert", this.__cloneContext(leftContext)); - this.removeFromLeftMemory(leftContext); - this.addToLeftBlockedMemory(context.blocking.push(leftContext)); - leftContext.blocker = context; - } + for (i = 0, l = eras.length; i < l; ++i) { + name = eras[i].name.toUpperCase(); + abbr = eras[i].abbr.toUpperCase(); + narrow = eras[i].narrow.toUpperCase(); + + if (strict) { + switch (format) { + case 'N': + case 'NN': + case 'NNN': + if (abbr === eraName) { + return eras[i]; } - } + break; + case 'NNNN': + if (name === eraName) { + return eras[i]; + } + break; + case 'NNNNN': + if (narrow === eraName) { + return eras[i]; + } + break; } - } else { - throw new Error(); + } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { + return eras[i]; } - - } } -}).as(module); -/***/ }), + function localeErasConvertYear(era, year) { + var dir = era.since <= era.until ? +1 : -1; + if (year === undefined) { + return hooks(era.since).year(); + } else { + return hooks(era.since).year() + (year - era.offset) * dir; + } + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function getEraName() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); -/* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), - EqualityConstraint = constraint.EqualityConstraint, - HashConstraint = constraint.HashConstraint, - ReferenceConstraint = constraint.ReferenceConstraint, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - isDefined = extd.isDefined, - isEmpty = extd.isEmpty, - forEach = extd.forEach, - isArray = extd.isArray; + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].name; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].name; + } + } -var DEFAULT_MATCH = { - isMatch: function () { - return false; + return ''; } -}; -JoinNode.extend({ - instance: { + function getEraNarrow() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); - nodeType: "FromNode", + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].narrow; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].narrow; + } + } - constructor: function (pattern, wm) { - this._super(arguments); - this.workingMemory = wm; - this.fromMemory = {}; - this.pattern = pattern; - this.type = pattern.get("constraints")[0].assert; - this.alias = pattern.get("alias"); - this.from = pattern.from.assert; - var eqConstraints = this.__equalityConstraints = []; - var vars = []; - forEach(this.constraints = this.pattern.get("constraints").slice(1), function (c) { - if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) { - eqConstraints.push(c.assert); - } else if (c instanceof HashConstraint) { - vars = vars.concat(c.get("variables")); - } - }); - this.__variables = vars; - }, + return ''; + } - __createMatches: function (context) { - var fh = context.factHash, o = this.from(fh); - if (isArray(o)) { - for (var i = 0, l = o.length; i < l; i++) { - this.__checkMatch(context, o[i], true); - } - } else if (isDefined(o)) { - this.__checkMatch(context, o, true); - } - }, + function getEraAbbr() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); - __checkMatch: function (context, o, propogate) { - var newContext; - if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) { - this.__propagate("assert", newContext.clone()); + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].abbr; } - return newContext; - }, - - __createMatch: function (lc, o) { - if (this.type(o)) { - var createdFact = this.workingMemory.getFactHandle(o, true), - createdContext, - rc = new Context(createdFact, null, null) - .set(this.alias, o), - createdFactId = createdFact.id; - var fh = rc.factHash, lcFh = lc.factHash; - for (var key in lcFh) { - fh[key] = lcFh[key]; - } - var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length; - while (++i < l) { - if (!eqConstraints[i](fh, fh)) { - createdContext = DEFAULT_MATCH; - break; - } - } - var fm = this.fromMemory[createdFactId]; - if (!fm) { - fm = this.fromMemory[createdFactId] = {}; - } - if (!createdContext) { - var prop; - i = -1; - l = vars.length; - while (++i < l) { - prop = vars[i]; - fh[prop] = o[prop]; - } - lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match)); - } - fm[lc.hashCode] = [lc, createdContext]; - return createdContext; + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].abbr; } - return DEFAULT_MATCH; - }, + } - retractRight: function () { - throw new Error("Shouldnt have gotten here"); - }, + return ''; + } - removeFromFromMemory: function (context) { - var factId = context.fact.id; - var fm = this.fromMemory[factId]; - if (fm) { - var entry; - for (var i in fm) { - entry = fm[i]; - if (entry[1] === context) { - delete fm[i]; - if (isEmpty(fm)) { - delete this.fromMemory[factId]; - } - break; - } - } + function getEraYear() { + var i, + l, + dir, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + dir = eras[i].since <= eras[i].until ? +1 : -1; + + // truncate time + val = this.startOf('day').valueOf(); + + if ( + (eras[i].since <= val && val <= eras[i].until) || + (eras[i].until <= val && val <= eras[i].since) + ) { + return ( + (this.year() - hooks(eras[i].since).year()) * dir + + eras[i].offset + ); } + } - }, + return this.year(); + } + + function erasNameRegex(isStrict) { + if (!hasOwnProp(this, '_erasNameRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasNameRegex : this._erasRegex; + } + + function erasAbbrRegex(isStrict) { + if (!hasOwnProp(this, '_erasAbbrRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasAbbrRegex : this._erasRegex; + } + + function erasNarrowRegex(isStrict) { + if (!hasOwnProp(this, '_erasNarrowRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasNarrowRegex : this._erasRegex; + } - retractLeft: function (context) { - var ctx = this.removeFromLeftMemory(context); - if (ctx) { - ctx = ctx.data; - var fromMatches = ctx.fromMatches; - for (var i in fromMatches) { - this.removeFromFromMemory(fromMatches[i]); - this.__propagate("retract", fromMatches[i].clone()); - } - } - }, + function matchEraAbbr(isStrict, locale) { + return locale.erasAbbrRegex(isStrict); + } - modifyLeft: function (context) { - var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact; - if (ctx) { - this.__addToLeftMemory(context); + function matchEraName(isStrict, locale) { + return locale.erasNameRegex(isStrict); + } - var leftContext = ctx.data, - fromMatches = (context.fromMatches = {}), - rightMatches = leftContext.fromMatches, - o = this.from(context.factHash); + function matchEraNarrow(isStrict, locale) { + return locale.erasNarrowRegex(isStrict); + } - if (isArray(o)) { - for (i = 0, l = o.length; i < l; i++) { - newContext = this.__checkMatch(context, o[i], false); - if (newContext.isMatch()) { - factId = newContext.fact.id; - if (factId in rightMatches) { - this.__propagate("modify", newContext.clone()); - } else { - this.__propagate("assert", newContext.clone()); - } - } - } - } else if (isDefined(o)) { - newContext = this.__checkMatch(context, o, false); - if (newContext.isMatch()) { - factId = newContext.fact.id; - if (factId in rightMatches) { - this.__propagate("modify", newContext.clone()); - } else { - this.__propagate("assert", newContext.clone()); - } - } - } - for (i in rightMatches) { - if (!(i in fromMatches)) { - this.removeFromFromMemory(rightMatches[i]); - this.__propagate("retract", rightMatches[i].clone()); - } - } - } else { - this.assertLeft(context); - } - fact = context.fact; - factId = fact.id; - var fm = this.fromMemory[factId]; - this.fromMemory[factId] = {}; - if (fm) { - var lc, entry, cc, createdIsMatch, factObject = fact.object; - for (i in fm) { - entry = fm[i]; - lc = entry[0]; - cc = entry[1]; - createdIsMatch = cc.isMatch(); - if (lc.hashCode !== context.hashCode) { - newContext = this.__createMatch(lc, factObject, false); - if (createdIsMatch) { - this.__propagate("retract", cc.clone()); - } - if (newContext.isMatch()) { - this.__propagate(createdIsMatch ? "modify" : "assert", newContext.clone()); - } + function matchEraYearOrdinal(isStrict, locale) { + return locale._eraYearOrdinalRegex || matchUnsigned; + } - } - } - } - }, + function computeErasParse() { + var abbrPieces = [], + namePieces = [], + narrowPieces = [], + mixedPieces = [], + i, + l, + eras = this.eras(); - assertLeft: function (context) { - this.__addToLeftMemory(context); - context.fromMatches = {}; - this.__createMatches(context); - }, + for (i = 0, l = eras.length; i < l; ++i) { + namePieces.push(regexEscape(eras[i].name)); + abbrPieces.push(regexEscape(eras[i].abbr)); + narrowPieces.push(regexEscape(eras[i].narrow)); - assertRight: function () { - throw new Error("Shouldnt have gotten here"); + mixedPieces.push(regexEscape(eras[i].name)); + mixedPieces.push(regexEscape(eras[i].abbr)); + mixedPieces.push(regexEscape(eras[i].narrow)); } + this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); + this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); + this._erasNarrowRegex = new RegExp( + '^(' + narrowPieces.join('|') + ')', + 'i' + ); } -}).as(module); -/***/ }), + // FORMATTING -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); -/* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), - EqualityConstraint = constraint.EqualityConstraint, - HashConstraint = constraint.HashConstraint, - ReferenceConstraint = constraint.ReferenceConstraint, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - isDefined = extd.isDefined, - forEach = extd.forEach, - isArray = extd.isArray; + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); -JoinNode.extend({ - instance: { + function addWeekYearFormatToken(token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } - nodeType: "FromNotNode", + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - constructor: function (pattern, workingMemory) { - this._super(arguments); - this.workingMemory = workingMemory; - this.pattern = pattern; - this.type = pattern.get("constraints")[0].assert; - this.alias = pattern.get("alias"); - this.from = pattern.from.assert; - this.fromMemory = {}; - var eqConstraints = this.__equalityConstraints = []; - var vars = []; - forEach(this.constraints = this.pattern.get("constraints").slice(1), function (c) { - if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) { - eqConstraints.push(c.assert); - } else if (c instanceof HashConstraint) { - vars = vars.concat(c.get("variables")); - } - }); - this.__variables = vars; + // ALIASES - }, + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); - retractLeft: function (context) { - var ctx = this.removeFromLeftMemory(context); - if (ctx) { - ctx = ctx.data; - if (!ctx.blocked) { - this.__propagate("retract", ctx.clone()); - } - } - }, + // PRIORITY - __modify: function (context, leftContext) { - var leftContextBlocked = leftContext.blocked; - var fh = context.factHash, o = this.from(fh); - if (isArray(o)) { - for (var i = 0, l = o.length; i < l; i++) { - if (this.__isMatch(context, o[i], true)) { - context.blocked = true; - break; - } - } - } else if (isDefined(o)) { - context.blocked = this.__isMatch(context, o, true); - } - var newContextBlocked = context.blocked; - if (!newContextBlocked) { - if (leftContextBlocked) { - this.__propagate("assert", context.clone()); - } else { - this.__propagate("modify", context.clone()); - } - } else if (!leftContextBlocked) { - this.__propagate("retract", leftContext.clone()); - } + addUnitPriority('weekYear', 1); + addUnitPriority('isoWeekYear', 1); - }, + // PARSING - modifyLeft: function (context) { - var ctx = this.removeFromLeftMemory(context); - if (ctx) { - this.__addToLeftMemory(context); - this.__modify(context, ctx.data); - } else { - throw new Error(); - } - var fm = this.fromMemory[context.fact.id]; - this.fromMemory[context.fact.id] = {}; - if (fm) { - for (var i in fm) { - // update any contexts associated with this fact - if (i !== context.hashCode) { - var lc = fm[i]; - ctx = this.removeFromLeftMemory(lc); - if (ctx) { - lc = lc.clone(); - lc.blocked = false; - this.__addToLeftMemory(lc); - this.__modify(lc, ctx.data); - } - } - } - } - }, + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); - __findMatches: function (context) { - var fh = context.factHash, o = this.from(fh), isMatch = false; - if (isArray(o)) { - for (var i = 0, l = o.length; i < l; i++) { - if (this.__isMatch(context, o[i], true)) { - context.blocked = true; - return; - } - } - this.__propagate("assert", context.clone()); - } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) { - this.__propagate("assert", context.clone()); - } - return isMatch; - }, + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function ( + input, + week, + config, + token + ) { + week[token.substr(0, 2)] = toInt(input); + }); - __isMatch: function (oc, o, add) { - var ret = false; - if (this.type(o)) { - var createdFact = this.workingMemory.getFactHandle(o); - var context = new Context(createdFact, null) - .mergeMatch(oc.match) - .set(this.alias, o); - if (add) { - var fm = this.fromMemory[createdFact.id]; - if (!fm) { - fm = this.fromMemory[createdFact.id] = {}; - } - fm[oc.hashCode] = oc; - } - var fh = context.factHash; - var eqConstraints = this.__equalityConstraints; - for (var i = 0, l = eqConstraints.length; i < l; i++) { - if (eqConstraints[i](fh, fh)) { - ret = true; - } else { - ret = false; - break; - } - } - } - return ret; - }, + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); + }); - assertLeft: function (context) { - this.__addToLeftMemory(context); - this.__findMatches(context); - }, + // MOMENTS - assertRight: function () { - throw new Error("Shouldnt have gotten here"); - }, + function getSetWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy + ); + } - retractRight: function () { - throw new Error("Shouldnt have gotten here"); + function getSetISOWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.isoWeek(), + this.isoWeekday(), + 1, + 4 + ); + } + + function getISOWeeksInYear() { + return weeksInYear(this.year(), 1, 4); + } + + function getISOWeeksInISOWeekYear() { + return weeksInYear(this.isoWeekYear(), 1, 4); + } + + function getWeeksInYear() { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getWeeksInWeekYear() { + var weekInfo = this.localeData()._week; + return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; } -}).as(module); -/***/ }), + // FORMATTING -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js ***! - \***************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + addFormatToken('Q', 0, 'Qo', 'quarter'); -"use strict"; + // ALIASES -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - forEach = extd.forEach, - some = extd.some, - declare = extd.declare, - pattern = __webpack_require__(/*! ../pattern.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), - ObjectPattern = pattern.ObjectPattern, - FromPattern = pattern.FromPattern, - FromNotPattern = pattern.FromNotPattern, - ExistsPattern = pattern.ExistsPattern, - FromExistsPattern = pattern.FromExistsPattern, - NotPattern = pattern.NotPattern, - CompositePattern = pattern.CompositePattern, - InitialFactPattern = pattern.InitialFactPattern, - constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), - HashConstraint = constraints.HashConstraint, - ReferenceConstraint = constraints.ReferenceConstraint, - AliasNode = __webpack_require__(/*! ./aliasNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js"), - EqualityNode = __webpack_require__(/*! ./equalityNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js"), - JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), - NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), - FromNode = __webpack_require__(/*! ./fromNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js"), - FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), - ExistsNode = __webpack_require__(/*! ./existsNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js"), - ExistsFromNode = __webpack_require__(/*! ./existsFromNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js"), - LeftAdapterNode = __webpack_require__(/*! ./leftAdapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js"), - RightAdapterNode = __webpack_require__(/*! ./rightAdapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js"), - TypeNode = __webpack_require__(/*! ./typeNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js"), - TerminalNode = __webpack_require__(/*! ./terminalNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js"), - PropertyNode = __webpack_require__(/*! ./propertyNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js"); + addUnitAlias('quarter', 'Q'); -function hasRefernceConstraints(pattern) { - return some(pattern.constraints || [], function (c) { - return c instanceof ReferenceConstraint; - }); -} + // PRIORITY -declare({ - instance: { - constructor: function (wm, agendaTree) { - this.terminalNodes = []; - this.joinNodes = []; - this.nodes = []; - this.constraints = []; - this.typeNodes = []; - this.__ruleCount = 0; - this.bucket = { - counter: 0, - recency: 0 - }; - this.agendaTree = agendaTree; - this.workingMemory = wm; - }, + addUnitPriority('quarter', 7); - assertRule: function (rule) { - var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree); - this.__addToNetwork(rule, rule.pattern, terminalNode); - this.__mergeJoinNodes(); - this.terminalNodes.push(terminalNode); - }, + // PARSING - resetCounter: function () { - this.bucket.counter = 0; - }, + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); - incrementCounter: function () { - this.bucket.counter++; - }, + // MOMENTS - assertFact: function (fact) { - var typeNodes = this.typeNodes, i = typeNodes.length - 1; - for (; i >= 0; i--) { - typeNodes[i].assert(fact); - } - }, + function getSetQuarter(input) { + return input == null + ? Math.ceil((this.month() + 1) / 3) + : this.month((input - 1) * 3 + (this.month() % 3)); + } - retractFact: function (fact) { - var typeNodes = this.typeNodes, i = typeNodes.length - 1; - for (; i >= 0; i--) { - typeNodes[i].retract(fact); - } - }, + // FORMATTING - modifyFact: function (fact) { - var typeNodes = this.typeNodes, i = typeNodes.length - 1; - for (; i >= 0; i--) { - typeNodes[i].modify(fact); - } - }, + addFormatToken('D', ['DD', 2], 'Do', 'date'); + // ALIASES - containsRule: function (name) { - return some(this.terminalNodes, function (n) { - return n.rule.name === name; - }); - }, + addUnitAlias('date', 'D'); - dispose: function () { - var typeNodes = this.typeNodes, i = typeNodes.length - 1; - for (; i >= 0; i--) { - typeNodes[i].dispose(); - } - }, + // PRIORITY + addUnitPriority('date', 9); - __mergeJoinNodes: function () { - var joinNodes = this.joinNodes; - for (var i = 0; i < joinNodes.length; i++) { - var j1 = joinNodes[i], j2 = joinNodes[i + 1]; - if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) { - j1.merge(j2); - joinNodes.splice(i + 1, 1); - } - } - }, + // PARSING - __checkEqual: function (node) { - var constraints = this.constraints, i = constraints.length - 1; - for (; i >= 0; i--) { - var n = constraints[i]; - if (node.equal(n)) { - return n; - } - } - constraints.push(node); - return node; - }, + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict + ? locale._dayOfMonthOrdinalParse || locale._ordinalParse + : locale._dayOfMonthOrdinalParseLenient; + }); - __createTypeNode: function (rule, pattern) { - var ret = new TypeNode(pattern.get("constraints")[0]); - var constraints = this.typeNodes, i = constraints.length - 1; - for (; i >= 0; i--) { - var n = constraints[i]; - if (ret.equal(n)) { - return n; - } - } - constraints.push(ret); - return ret; - }, + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0]); + }); - __createEqualityNode: function (rule, constraint) { - return this.__checkEqual(new EqualityNode(constraint)).addRule(rule); - }, + // MOMENTS - __createPropertyNode: function (rule, constraint) { - return this.__checkEqual(new PropertyNode(constraint)).addRule(rule); - }, + var getSetDayOfMonth = makeGetSet('Date', true); - __createAliasNode: function (rule, pattern) { - return this.__checkEqual(new AliasNode(pattern)).addRule(rule); - }, + // FORMATTING - __createAdapterNode: function (rule, side) { - return (side === "left" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule); - }, + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - __createJoinNode: function (rule, pattern, outNode, side) { - var joinNode; - if (pattern.rightPattern instanceof NotPattern) { - joinNode = new NotNode(); - } else if (pattern.rightPattern instanceof FromExistsPattern) { - joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory); - } else if (pattern.rightPattern instanceof ExistsPattern) { - joinNode = new ExistsNode(); - } else if (pattern.rightPattern instanceof FromNotPattern) { - joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory); - } else if (pattern.rightPattern instanceof FromPattern) { - joinNode = new FromNode(pattern.rightPattern, this.workingMemory); - } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) { - joinNode = new BetaNode(); - this.joinNodes.push(joinNode); - } else { - joinNode = new JoinNode(); - this.joinNodes.push(joinNode); - } - joinNode["__rule__"] = rule; - var parentNode = joinNode; - if (outNode instanceof BetaNode) { - var adapterNode = this.__createAdapterNode(rule, side); - parentNode.addOutNode(adapterNode, pattern); - parentNode = adapterNode; - } - parentNode.addOutNode(outNode, pattern); - return joinNode.addRule(rule); - }, + // ALIASES - __addToNetwork: function (rule, pattern, outNode, side) { - if (pattern instanceof ObjectPattern) { - if (!(pattern instanceof InitialFactPattern) && (!side || side === "left")) { - this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side); - } else { - this.__createAlphaNode(rule, pattern, outNode, side); - } - } else if (pattern instanceof CompositePattern) { - this.__createBetaNode(rule, pattern, outNode, side); - } - }, + addUnitAlias('dayOfYear', 'DDD'); - __createBetaNode: function (rule, pattern, outNode, side) { - var joinNode = this.__createJoinNode(rule, pattern, outNode, side); - this.__addToNetwork(rule, pattern.rightPattern, joinNode, "right"); - this.__addToNetwork(rule, pattern.leftPattern, joinNode, "left"); - outNode.addParentNode(joinNode); - return joinNode; - }, + // PRIORITY + addUnitPriority('dayOfYear', 4); + // PARSING - __createAlphaNode: function (rule, pattern, outNode, side) { - var typeNode, parentNode; - if (!(pattern instanceof FromPattern)) { + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); - var constraints = pattern.get("constraints"); - typeNode = this.__createTypeNode(rule, pattern); - var aliasNode = this.__createAliasNode(rule, pattern); - typeNode.addOutNode(aliasNode, pattern); - aliasNode.addParentNode(typeNode); - parentNode = aliasNode; - var i = constraints.length - 1; - for (; i > 0; i--) { - var constraint = constraints[i], node; - if (constraint instanceof HashConstraint) { - node = this.__createPropertyNode(rule, constraint); - } else if (constraint instanceof ReferenceConstraint) { - outNode.constraint.addConstraint(constraint); - continue; - } else { - node = this.__createEqualityNode(rule, constraint); - } - parentNode.addOutNode(node, pattern); - node.addParentNode(parentNode); - parentNode = node; - } + // HELPERS - if (outNode instanceof BetaNode) { - var adapterNode = this.__createAdapterNode(rule, side); - adapterNode.addParentNode(parentNode); - parentNode.addOutNode(adapterNode, pattern); - parentNode = adapterNode; - } - outNode.addParentNode(parentNode); - parentNode.addOutNode(outNode, pattern); - return typeNode; - } - }, + // MOMENTS - print: function () { - forEach(this.terminalNodes, function (t) { - t.print(" "); - }); - } + function getSetDayOfYear(input) { + var dayOfYear = + Math.round( + (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 + ) + 1; + return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); } -}).as(exports, "RootNode"); + // FORMATTING + addFormatToken('m', ['mm', 2], 0, 'minute'); + // ALIASES + addUnitAlias('minute', 'm'); + // PRIORITY + addUnitPriority('minute', 14); -/***/ }), + // PARSING -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); -/* module decorator */ module = __webpack_require__.nmd(module); -var BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), - JoinReferenceNode = __webpack_require__(/*! ./joinReferenceNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js"); + // MOMENTS -BetaNode.extend({ + var getSetMinute = makeGetSet('Minutes', false); - instance: { - constructor: function () { - this._super(arguments); - this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples); - }, + // FORMATTING - nodeType: "JoinNode", + addFormatToken('s', ['ss', 2], 0, 'second'); - propagateFromLeft: function (context, rm) { - var mr; - if ((mr = this.constraint.match(context, rm)).isMatch) { - this.__propagate("assert", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr))); - } - return this; - }, + // ALIASES - propagateFromRight: function (context, lm) { - var mr; - if ((mr = this.constraint.match(lm, context)).isMatch) { - this.__propagate("assert", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr))); - } - return this; - }, + addUnitAlias('second', 's'); - propagateAssertModifyFromLeft: function (context, rightMatches, rm) { - var factId = rm.hashCode, mr; - if (factId in rightMatches) { - mr = this.constraint.match(context, rm); - var mrIsMatch = mr.isMatch; - if (!mrIsMatch) { - this.__propagate("retract", rightMatches[factId].clone()); - } else { - this.__propagate("modify", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr))); - } - } else { - this.propagateFromLeft(context, rm); - } - }, + // PRIORITY - propagateAssertModifyFromRight: function (context, leftMatches, lm) { - var factId = lm.hashCode, mr; - if (factId in leftMatches) { - mr = this.constraint.match(lm, context); - var mrIsMatch = mr.isMatch; - if (!mrIsMatch) { - this.__propagate("retract", leftMatches[factId].clone()); - } else { - this.__propagate("modify", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr))); - } - } else { - this.propagateFromRight(context, lm); - } - } - } + addUnitPriority('second', 15); -}).as(module); + // PARSING -/***/ }), + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js ***! - \***************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // MOMENTS -/* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), - ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint; + var getSetSecond = makeGetSet('Seconds', false); -var DEFUALT_CONSTRAINT = { - isDefault: true, - assert: function () { - return true; - }, + // FORMATTING - equal: function () { - return false; - } -}; + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); -var inversions = { - "gt": "lte", - "gte": "lte", - "lt": "gte", - "lte": "gte", - "eq": "eq", - "neq": "neq" -}; + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); -function normalizeRightIndexConstraint(rightIndex, indexes, op) { - if (rightIndex === indexes[1]) { - op = inversions[op]; + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PRIORITY + + addUnitPriority('millisecond', 16); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token, getSetMillisecond; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); } - return op; -} -function normalizeLeftIndexConstraint(leftIndex, indexes, op) { - if (leftIndex === indexes[1]) { - op = inversions[op]; + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); } - return op; -} -Node.extend({ + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } - instance: { + getSetMillisecond = makeGetSet('Milliseconds', false); - constraint: DEFUALT_CONSTRAINT, + // FORMATTING - constructor: function (leftMemory, rightMemory) { - this._super(arguments); - this.constraint = DEFUALT_CONSTRAINT; - this.constraintAssert = DEFUALT_CONSTRAINT.assert; - this.rightIndexes = []; - this.leftIndexes = []; - this.constraintLength = 0; - this.leftMemory = leftMemory; - this.rightMemory = rightMemory; - }, + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); - addConstraint: function (constraint) { - if (constraint instanceof ReferenceEqualityConstraint) { - var identifiers = constraint.getIndexableProperties(); - var alias = constraint.get("alias"); - if (identifiers.length === 2 && alias) { - var leftIndex, rightIndex, i = -1, indexes = []; - while (++i < 2) { - var index = identifiers[i]; - if (index.match(new RegExp("^" + alias + "(\\.?)")) === null) { - indexes.push(index); - leftIndex = index; - } else { - indexes.push(index); - rightIndex = index; - } - } - if (leftIndex && rightIndex) { - var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op), - rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op); - this.rightMemory.addIndex(rightIndex, leftIndex, rightOp); - this.leftMemory.addIndex(leftIndex, rightIndex, leftOp); - } - } - } - if (this.constraint.isDefault) { - this.constraint = constraint; - this.isDefault = false; - } else { - this.constraint = this.constraint.merge(constraint); - } - this.constraintAssert = this.constraint.assert; + // MOMENTS - }, + function getZoneAbbr() { + return this._isUTC ? 'UTC' : ''; + } - equal: function (constraint) { - return this.constraint.equal(constraint.constraint); - }, + function getZoneName() { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } - isMatch: function (lc, rc) { - return this.constraintAssert(lc.factHash, rc.factHash); - }, + var proto = Moment.prototype; - match: function (lc, rc) { - var ret = {isMatch: false}; - if (this.constraintAssert(lc.factHash, rc.factHash)) { - ret = lc.match.merge(rc.match); - } - return ret; - } + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + if (typeof Symbol !== 'undefined' && Symbol.for != null) { + proto[Symbol.for('nodejs.util.inspect.custom')] = function () { + return 'Moment<' + this.format() + '>'; + }; + } + proto.toJSON = toJSON; + proto.toString = toString; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.eraName = getEraName; + proto.eraNarrow = getEraNarrow; + proto.eraAbbr = getEraAbbr; + proto.eraYear = getEraYear; + proto.year = getSetYear; + proto.isLeapYear = getIsLeapYear; + proto.weekYear = getSetWeekYear; + proto.isoWeekYear = getSetISOWeekYear; + proto.quarter = proto.quarters = getSetQuarter; + proto.month = getSetMonth; + proto.daysInMonth = getDaysInMonth; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.weeksInWeekYear = getWeeksInWeekYear; + proto.isoWeeksInYear = getISOWeeksInYear; + proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeekday = getSetISODayOfWeek; + proto.dayOfYear = getSetDayOfYear; + proto.hour = proto.hours = getSetHour; + proto.minute = proto.minutes = getSetMinute; + proto.second = proto.seconds = getSetSecond; + proto.millisecond = proto.milliseconds = getSetMillisecond; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; + proto.hasAlignedHourOffset = hasAlignedHourOffset; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; + proto.zoneAbbr = getZoneAbbr; + proto.zoneName = getZoneName; + proto.dates = deprecate( + 'dates accessor is deprecated. Use date instead.', + getSetDayOfMonth + ); + proto.months = deprecate( + 'months accessor is deprecated. Use month instead', + getSetMonth + ); + proto.years = deprecate( + 'years accessor is deprecated. Use year instead', + getSetYear + ); + proto.zone = deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', + getSetZone + ); + proto.isDSTShifted = deprecate( + 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', + isDaylightSavingTimeShifted + ); + function createUnix(input) { + return createLocal(input * 1000); } -}).as(module); + function createInZone() { + return createLocal.apply(null, arguments).parseZone(); + } -/***/ }), + function preParsePostFormat(string) { + return string; + } + + var proto$1 = Locale.prototype; + + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set; + proto$1.eras = localeEras; + proto$1.erasParse = localeErasParse; + proto$1.erasConvertYear = localeErasConvertYear; + proto$1.erasAbbrRegex = erasAbbrRegex; + proto$1.erasNameRegex = erasNameRegex; + proto$1.erasNarrowRegex = erasNarrowRegex; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js ***! - \*************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; + proto$1.week = localeWeek; + proto$1.firstDayOfYear = localeFirstDayOfYear; + proto$1.firstDayOfWeek = localeFirstDayOfWeek; -/* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; -Node.extend({ - instance: { - propagateAssert: function (context) { - this.__propagate("assertLeft", context); - }, + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; - propagateRetract: function (context) { - this.__propagate("retractLeft", context); - }, + proto$1.isPM = localeIsPM; + proto$1.meridiem = localeMeridiem; - propagateResolve: function (context) { - this.__propagate("retractResolve", context); - }, + function get$1(format, index, field, setter) { + var locale = getLocale(), + utc = createUTC().set(setter, index); + return locale[field](utc, format); + } - propagateModify: function (context) { - this.__propagate("modifyLeft", context); - }, + function listMonthsImpl(format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } - retractResolve: function (match) { - this.__propagate("retractResolve", match); - }, + format = format || ''; - dispose: function (context) { - this.propagateDispose(context); - }, + if (index != null) { + return get$1(format, index, field, 'month'); + } - toString: function () { - return "LeftAdapterNode " + this.__count; + var i, + out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); } + return out; } -}).as(module); + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl(localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } -/***/ }), + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js ***! - \**********************************************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { + if (isNumber(format)) { + index = format; + format = undefined; + } -exports.getMemory = (function () { + format = format || ''; + } - var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0; + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0, + i, + out = []; - function mergePossibleTuples(ret, a, l) { - var val, j = 0, i = -1; - if (PL < l) { - while (PL && ++i < l) { - if (POSSIBLES_HASH[(val = a[i]).hashCode]) { - ret[j++] = val; - PL--; - } - } - } else { - pPush.apply(ret, a); + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); } - PL = 0; - POSSIBLES_HASH = {}; - } - - function mergeNotPossibleTuples(ret, a, l) { - var val, j = 0, i = -1; - if (NPL < l) { - while (++i < l) { - if (!NPL) { - ret[j++] = a[i]; - } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) { - ret[j++] = val; - } else { - NPL--; - } - } + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); } - NPL = 0; - NOT_POSSIBLES_HASH = {}; + return out; } - function mergeBothTuples(ret, a, l) { - if (PL === l) { - mergeNotPossibles(ret, a, l); - } else if (NPL < l) { - var val, j = 0, i = -1, hashCode; - while (++i < l) { - if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) { - ret[j++] = val; - } - } - } - NPL = 0; - NOT_POSSIBLES_HASH = {}; - PL = 0; - POSSIBLES_HASH = {}; + function listMonths(format, index) { + return listMonthsImpl(format, index, 'months'); } - function mergePossiblesAndNotPossibles(a, l) { - var ret = EMPTY_ARRAY; - if (l) { - if (NPL || PL) { - ret = []; - if (!NPL) { - mergePossibleTuples(ret, a, l); - } else if (!PL) { - mergeNotPossibleTuples(ret, a, l); - } else { - mergeBothTuples(ret, a, l); - } - } else { - ret = a; - } - } - return ret; + function listMonthsShort(format, index) { + return listMonthsImpl(format, index, 'monthsShort'); } - function getRangeTuples(op, currEntry, val) { - var ret; - if (op === "gt") { - ret = currEntry.findGT(val); - } else if (op === "gte") { - ret = currEntry.findGTE(val); - } else if (op === "lt") { - ret = currEntry.findLT(val); - } else if (op === "lte") { - ret = currEntry.findLTE(val); - } - return ret; + function listWeekdays(localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); } - function mergeNotPossibles(tuples, tl) { - if (tl) { - var j = -1, hashCode; - while (++j < tl) { - hashCode = tuples[j].hashCode; - if (!NOT_POSSIBLES_HASH[hashCode]) { - NOT_POSSIBLES_HASH[hashCode] = true; - NPL++; - } - } - } + function listWeekdaysShort(localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); } - function mergePossibles(tuples, tl) { - if (tl) { - var j = -1, hashCode; - while (++j < tl) { - hashCode = tuples[j].hashCode; - if (!POSSIBLES_HASH[hashCode]) { - POSSIBLES_HASH[hashCode] = true; - PL++; - } - } - } + function listWeekdaysMin(localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); } - return function _getMemory(entry, factHash, indexes) { - var i = -1, l = indexes.length, - ret = entry.tuples, - rl = ret.length, - intersected = false, - tables = entry.tables, - index, val, op, nextEntry, currEntry, tuples, tl; - while (++i < l && rl) { - index = indexes[i]; - val = index[3](factHash); - op = index[4]; - currEntry = tables[index[0]]; - if (op === "eq" || op === "seq") { - if ((nextEntry = currEntry.get(val))) { - rl = (ret = (entry = nextEntry).tuples).length; - tables = nextEntry.tables; - } else { - rl = (ret = EMPTY_ARRAY).length; - } - } else if (op === "neq" || op === "sneq") { - if ((nextEntry = currEntry.get(val))) { - tl = (tuples = nextEntry.tuples).length; - mergeNotPossibles(tuples, tl); - } - } else if (!intersected) { - rl = (ret = getRangeTuples(op, currEntry, val)).length; - intersected = true; - } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) { - mergePossibles(tuples, tl); - } else { - ret = tuples; - rl = tl; - } - } - return mergePossiblesAndNotPossibles(ret, rl); - }; -}()); + getSetGlobalLocale('en', { + eras: [ + { + since: '0001-01-01', + until: +Infinity, + offset: 1, + name: 'Anno Domini', + narrow: 'AD', + abbr: 'AD', + }, + { + since: '0000-12-31', + until: -Infinity, + offset: 1, + name: 'Before Christ', + narrow: 'BC', + abbr: 'BC', + }, + ], + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal: function (number) { + var b = number % 10, + output = + toInt((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + }); -/***/ }), + // Side effect imports -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js ***! - \*************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + hooks.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + getSetGlobalLocale + ); + hooks.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + getLocale + ); -/* module decorator */ module = __webpack_require__.nmd(module); -var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); + var mathAbs = Math.abs; -Memory.extend({ + function abs() { + var data = this._data; - instance: { + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); - getLeftMemory: function (tuple) { - return this.getMemory(tuple); - } + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; } -}).as(module); + function addSubtract$1(duration, input, value, direction) { + var other = createDuration(input, value); -/***/ }), + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return duration._bubble(); + } -/* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - plucker = extd.plucker, - declare = extd.declare, - getMemory = __webpack_require__(/*! ./helpers */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js").getMemory, - Table = __webpack_require__(/*! ./table */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js"), - TupleEntry = __webpack_require__(/*! ./tupleEntry */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js"); + // supports only 2.0-style add(1, 's') or add(duration) + function add$1(input, value) { + return addSubtract$1(this, input, value, 1); + } + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function subtract$1(input, value) { + return addSubtract$1(this, input, value, -1); + } -var id = 0; -declare({ + function absCeil(number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } - instance: { - length: 0, + function bubble() { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, + minutes, + hours, + years, + monthsFromDays; - constructor: function () { - this.head = null; - this.tail = null; - this.indexes = []; - this.tables = new TupleEntry(null, new Table(), false); - }, + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if ( + !( + (milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0) + ) + ) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } - push: function (data) { - var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null}; - if (tail) { - this.tail.next = node; - } - this.tail = node; - if (!head) { - this.head = node; - } - this.length++; - this.__index(node); - this.tables.addNode(node); - return node; - }, + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - remove: function (node) { - if (node.prev) { - node.prev.next = node.next; - } else { - this.head = node.next; - } - if (node.next) { - node.next.prev = node.prev; - } else { - this.tail = node.prev; - } - this.tables.removeNode(node); - this.__removeFromIndex(node); - this.length--; - }, + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; - forEach: function (cb) { - var head = {next: this.head}; - while ((head = head.next)) { - cb(head.data); - } - }, + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; - toArray: function () { - return this.tables.tuples.slice(); - }, + hours = absFloor(minutes / 60); + data.hours = hours % 24; - clear: function () { - this.head = this.tail = null; - this.length = 0; - this.clearIndexes(); - }, + days += absFloor(hours / 24); - clearIndexes: function () { - this.tables = {}; - this.indexes.length = 0; - }, + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); - __index: function (node) { - var data = node.data, - factHash = data.factHash, - indexes = this.indexes, - entry = this.tables, - i = -1, l = indexes.length, - tuples, index, val, path, tables, currEntry, prevLookup; - while (++i < l) { - index = indexes[i]; - val = index[2](factHash); - path = index[0]; - tables = entry.tables; - if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) { - tuples = new TupleEntry(val, currEntry, true); - currEntry.set(val, tuples); - } - if (currEntry !== prevLookup) { - node.tuples.push(tuples.addNode(node)); - } - prevLookup = currEntry; - if (index[4] === "eq") { - entry = tuples; - } - } - }, + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; - __removeFromIndex: function (node) { - var tuples = node.tuples, i = tuples.length; - while (--i >= 0) { - tuples[i].removeNode(node); - } - node.tuples.length = 0; - }, + data.days = days; + data.months = months; + data.years = years; - getMemory: function (tuple) { - var ret; - if (!this.length) { - ret = []; - } else { - ret = getMemory(this.tables, tuple.factHash, this.indexes); - } - return ret; - }, + return this; + } - __createIndexTree: function () { - var table = this.tables.tables = {}; - var indexes = this.indexes; - table[indexes[0][0]] = new Table(); - }, + function daysToMonths(days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return (days * 4800) / 146097; + } + function monthsToDays(months) { + // the reverse of daysToMonths + return (months * 146097) / 4800; + } - addIndex: function (primary, lookup, op) { - this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || "eq"]); - this.indexes.sort(function (a, b) { - var aOp = a[4], bOp = b[4]; - return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1; - }); - this.__createIndexTree(); + function as(units) { + if (!this.isValid()) { + return NaN; + } + var days, + months, + milliseconds = this._milliseconds; + + units = normalizeUnits(units); + if (units === 'month' || units === 'quarter' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + switch (units) { + case 'month': + return months; + case 'quarter': + return months / 3; + case 'year': + return months / 12; + } + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week': + return days / 7 + milliseconds / 6048e5; + case 'day': + return days + milliseconds / 864e5; + case 'hour': + return days * 24 + milliseconds / 36e5; + case 'minute': + return days * 1440 + milliseconds / 6e4; + case 'second': + return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': + return Math.floor(days * 864e5) + milliseconds; + default: + throw new Error('Unknown unit ' + units); + } } + } + // TODO: Use this.as('ms')? + function valueOf$1() { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); } -}).as(module); + function makeAs(alias) { + return function () { + return this.as(alias); + }; + } -/***/ }), + var asMilliseconds = makeAs('ms'), + asSeconds = makeAs('s'), + asMinutes = makeAs('m'), + asHours = makeAs('h'), + asDays = makeAs('d'), + asWeeks = makeAs('w'), + asMonths = makeAs('M'), + asQuarters = makeAs('Q'), + asYears = makeAs('y'); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js ***! - \**************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function clone$1() { + return createDuration(this); + } -/* module decorator */ module = __webpack_require__.nmd(module); -var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); + function get$2(units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; + } -Memory.extend({ + function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; + } - instance: { + var milliseconds = makeGetter('milliseconds'), + seconds = makeGetter('seconds'), + minutes = makeGetter('minutes'), + hours = makeGetter('hours'), + days = makeGetter('days'), + months = makeGetter('months'), + years = makeGetter('years'); - getRightMemory: function (tuple) { - return this.getMemory(tuple); - } + function weeks() { + return absFloor(this.days() / 7); } -}).as(module); + var round = Math.round, + thresholds = { + ss: 44, // a few seconds to seconds + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month/week + w: null, // weeks to month + M: 11, // months to year + }; -/***/ }), + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { + var duration = createDuration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + weeks = round(duration.as('w')), + years = round(duration.as('y')), + a = + (seconds <= thresholds.ss && ['s', seconds]) || + (seconds < thresholds.s && ['ss', seconds]) || + (minutes <= 1 && ['m']) || + (minutes < thresholds.m && ['mm', minutes]) || + (hours <= 1 && ['h']) || + (hours < thresholds.h && ['hh', hours]) || + (days <= 1 && ['d']) || + (days < thresholds.d && ['dd', days]); -/* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - pPush = Array.prototype.push, - HashTable = extd.HashTable, - AVLTree = extd.AVLTree; + if (thresholds.w != null) { + a = + a || + (weeks <= 1 && ['w']) || + (weeks < thresholds.w && ['ww', weeks]); + } + a = a || + (months <= 1 && ['M']) || + (months < thresholds.M && ['MM', months]) || + (years <= 1 && ['y']) || ['yy', years]; -function compare(a, b) { - /*jshint eqeqeq: false*/ - a = a.key; - b = b.key; - var ret; - if (a == b) { - ret = 0; - } else if (a > b) { - ret = 1; - } else if (a < b) { - ret = -1; - } else { - ret = 1; + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); } - return ret; -} - -function compareGT(v1, v2) { - return compare(v1, v2) === 1; -} -function compareGTE(v1, v2) { - return compare(v1, v2) !== -1; -} - -function compareLT(v1, v2) { - return compare(v1, v2) === -1; -} -function compareLTE(v1, v2) { - return compare(v1, v2) !== 1; -} -var STACK = [], - VALUE = {key: null}; -function traverseInOrder(tree, key, comparator) { - VALUE.key = key; - var ret = []; - var i = 0, current = tree.__root, v; - while (true) { - if (current) { - current = (STACK[i++] = current).left; - } else { - if (i > 0) { - v = (current = STACK[--i]).data; - if (comparator(v, VALUE)) { - pPush.apply(ret, v.value.tuples); - current = current.right; - } else { - break; - } - } else { - break; - } + // This function allows you to set the rounding function for relative time strings + function getSetRelativeTimeRounding(roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof roundingFunction === 'function') { + round = roundingFunction; + return true; } + return false; } - STACK.length = 0; - return ret; -} -function traverseReverseOrder(tree, key, comparator) { - VALUE.key = key; - var ret = []; - var i = 0, current = tree.__root, v; - while (true) { - if (current) { - current = (STACK[i++] = current).right; - } else { - if (i > 0) { - v = (current = STACK[--i]).data; - if (comparator(v, VALUE)) { - pPush.apply(ret, v.value.tuples); - current = current.left; - } else { - break; - } - } else { - break; - } + // This function allows you to set a threshold for relative time strings + function getSetRelativeTimeThreshold(threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; } + return true; } - STACK.length = 0; - return ret; -} - -AVLTree.extend({ - instance: { - - constructor: function () { - this._super([ - { - compare: compare - } - ]); - this.gtCache = new HashTable(); - this.gteCache = new HashTable(); - this.ltCache = new HashTable(); - this.lteCache = new HashTable(); - this.hasGTCache = false; - this.hasGTECache = false; - this.hasLTCache = false; - this.hasLTECache = false; - }, - clearCache: function () { - this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false); - this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false); - this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false); - this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false); - }, + function humanize(argWithSuffix, argThresholds) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } - contains: function (key) { - return this._super([ - {key: key} - ]); - }, + var withSuffix = false, + th = thresholds, + locale, + output; - "set": function (key, value) { - this.insert({key: key, value: value}); - this.clearCache(); - }, + if (typeof argWithSuffix === 'object') { + argThresholds = argWithSuffix; + argWithSuffix = false; + } + if (typeof argWithSuffix === 'boolean') { + withSuffix = argWithSuffix; + } + if (typeof argThresholds === 'object') { + th = Object.assign({}, thresholds, argThresholds); + if (argThresholds.s != null && argThresholds.ss == null) { + th.ss = argThresholds.s - 1; + } + } - "get": function (key) { - var ret = this.find({key: key}); - return ret && ret.value; - }, + locale = this.localeData(); + output = relativeTime$1(this, !withSuffix, th, locale); - "remove": function (key) { - this.clearCache(); - return this._super([ - {key: key} - ]); - }, + if (withSuffix) { + output = locale.pastFuture(+this, output); + } - findGT: function (key) { - var ret = this.gtCache.get(key); - if (!ret) { - this.hasGTCache = true; - this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT))); - } - return ret; - }, + return locale.postformat(output); + } - findGTE: function (key) { - var ret = this.gteCache.get(key); - if (!ret) { - this.hasGTECache = true; - this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE))); - } - return ret; - }, + var abs$1 = Math.abs; - findLT: function (key) { - var ret = this.ltCache.get(key); - if (!ret) { - this.hasLTCache = true; - this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT))); - } - return ret; - }, + function sign(x) { + return (x > 0) - (x < 0) || +x; + } - findLTE: function (key) { - var ret = this.lteCache.get(key); - if (!ret) { - this.hasLTECache = true; - this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE))); - } - return ret; + function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); } - } -}).as(module); + var seconds = abs$1(this._milliseconds) / 1000, + days = abs$1(this._days), + months = abs$1(this._months), + minutes, + hours, + years, + s, + total = this.asSeconds(), + totalSign, + ymSign, + daysSign, + hmsSign; -/***/ }), + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js ***! - \*************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; -/* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - indexOf = extd.indexOf; -// HashSet = require("./hashSet"); + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; -var TUPLE_ID = 0; -extd.declare({ + totalSign = total < 0 ? '-' : ''; + ymSign = sign(this._months) !== sign(total) ? '-' : ''; + daysSign = sign(this._days) !== sign(total) ? '-' : ''; + hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; - instance: { - tuples: null, - tupleMap: null, - hashCode: null, - tables: null, - entry: null, - constructor: function (val, entry, canRemove) { - this.val = val; - this.canRemove = canRemove; - this.tuples = []; - this.tupleMap = {}; - this.hashCode = TUPLE_ID++; - this.tables = {}; - this.length = 0; - this.entry = entry; - }, + return ( + totalSign + + 'P' + + (years ? ymSign + years + 'Y' : '') + + (months ? ymSign + months + 'M' : '') + + (days ? daysSign + days + 'D' : '') + + (hours || minutes || seconds ? 'T' : '') + + (hours ? hmsSign + hours + 'H' : '') + + (minutes ? hmsSign + minutes + 'M' : '') + + (seconds ? hmsSign + s + 'S' : '') + ); + } - addNode: function (node) { - this.tuples[this.length++] = node; - if (this.length > 1) { - this.entry.clearCache(); - } - return this; - }, + var proto$2 = Duration.prototype; - removeNode: function (node) { - var tuples = this.tuples, index = indexOf(tuples, node); - if (index !== -1) { - tuples.splice(index, 1); - this.length--; - this.entry.clearCache(); - } - if (this.canRemove && !this.length) { - this.entry.remove(this.val); - } - } - } -}).as(module); + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; + proto$2.asMilliseconds = asMilliseconds; + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asQuarters = asQuarters; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes; + proto$2.hours = hours; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; -/***/ }), + proto$2.toIsoString = deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', + toISOString$1 + ); + proto$2.lang = lang; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // FORMATTING -/* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - forEach = extd.forEach, - indexOf = extd.indexOf, - intersection = extd.intersection, - declare = extd.declare, - HashTable = extd.HashTable, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"); + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); -var count = 0; -declare({ - instance: { - constructor: function () { - this.nodes = new HashTable(); - this.rules = []; - this.parentNodes = []; - this.__count = count++; - this.__entrySet = []; - }, + // PARSING - addRule: function (rule) { - if (indexOf(this.rules, rule) === -1) { - this.rules.push(rule); - } - return this; - }, + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); - merge: function (that) { - that.nodes.forEach(function (entry) { - var patterns = entry.value, node = entry.key; - for (var i = 0, l = patterns.length; i < l; i++) { - this.addOutNode(node, patterns[i]); - } - that.nodes.remove(node); - }, this); - var thatParentNodes = that.parentNodes; - for (var i = 0, l = that.parentNodes.l; i < l; i++) { - var parentNode = thatParentNodes[i]; - this.addParentNode(parentNode); - parentNode.nodes.remove(that); - } - return this; - }, + //! moment.js - resolve: function (mr1, mr2) { - return mr1.hashCode === mr2.hashCode; - }, + hooks.version = '2.26.0'; - print: function (tab) { - console.log(tab + this.toString()); - forEach(this.parentNodes, function (n) { - n.print(" " + tab); - }); - }, + setHookCallback(createLocal); - addOutNode: function (outNode, pattern) { - if (!this.nodes.contains(outNode)) { - this.nodes.put(outNode, []); - } - this.nodes.get(outNode).push(pattern); - this.__entrySet = this.nodes.entrySet(); - }, + hooks.fn = proto; + hooks.min = min; + hooks.max = max; + hooks.now = now; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; - addParentNode: function (n) { - if (indexOf(this.parentNodes, n) === -1) { - this.parentNodes.push(n); - } - }, + // currently HTML5 input type only supports 24-hour formats + hooks.HTML5_FMT = { + DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // + DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // + DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // + DATE: 'YYYY-MM-DD', // + TIME: 'HH:mm', // + TIME_SECONDS: 'HH:mm:ss', // + TIME_MS: 'HH:mm:ss.SSS', // + WEEK: 'GGGG-[W]WW', // + MONTH: 'YYYY-MM', // + }; - shareable: function () { - return false; - }, + return hooks; - __propagate: function (method, context) { - var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths; - while (--i > -1) { - entry = entrySet[i]; - outNode = entry.key; - paths = entry.value; +}))); - if ((continuingPaths = intersection(paths, context.paths)).length) { - outNode[method](new Context(context.fact, continuingPaths, context.match)); - } - } - }, +/***/ }), - dispose: function (assertable) { - this.propagateDispose(assertable); - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js ***! + \*******************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - retract: function (assertable) { - this.propagateRetract(assertable); - }, +const moment = __webpack_require__(/*! moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js"); - propagateDispose: function (assertable, outNodes) { - outNodes = outNodes || this.nodes; - var entrySet = this.__entrySet, i = entrySet.length - 1; - for (; i >= 0; i--) { - var entry = entrySet[i], outNode = entry.key; - outNode.dispose(assertable); - } - }, +const normalizeStartDate = (intervalStartDate) => { + intervalStartDate = parseInt(intervalStartDate); - propagateAssert: function (assertable) { - this.__propagate("assert", assertable); - }, + if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) { + intervalStartDate = 1; + } - propagateRetract: function (assertable) { - this.__propagate("retract", assertable); - }, + return intervalStartDate; +}; - assert: function (assertable) { - this.propagateAssert(assertable); - }, +const getMinimumStartDate = (intervalStartDate, relativeDate) => { + return moment + .min( + relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'), + relativeDate.clone().startOf('month') + ) + .valueOf(); +}; - modify: function (assertable) { - this.propagateModify(assertable); - }, +const getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => { + return moment + .min( + relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'), + relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month') + ) + .valueOf(); +}; - propagateModify: function (assertable) { - this.__propagate("modify", assertable); - } - } +const getInterval = (intervalStartDate, referenceDate = moment()) => { + intervalStartDate = normalizeStartDate(intervalStartDate); + if (intervalStartDate === 1) { + return { + start: referenceDate.startOf('month').valueOf(), + end: referenceDate.endOf('month').valueOf() + }; + } -}).as(module); + if (intervalStartDate <= referenceDate.date()) { + return { + start: referenceDate.date(intervalStartDate).startOf('day').valueOf(), + end: getMinimumEndDate(intervalStartDate, true, referenceDate) + }; + } + + return { + start: getMinimumStartDate(intervalStartDate, referenceDate), + end: getMinimumEndDate(intervalStartDate, false, referenceDate) + }; +}; + +module.exports = { + // Returns the timestamps of the start and end of the current calendar interval + // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) + // + // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned + // f.e. `intervalStartDate` === 31 would generate next intervals : + // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30] + getCurrent: (intervalStartDate) => getInterval(intervalStartDate), + + /** + * Returns the timestamps of the start and end of the a calendar interval that contains a reference date + * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) + * @param {Number} timestamp - the reference date the interval should include + * @returns { start: number, end: number } - timestamps that define the calendar interval + */ + getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)), +}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js ***! - \*****************************************************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js": +/*!*************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js ***! + \*************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - InitialFact = __webpack_require__(/*! ../pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact; +const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); +_.uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js"); +const deepCopy = obj => JSON.parse(JSON.stringify(obj)); -JoinNode.extend({ - instance: { +const selfAndParents = function(self) { + const parents = []; + let current = self; + while (current) { + if (parents.includes(current)) { + return parents; + } - nodeType: "NotNode", + parents.push(current); + current = current.parent; + } + return parents; +}; - constructor: function () { - this._super(arguments); - this.leftTupleMemory = {}; - //use this ensure a unique match for and propagated context. - this.notMatch = new Context(new InitialFact()).match; - }, +const extractParentIds = current => selfAndParents(current) + .map(parent => parent._id) + .filter(id => id); - __cloneContext: function (context) { - return context.clone(null, null, context.match.merge(this.notMatch)); - }, +const getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id); +const getContactIds = (contacts) => { + const ids = []; + contacts.forEach(doc => { + if (!doc) { + return; + } - retractRight: function (context) { - var ctx = this.removeFromRightMemory(context), - rightContext = ctx.data, - blocking = rightContext.blocking; - if (blocking.length) { - //if we are blocking left contexts - var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc; - while ((blockingNode = blockingNode.next)) { - leftContext = blockingNode.data; - this.removeFromLeftBlockedMemory(leftContext); - var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i; - i = -1; - while (++i < l) { - if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) { - this.blockedContext(leftContext, rc); - leftContext = null; - break; - } - } - if (leftContext) { - this.notBlockedContext(leftContext, true); - } - } - blocking.clear(); - } + const id = utils.getId(doc.contact); + id && ids.push(id); - }, + if (!utils.validLinkedDocs(doc)) { + return; + } + Object.keys(doc.linked_docs).forEach(key => { + const id = utils.getId(doc.linked_docs[key]); + id && ids.push(id); + }); + }); - blockedContext: function (leftContext, rightContext, propagate) { - leftContext.blocker = rightContext; - this.removeFromLeftMemory(leftContext); - this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext)); - propagate && this.__propagate("retract", this.__cloneContext(leftContext)); - }, + return _.uniq(ids); +}; - notBlockedContext: function (leftContext, propagate) { - this.__addToLeftMemory(leftContext); - propagate && this.__propagate("assert", this.__cloneContext(leftContext)); - }, +module.exports = function(Promise, DB) { + const fillParentsInDocs = function(doc, lineage) { + if (!doc || !lineage.length) { + return doc; + } - propagateFromLeft: function (leftContext) { - this.notBlockedContext(leftContext, true); - }, + // Parent hierarchy starts at the contact for data_records + let currentParent; + if (utils.isReport(doc)) { + currentParent = doc.contact = lineage.shift() || doc.contact; + } else { + // It's a contact + currentParent = doc; + } - propagateFromRight: function (leftContext) { - this.notBlockedContext(leftContext, true); - }, + const parentIds = extractParentIds(currentParent.parent); + lineage.forEach(function(l, i) { + currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] }; + currentParent = currentParent.parent; + }); - blockFromAssertRight: function (leftContext, rightContext) { - this.blockedContext(leftContext, rightContext, true); - }, + return doc; + }; - blockFromAssertLeft: function (leftContext, rightContext) { - this.blockedContext(leftContext, rightContext, false); - }, + const fillContactsInDocs = function(docs, contacts) { + if (!contacts || !contacts.length) { + return; + } + docs.forEach(function(doc) { + if (!doc) { + return; + } + const id = utils.getId(doc.contact); + const contactDoc = getContactById(contacts, id); + if (contactDoc) { + doc.contact = deepCopy(contactDoc); + } - retractLeft: function (context) { - var ctx = this.removeFromLeftMemory(context); - if (ctx) { - ctx = ctx.data; - this.__propagate("retract", this.__cloneContext(ctx)); - } else { - if (!this.removeFromLeftBlockedMemory(context)) { - throw new Error(); - } - } - }, + if (!utils.validLinkedDocs(doc)) { + return; + } - assertLeft: function (context) { - var values = this.rightTuples.getRightMemory(context), - thisConstraint = this.constraint, rc, i = -1, l = values.length; - while (++i < l) { - if (thisConstraint.isMatch(context, rc = values[i].data)) { - this.blockFromAssertLeft(context, rc); - context = null; - i = l; - } - } - if (context) { - this.propagateFromLeft(context); - } - }, + Object.keys(doc.linked_docs).forEach(key => { + const id = utils.getId(doc.linked_docs[key]); + const contactDoc = getContactById(contacts, id); + if (contactDoc) { + doc.linked_docs[key] = deepCopy(contactDoc); + } + }); + }); + }; - assertRight: function (context) { - this.__addToRightMemory(context); - context.blocking = new LinkedList(); - var fl = this.leftTuples.getLeftMemory(context).slice(), - i = -1, l = fl.length, - leftContext, thisConstraint = this.constraint; - while (++i < l) { - leftContext = fl[i].data; - if (thisConstraint.isMatch(leftContext, context)) { - this.blockFromAssertRight(leftContext, context); - } - } - }, + const fetchContacts = function(lineage) { + const contactIds = getContactIds(lineage); - addToLeftBlockedMemory: function (context) { - var data = context.data, hashCode = data.hashCode; - var ctx = this.leftMemory[hashCode]; - this.leftTupleMemory[hashCode] = context; - if (ctx) { - this.leftTuples.remove(ctx); - } - return this; - }, + // Only fetch docs that are new to us + const lineageContacts = []; + const contactsToFetch = []; + contactIds.forEach(function(id) { + const contact = getContactById(lineage, id); + if (contact) { + lineageContacts.push(deepCopy(contact)); + } else { + contactsToFetch.push(id); + } + }); - removeFromLeftBlockedMemory: function (context) { - var ret = this.leftTupleMemory[context.hashCode] || null; - if (ret) { - delete this.leftTupleMemory[context.hashCode]; - ret.data.blocker.blocking.remove(ret); - } - return ret; - }, + return fetchDocs(contactsToFetch) + .then(function(fetchedContacts) { + return lineageContacts.concat(fetchedContacts); + }); + }; - modifyLeft: function (context) { - var ctx = this.removeFromLeftMemory(context), - leftContext, - thisConstraint = this.constraint, - rightTuples = this.rightTuples.getRightMemory(context), - l = rightTuples.length, - isBlocked = false, - i, rc, blocker; - if (!ctx) { - //blocked before - ctx = this.removeFromLeftBlockedMemory(context); - isBlocked = true; - } - if (ctx) { - leftContext = ctx.data; + const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) { + const doc = lineage.shift(); + fillParentsInDocs(doc, lineage); - if (leftContext && leftContext.blocker) { - //we were blocked before so only check nodes previous to our blocker - blocker = this.rightMemory[leftContext.blocker.hashCode]; - leftContext.blocker = null; - } - if (blocker) { - if (thisConstraint.isMatch(context, rc = blocker.data)) { - //we cant be proagated so retract previous - if (!isBlocked) { - //we were asserted before so retract - this.__propagate("retract", this.__cloneContext(leftContext)); - } - context.blocker = rc; - this.addToLeftBlockedMemory(rc.blocking.push(context)); - context = null; - } - } - if (context && l) { - i = -1; - //we were propogated before - while (++i < l) { - if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) { - //we cant be proagated so retract previous - if (!isBlocked) { - //we were asserted before so retract - this.__propagate("retract", this.__cloneContext(leftContext)); - } - this.addToLeftBlockedMemory(rc.blocking.push(context)); - context.blocker = rc; - context = null; - break; - } - } - } - if (context) { - //we can still be propogated - this.__addToLeftMemory(context); - if (!isBlocked) { - //we weren't blocked before so modify - this.__propagate("modify", this.__cloneContext(context)); - } else { - //we were blocked before but aren't now - this.__propagate("assert", this.__cloneContext(context)); - } + if (patientLineage && patientLineage.length) { + const patientDoc = patientLineage.shift(); + fillParentsInDocs(patientDoc, patientLineage); + doc.patient = patientDoc; + } - } - } else { - throw new Error(); - } + if (placeLineage && placeLineage.length) { + const placeDoc = placeLineage.shift(); + fillParentsInDocs(placeDoc, placeLineage); + doc.place = placeDoc; + } - }, + return doc; + }; - modifyRight: function (context) { - var ctx = this.removeFromRightMemory(context); - if (ctx) { - var rightContext = ctx.data, - leftTuples = this.leftTuples.getLeftMemory(context).slice(), - leftTuplesLength = leftTuples.length, - leftContext, - thisConstraint = this.constraint, - i, node, - blocking = rightContext.blocking; - this.__addToRightMemory(context); - context.blocking = new LinkedList(); + /* + * @returns {Object} subjectMaps + * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid] + * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid] + */ + const fetchSubjectsUuids = (records) => { + const shortcodes = []; + const recordToPlaceUuidMap = new Map(); + const recordToPatientUuidMap = new Map(); - var rc; - //check old blocked contexts - //check if the same contexts blocked before are still blocked - var blockingNode = {next: blocking.head}; - while ((blockingNode = blockingNode.next)) { - leftContext = blockingNode.data; - leftContext.blocker = null; - if (thisConstraint.isMatch(leftContext, context)) { - leftContext.blocker = context; - this.addToLeftBlockedMemory(context.blocking.push(leftContext)); - leftContext = null; - } else { - //we arent blocked anymore - leftContext.blocker = null; - node = ctx; - while ((node = node.next)) { - if (thisConstraint.isMatch(leftContext, rc = node.data)) { - leftContext.blocker = rc; - this.addToLeftBlockedMemory(rc.blocking.push(leftContext)); - leftContext = null; - break; - } - } - if (leftContext) { - this.__addToLeftMemory(leftContext); - this.__propagate("assert", this.__cloneContext(leftContext)); - } - } - } - if (leftTuplesLength) { - //check currently left tuples in memory - i = -1; - while (++i < leftTuplesLength) { - leftContext = leftTuples[i].data; - if (thisConstraint.isMatch(leftContext, context)) { - this.__propagate("retract", this.__cloneContext(leftContext)); - this.removeFromLeftMemory(leftContext); - this.addToLeftBlockedMemory(context.blocking.push(leftContext)); - leftContext.blocker = context; - } - } - } - } else { - throw new Error(); - } + records.forEach(record => { + if (!utils.isReport(record)) { + return; + } + const patientId = utils.getPatientId(record); + const placeId = utils.getPlaceId(record); + recordToPatientUuidMap.set(record._id, patientId); + recordToPlaceUuidMap.set(record._id, placeId); - } + shortcodes.push(patientId, placeId); + }); + + if (!shortcodes.some(shortcode => shortcode)) { + return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }); } -}).as(module); -/***/ }), + return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => { + records.forEach(record => { + const patientShortcode = recordToPatientUuidMap.get(record._id); + recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode)); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const placeShortcode = recordToPlaceUuidMap.get(record._id); + recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode)); + }); -/* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); + return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }; + }); + }; -AlphaNode.extend({ - instance: { + /* + * @returns {Object} lineages + * @returns {Array} lineages.patientLineage + * @returns {Array} lineages.placeLineage + */ + const fetchSubjectLineage = (record) => { + if (!utils.isReport(record)) { + return Promise.resolve({ patientLineage: [], placeLineage: [] }); + } - constructor: function () { - this._super(arguments); - this.alias = this.constraint.get("alias"); - this.varLength = (this.variables = extd(this.constraint.get("variables")).toArray().value()).length; - }, + const patientId = utils.getPatientId(record); + const placeId = utils.getPlaceId(record); - assert: function (context) { - var c = new Context(context.fact, context.paths); - var variables = this.variables, o = context.fact.object, item; - c.set(this.alias, o); - for (var i = 0, l = this.varLength; i < l; i++) { - item = variables[i]; - c.set(item[1], o[item[0]]); - } + if (!patientId && !placeId) { + return Promise.resolve({ patientLineage: [], placeLineage: [] }); + } - this.__propagate("assert", c); + return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => { + const patientUuid = shortcodeToUuidMap.get(patientId); + const placeUuid = shortcodeToUuidMap.get(placeId); - }, + return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => { + const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || []; + const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || []; - retract: function (context) { - this.__propagate("retract", new Context(context.fact, context.paths)); - }, + return { patientLineage, placeLineage }; + }); + }); + }; - modify: function (context) { - var c = new Context(context.fact, context.paths); - var variables = this.variables, o = context.fact.object, item; - c.set(this.alias, o); - for (var i = 0, l = this.varLength; i < l; i++) { - item = variables[i]; - c.set(item[1], o[item[0]]); - } - this.__propagate("modify", c); - }, + /* + * @returns {Map} map with [k, v] pairs of [shortcode, uuid] + */ + const contactUuidByShortcode = function(shortcodes) { + const keys = shortcodes + .filter(shortcode => shortcode) + .map(shortcode => [ 'shortcode', shortcode ]); + return DB.query('medic-client/contacts_by_reference', { keys }) + .then(function(results) { + const findIdWithKey = key => { + const matchingRow = results.rows.find(row => row.key[1] === key); + return matchingRow && matchingRow.id; + }; - toString: function () { - return "PropertyNode" + this.__count; + return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ]))); + }); + }; + + const fetchLineageById = function(id) { + const options = { + startkey: [id], + endkey: [id, {}], + include_docs: true + }; + return DB.query('medic-client/docs_by_id_lineage', options) + .then(function(result) { + return result.rows.map(function(row) { + return row.doc; + }); + }); + }; + + const fetchLineageByIds = function(ids) { + return fetchDocs(ids).then(function(docs) { + return hydrateDocs(docs).then(function(hydratedDocs) { + // Returning a list of docs just like fetchLineageById + const docsList = []; + hydratedDocs.forEach(function(hdoc) { + const docLineage = selfAndParents(hdoc); + docsList.push(docLineage); + }); + return docsList; + }); + }); + }; + + const fetchDoc = function(id) { + return DB.get(id) + .catch(function(err) { + if (err.status === 404) { + err.statusCode = 404; } + throw err; + }); + }; + + const fetchHydratedDoc = function(id, options = {}, callback) { + let lineage; + let patientLineage; + let placeLineage; + if (typeof options === 'function') { + callback = options; + options = {}; } -}).as(module); + _.defaults(options, { + throwWhenMissingLineage: false, + }); + return fetchLineageById(id) + .then(function(result) { + lineage = result; + if (lineage.length === 0) { + if (options.throwWhenMissingLineage) { + const err = new Error(`Document not found: ${id}`); + err.code = 404; + throw err; + } else { + // Not a doc that has lineage, just do a normal fetch. + return fetchDoc(id); + } + } -/***/ }), + return fetchSubjectLineage(lineage[0]) + .then((lineages = {}) => { + patientLineage = lineages.patientLineage; + placeLineage = lineages.placeLineage; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js ***! - \**************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return fetchContacts(lineage.concat(patientLineage, placeLineage)); + }) + .then(function(contacts) { + fillContactsInDocs(lineage, contacts); + fillContactsInDocs(patientLineage, contacts); + fillContactsInDocs(placeLineage, contacts); + return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage); + }); + }) + .then(function(result) { + if (callback) { + callback(null, result); + } + return result; + }) + .catch(function(err) { + if (callback) { + callback(err); + } else { + throw err; + } + }); + }; -/* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); + // for data_records, include the first-level contact. + const collectParentIds = function(docs) { + const ids = []; + docs.forEach(function(doc) { + let parent = doc.parent; + if (utils.isReport(doc)) { + const contactId = utils.getId(doc.contact); + if (!contactId) { + return; + } + ids.push(contactId); + parent = doc.contact; + } -Node.extend({ - instance: { + ids.push(...extractParentIds(parent)); + }); + return _.uniq(ids); + }; - retractResolve: function (match) { - this.__propagate("retractResolve", match); - }, + // for data_records, doesn't include the first-level contact (it counts as a parent). + const collectLeafContactIds = function(partiallyHydratedDocs) { + const ids = []; + partiallyHydratedDocs.forEach(function(doc) { + const startLineageFrom = utils.isReport(doc) ? doc.contact : doc; + ids.push(...getContactIds(selfAndParents(startLineageFrom))); + }); - dispose: function (context) { - this.propagateDispose(context); - }, + return _.uniq(ids); + }; - propagateAssert: function (context) { - this.__propagate("assertRight", context); - }, + const fetchDocs = function(ids) { + if (!ids || !ids.length) { + return Promise.resolve([]); + } + const keys = _.uniq(ids.filter(id => id)); + if (keys.length === 0) { + return Promise.resolve([]); + } - propagateRetract: function (context) { - this.__propagate("retractRight", context); - }, + return DB.allDocs({ keys, include_docs: true }) + .then(function(results) { + return results.rows + .map(function(row) { + return row.doc; + }) + .filter(function(doc) { + return !!doc; + }); + }); + }; - propagateResolve: function (context) { - this.__propagate("retractResolve", context); - }, + const hydrateDocs = function(docs) { + if (!docs.length) { + return Promise.resolve([]); + } - propagateModify: function (context) { - this.__propagate("modifyRight", context); - }, + const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return + const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched - toString: function () { - return "RightAdapterNode " + this.__count; - } - } -}).as(module); + let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid] + let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid] + let subjectDocs; -/***/ }), + return fetchSubjectsUuids(hydratedDocs) + .then((subjectMaps) => { + placeUuids = subjectMaps.placeUuids; + patientUuids = subjectMaps.patientUuids; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return fetchDocs([...placeUuids.values(), ...patientUuids.values()]); + }) + .then(subjects => { + subjectDocs = subjects; + knownDocs.push(...subjects); -/* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - bind = extd.bind; + const firstRoundIdsToFetch = _.uniq([ + ...collectParentIds(hydratedDocs), + ...collectLeafContactIds(hydratedDocs), -Node.extend({ - instance: { - constructor: function (bucket, index, rule, agenda) { - this._super([]); - this.resolve = bind(this, this.resolve); - this.rule = rule; - this.index = index; - this.name = this.rule.name; - this.agenda = agenda; - this.bucket = bucket; - agenda.register(this); - }, + ...collectParentIds(subjectDocs), + ...collectLeafContactIds(subjectDocs), + ]); - __assertModify: function (context) { - var match = context.match; - if (match.isMatch) { - var rule = this.rule, bucket = this.bucket; - this.agenda.insert(this, { - rule: rule, - hashCode: context.hashCode, - index: this.index, - name: rule.name, - recency: bucket.recency++, - match: match, - counter: bucket.counter - }); - } - }, + return fetchDocs(firstRoundIdsToFetch); + }) + .then(function(firstRoundFetched) { + knownDocs.push(...firstRoundFetched); + const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched) + .filter(id => !knownDocs.some(doc => doc._id === id)); + return fetchDocs(secondRoundIdsToFetch); + }) + .then(function(secondRoundFetched) { + knownDocs.push(...secondRoundFetched); - assert: function (context) { - this.__assertModify(context); - }, + fillContactsInDocs(knownDocs, knownDocs); + hydratedDocs.forEach((doc) => { + const reconstructLineage = (docWithLineage, parents) => { + const parentIds = extractParentIds(docWithLineage); + return parentIds.map(id => { + // how can we use hashmaps? + return getContactById(parents, id); + }); + }; - modify: function (context) { - this.agenda.retract(this, context); - this.__assertModify(context); - }, + const isReport = utils.isReport(doc); + const findParentsFor = isReport ? doc.contact : doc; + const lineage = reconstructLineage(findParentsFor, knownDocs); - retract: function (context) { - this.agenda.retract(this, context); - }, + if (isReport) { + lineage.unshift(doc); + } - retractRight: function (context) { - this.agenda.retract(this, context); - }, + const patientDoc = getContactById(subjectDocs, patientUuids.get(doc._id)); + const patientLineage = reconstructLineage(patientDoc, knownDocs); - retractLeft: function (context) { - this.agenda.retract(this, context); - }, + const placeDoc = getContactById(subjectDocs, placeUuids.get(doc._id)); + const placeLineage = reconstructLineage(placeDoc, knownDocs); - assertLeft: function (context) { - this.__assertModify(context); - }, + mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage); + }); - assertRight: function (context) { - this.__assertModify(context); - }, + return hydratedDocs; + }); + }; - toString: function () { - return "TerminalNode " + this.rule.name; - } + const fetchHydratedDocs = docIds => { + if (!Array.isArray(docIds)) { + return Promise.reject(new Error('Invalid parameter: "docIds" must be an array')); } -}).as(module); -/***/ }), + if (!docIds.length) { + return Promise.resolve([]); + } + + if (docIds.length === 1) { + return fetchHydratedDoc(docIds[0]) + .then(doc => [doc]) + .catch(err => { + if (err.status === 404) { + return []; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + throw err; + }); + } -/* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js"); + return DB + .allDocs({ keys: docIds, include_docs: true }) + .then(result => { + const docs = result.rows.map(row => row.doc).filter(doc => doc); + return hydrateDocs(docs); + }); + }; -AlphaNode.extend({ - instance: { + return { + /** + * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents) + * @param {String} id The id of the doc to fetch and hydrate + * @param {Object} [options] Options for the behavior of the hydration + * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate. + * When false, does a best effort to return the document regardless of content. + * @returns {Promise} A promise to return the hydrated doc. + */ + fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback), - assert: function (fact) { - if (this.constraintAssert(fact.object)) { - this.__propagate("assert", fact); - } - }, + /** + * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc) + * If a doc is not found, it's simply excluded from the results list + * @param {Object[]} docs The array of docs to hydrate + * @returns {Promise} A promise to return the hydrated docs + */ + fetchHydratedDocs: docIds => fetchHydratedDocs(docIds), - modify: function (fact) { - if (this.constraintAssert(fact.object)) { - this.__propagate("modify", fact); - } - }, + /** + * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents) + * @param {Object[]} docs The array of docs to hydrate + * @returns {Promise} + */ + hydrateDocs: docs => hydrateDocs(docs), - retract: function (fact) { - if (this.constraintAssert(fact.object)) { - this.__propagate("retract", fact); - } - }, + fetchLineageById, + fetchLineageByIds, + fillContactsInDocs, + fillParentsInDocs, + fetchContacts, + }; +}; - toString: function () { - return "TypeNode" + this.__count; - }, - dispose: function () { - var es = this.__entrySet, i = es.length - 1; - for (; i >= 0; i--) { - var e = es[i], outNode = e.key, paths = e.value; - outNode.dispose({paths: paths}); - } - }, +/***/ }), - __propagate: function (method, fact) { - var es = this.__entrySet, i = -1, l = es.length; - while (++i < l) { - var e = es[i], outNode = e.key, paths = e.value; - outNode[method](new Context(fact, paths)); - } - } - } -}).as(module); +/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/index.js": +/*!*********************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/index.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/** + * @module lineage + */ +module.exports = (Promise, DB) => Object.assign( + {}, + __webpack_require__(/*! ./hydration */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js")(Promise, DB), + __webpack_require__(/*! ./minify */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js") +); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js ***! - \****************************************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js": +/*!**********************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js ***! + \**********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/* module decorator */ module = __webpack_require__.nmd(module); -/* parser generated by jison 0.4.17 */ -/* - Returns a Parser object of the following structure: +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js"); +const RECURSION_LIMIT = 50; - Parser: { - yy: {} +// Minifies things you would attach to another doc: +// doc.parent = minify(doc.parent) +// Not: +// minify(doc) +function minifyLineage(parent) { + if (!parent || !parent._id) { + return parent; } - Parser.prototype: { - yy: {}, - trace: function(), - symbols_: {associative list: name ==> number}, - terminals_: {associative list: number ==> name}, - productions_: [...], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), - table: [...], - defaultActions: {...}, - parseError: function(str, hash), - parse: function(input), + const docId = parent._id; + const result = { _id: parent._id }; + let minified = result; + for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) { + if (guard === 0) { + throw Error(`Could not minify ${docId}, possible parent recursion.`); + } - lexer: { - EOF: 1, - parseError: function(str, hash), - setInput: function(input), - input: function(), - unput: function(str), - more: function(), - less: function(n), - pastInput: function(), - upcomingInput: function(), - showPosition: function(), - test_match: function(regex_match_array, rule_index), - next: function(), - lex: function(), - begin: function(condition), - popState: function(), - _currentRules: function(), - topState: function(), - pushState: function(condition), + minified.parent = { _id: parent.parent._id }; + minified = minified.parent; + parent = parent.parent; + } - options: { - ranges: boolean (optional: true ==> token location info will include a .range[] member) - flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) - backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) - }, + return result; +} - performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), - rules: [...], - conditions: {associative list: name ==> set}, +/** + * Remove all hyrdrated items and leave just the ids + * @param {Object} doc The doc to minify + */ +function minify(doc) { + if (!doc) { + return; + } + if (doc.parent) { + doc.parent = minifyLineage(doc.parent); + } + if (doc.contact && doc.contact._id) { + const miniContact = { _id: doc.contact._id }; + if (doc.contact.parent) { + miniContact.parent = minifyLineage(doc.contact.parent); } + doc.contact = miniContact; + } + if (doc.type === 'data_record') { + delete doc.patient; + delete doc.place; } - - token location info (@$, _$, etc.): { - first_line: n, - last_line: n, - first_column: n, - last_column: n, - range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) + if (utils.validLinkedDocs(doc)) { + Object.keys(doc.linked_docs).forEach(key => { + doc.linked_docs[key] = utils.getId(doc.linked_docs[key]); + }); } +} + +module.exports = { + minify, + minifyLineage, +}; - the parseError function receives a 'hash' object with these members for lexer and parser errors: { - text: (matched text) - token: (the produced terminal token, if any) - line: (yylineno) - } - while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { - loc: (yylloc) - expected: (string describing the set of expected tokens) - recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js": +/*!*********************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const contactTypeUtils = __webpack_require__(/*! @medic/contact-types-utils */ "./node_modules/cht-core-3-13/shared-libs/contact-types-utils/src/index.js"); +const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); + +const isContact = doc => { + if (!doc) { + return; } -*/ -var parser = (function(){ -var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49]; -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"expressions":3,"EXPRESSION":4,"EOF":5,"UNARY_EXPRESSION":6,"LITERAL_EXPRESSION":7,"-":8,"!":9,"MULTIPLICATIVE_EXPRESSION":10,"*":11,"/":12,"%":13,"ADDITIVE_EXPRESSION":14,"+":15,"EXPONENT_EXPRESSION":16,"^":17,"RELATIONAL_EXPRESSION":18,"<":19,">":20,"<=":21,">=":22,"EQUALITY_EXPRESSION":23,"==":24,"===":25,"!=":26,"!==":27,"=~":28,"!=~":29,"IN_EXPRESSION":30,"in":31,"ARRAY_EXPRESSION":32,"notIn":33,"OBJECT_EXPRESSION":34,"AND_EXPRESSION":35,"&&":36,"OR_EXPRESSION":37,"||":38,"ARGUMENT_LIST":39,",":40,"IDENTIFIER_EXPRESSION":41,"IDENTIFIER":42,".":43,"[":44,"STRING_EXPRESSION":45,"]":46,"NUMBER_EXPRESSION":47,"(":48,")":49,"STRING":50,"NUMBER":51,"REGEXP_EXPRESSION":52,"REGEXP":53,"BOOLEAN_EXPRESSION":54,"BOOLEAN":55,"NULL_EXPRESSION":56,"NULL":57,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOF",8:"-",9:"!",11:"*",12:"/",13:"%",15:"+",17:"^",19:"<",20:">",21:"<=",22:">=",24:"==",25:"===",26:"!=",27:"!==",28:"=~",29:"!=~",31:"in",33:"notIn",36:"&&",38:"||",40:",",42:"IDENTIFIER",43:".",44:"[",46:"]",48:"(",49:")",50:"STRING",51:"NUMBER",53:"REGEXP",55:"BOOLEAN",57:"NULL"}, -productions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]], -performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { -/* this == yyval */ -var $0 = $$.length - 1; -switch (yystate) { -case 1: -return $$[$0-1]; -break; -case 3: -this.$ = [$$[$0], null, 'unary']; -break; -case 4: -this.$ = [$$[$0], null, 'logicalNot']; -break; -case 6: -this.$ = [$$[$0-2], $$[$0], 'mult']; -break; -case 7: -this.$ = [$$[$0-2], $$[$0], 'div']; -break; -case 8: -this.$ = [$$[$0-2], $$[$0], 'mod']; -break; -case 10: -this.$ = [$$[$0-2], $$[$0], 'plus']; -break; -case 11: -this.$ = [$$[$0-2], $$[$0], 'minus']; -break; -case 13: -this.$ = [$$[$0-2], $$[$0], 'pow']; -break; -case 15: -this.$ = [$$[$0-2], $$[$0], 'lt']; -break; -case 16: -this.$ = [$$[$0-2], $$[$0], 'gt']; -break; -case 17: -this.$ = [$$[$0-2], $$[$0], 'lte']; -break; -case 18: -this.$ = [$$[$0-2], $$[$0], 'gte']; -break; -case 20: -this.$ = [$$[$0-2], $$[$0], 'eq']; -break; -case 21: -this.$ = [$$[$0-2], $$[$0], 'seq']; -break; -case 22: -this.$ = [$$[$0-2], $$[$0], 'neq']; -break; -case 23: -this.$ = [$$[$0-2], $$[$0], 'sneq']; -break; -case 24: -this.$ = [$$[$0-2], $$[$0], 'like']; -break; -case 25: -this.$ = [$$[$0-2], $$[$0], 'notLike']; -break; -case 27: case 29: -this.$ = [$$[$0-2], $$[$0], 'in']; -break; -case 28: case 30: -this.$ = [$$[$0-2], $$[$0], 'notIn']; -break; -case 32: -this.$ = [$$[$0-2], $$[$0], 'and']; -break; -case 34: -this.$ = [$$[$0-2], $$[$0], 'or']; -break; -case 36: -this.$ = [$$[$0-2], $$[$0], 'arguments'] -break; -case 37: -this.$ = [String(yytext), null, 'identifier']; -break; -case 39: -this.$ = [$$[$0-2],$$[$0], 'prop']; -break; -case 40: case 41: case 42: -this.$ = [$$[$0-3],$$[$0-1], 'propLookup']; -break; -case 43: -this.$ = [$$[$0-2], [null, null, 'arguments'], 'function'] -break; -case 44: -this.$ = [$$[$0-3], $$[$0-1], 'function'] -break; -case 45: -this.$ = [String(yytext.replace(/^['|"]|['|"]$/g, '')), null, 'string']; -break; -case 46: -this.$ = [Number(yytext), null, 'number']; -break; -case 47: -this.$ = [yytext, null, 'regexp']; -break; -case 48: -this.$ = [yytext.replace(/^\s+/, '') == 'true', null, 'boolean']; -break; -case 49: -this.$ = [null, null, 'null']; -break; -case 50: -this.$ = [null, null, 'array']; -break; -case 51: -this.$ = [$$[$0-1], null, 'array']; -break; -case 59: -this.$ = [$$[$0-1], null, 'composite'] -break; -} -}, -table: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])], -defaultActions: {31:[2,1]}, -parseError: function parseError(str, hash) { - if (hash.recoverable) { - this.trace(str); - } else { - function _parseError (msg, hash) { - this.message = msg; - this.hash = hash; - } - _parseError.prototype = Error; + return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type); +}; - throw new _parseError(str, hash); - } -}, -parse: function parse(input) { - var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; - var args = lstack.slice.call(arguments, 1); - var lexer = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k)) { - sharedState.yy[k] = this.yy[k]; - } - } - lexer.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer; - sharedState.yy.parser = this; - if (typeof lexer.yylloc == 'undefined') { - lexer.yylloc = {}; - } - var yyloc = lexer.yylloc; - lstack.push(yyloc); - var ranges = lexer.options && lexer.options.ranges; - if (typeof sharedState.yy.parseError === 'function') { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - _token_stack: - var lex = function () { - var token; - token = lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - }; - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == 'undefined') { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === 'undefined' || !action.length || !action[0]) { - var errStr = ''; - expected = []; - for (p in table[state]) { - if (this.terminals_[p] && p > TERROR) { - expected.push('\'' + this.terminals_[p] + '\''); - } - } - if (lexer.showPosition) { - errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; - } else { - errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); - } - this.parseError(errStr, { - text: lexer.match, - token: this.terminals_[symbol] || symbol, - line: lexer.yylineno, - loc: yyloc, - expected: expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer.yytext); - lstack.push(lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer.yyleng; - yytext = lexer.yytext; - yylineno = lexer.yylineno; - yyloc = lexer.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r !== 'undefined') { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } - } - return true; -}}; -/* generated by jison-lex 0.3.4 */ -var lexer = (function(){ -var lexer = ({ +const getId = (item) => item && (typeof item === 'string' ? item : item._id); -EOF:1, +// don't process linked docs for non-contact types +// linked_docs property should be a key-value object +const validLinkedDocs = doc => { + return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs); +}; -parseError:function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, +const isReport = (doc) => doc.type === 'data_record'; +const getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id; +const getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id; -// resets the lexer, sets new input -setInput:function (input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0,0]; - } - this.offset = 0; - return this; - }, -// consumes and returns one char from the input -input:function () { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } +module.exports = { + getId, + validLinkedDocs, + isReport, + getPatientId, + getPlaceId, +}; - this._input = this._input.slice(1); - return ch; - }, -// unshifts one char (or a string) into the input -unput:function (ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); +/***/ }), - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - //this.yyleng -= len; - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r = this.yylloc.range; +var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js"), + hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js"), + hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js"), + hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js"), + hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js"); - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? - (lines.length === oldLines.length ? this.yylloc.first_column : 0) - + oldLines[oldLines.length - lines.length].length - lines[0].length : - this.yylloc.first_column - len - }; +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} -// When called from action, caches matched text and appends it on next action -more:function () { - this._more = true; - return this; - }, +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; -// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. -reject:function () { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); +module.exports = Hash; - } - return this; - }, -// retain first n characters of the match -less:function (n) { - this.unput(this.match.slice(n)); - }, +/***/ }), -// displays already matched input, i.e. for error messages -pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -// displays upcoming input, i.e. for error messages -upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); - }, +var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js"), + listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js"), + listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js"), + listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js"), + listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js"); -// displays the character position where the lexing error occurred, i.e. for error messages -showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; -// test the lexed token: return FALSE when not a match, otherwise return token -test_match:function (match, indexed_rule) { - var token, - lines, - backup; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - if (this.options.backtrack_lexer) { - // save context - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? - lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : - this.yylloc.last_column + match[0].length - }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token) { - return token; - } else if (this._backtrack) { - // recover context - for (var k in backup) { - this[k] = backup[k]; - } - return false; // rule action called reject() implying the next rule should be tested instead. - } - return false; - }, +module.exports = ListCache; -// return next match in input -next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - var token, - match, - tempMatch, - index; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (this.options.backtrack_lexer) { - token = this.test_match(tempMatch, rules[i]); - if (token !== false) { - return token; - } else if (this._backtrack) { - match = false; - continue; // rule action called reject() implying a rule MISmatch. - } else { - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match) { - token = this.test_match(match, rules[index]); - if (token !== false) { - return token; - } - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, +/***/ }), -// return next match that has a token -lex:function lex() { - var r = this.next(); - if (r) { - return r; - } else { - return this.lex(); - } - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) -begin:function begin(condition) { - this.conditionStack.push(condition); - }, +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); -// pop the previously active lexer condition state off the condition stack -popState:function popState() { - var n = this.conditionStack.length - 1; - if (n > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); -// produce the lexer rule set which is active for the currently active lexer condition state -_currentRules:function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, +module.exports = Map; -// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available -topState:function topState(n) { - n = this.conditionStack.length - 1 - Math.abs(n || 0); - if (n >= 0) { - return this.conditionStack[n]; - } else { - return "INITIAL"; - } - }, -// alias for begin(condition) -pushState:function pushState(condition) { - this.begin(condition); - }, +/***/ }), -// return the number of states currently on the stack -stateStackSize:function stateStackSize() { - return this.conditionStack.length; - }, -options: {}, -performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { -var YYSTATE=YY_START; -switch($avoiding_name_collisions) { -case 0:return 31; -break; -case 1:return 33; -break; -case 2:return 'from'; -break; -case 3:return 24; -break; -case 4:return 25; -break; -case 5:return 26; -break; -case 6:return 27; -break; -case 7:return 21; -break; -case 8:return 19; -break; -case 9:return 22; -break; -case 10:return 20; -break; -case 11:return 28; -break; -case 12:return 29; -break; -case 13:return 36; -break; -case 14:return 38; -break; -case 15:return 57; -break; -case 16:return 55; -break; -case 17:/* skip whitespace */ -break; -case 18:return 51; -break; -case 19:return 50; -break; -case 20:return 50; -break; -case 21:return 42; -break; -case 22:return 53; -break; -case 23:return 43; -break; -case 24:return 11; -break; -case 25:return 12; -break; -case 26:return 13; -break; -case 27:return 40; -break; -case 28:return 8; -break; -case 29:return 28; -break; -case 30:return 29; -break; -case 31:return 25; -break; -case 32:return 24; -break; -case 33:return 27; -break; -case 34:return 26; -break; -case 35:return 21; -break; -case 36:return 22; -break; -case 37:return 20; -break; -case 38:return 19; -break; -case 39:return 36; -break; -case 40:return 38; -break; -case 41:return 15; -break; -case 42:return 17; -break; -case 43:return 48; -break; -case 44:return 46; -break; -case 45:return 44; -break; -case 46:return 49; -break; -case 47:return 9; -break; -case 48:return 5; -break; -} -}, -rules: [/^(?:\s+in\b)/,/^(?:\s+notIn\b)/,/^(?:\s+from\b)/,/^(?:\s+(eq|EQ)\b)/,/^(?:\s+(seq|SEQ)\b)/,/^(?:\s+(neq|NEQ)\b)/,/^(?:\s+(sneq|SNEQ)\b)/,/^(?:\s+(lte|LTE)\b)/,/^(?:\s+(lt|LT)\b)/,/^(?:\s+(gte|GTE)\b)/,/^(?:\s+(gt|GT)\b)/,/^(?:\s+(like|LIKE)\b)/,/^(?:\s+(notLike|NOT_LIKE)\b)/,/^(?:\s+(and|AND)\b)/,/^(?:\s+(or|OR)\b)/,/^(?:\s*(null)\b)/,/^(?:\s*(true|false)\b)/,/^(?:\s+)/,/^(?:-?[0-9]+(?:\.[0-9]+)?\b)/,/^(?:'[^']*')/,/^(?:"[^"]*")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\/((?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/[imgy]{0,4})(?!\w))/,/^(?:\.)/,/^(?:\*)/,/^(?:\/)/,/^(?:\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\|\|)/,/^(?:\+)/,/^(?:\^)/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:\))/,/^(?:!)/,/^(?:$)/], -conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"inclusive":true}} -}); -return lexer; -})(); -parser.lexer = lexer; -function Parser () { - this.yy = {}; -} -Parser.prototype = parser;parser.Parser = Parser; -return new Parser; -})(); +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js"), + mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js"), + mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js"), + mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js"), + mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js"); -if (true) { -exports.parser = parser; -exports.Parser = parser.Parser; -exports.parse = function () { return parser.parse.apply(parser, arguments); }; -exports.main = function commonjsMain(args) { - if (!args[1]) { - console.log('Usage: '+args[0]+' FILE'); - process.exit(1); - } - var source = __webpack_require__(/*! fs */ "fs").readFileSync(__webpack_require__(/*! path */ "path").normalize(args[1]), "utf8"); - return exports.parser.parse(source); -}; -if ( true && __webpack_require__.c[__webpack_require__.s] === module) { - exports.main(process.argv.slice(1)); -} +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } } +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +module.exports = MapCache; + + /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); + +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +module.exports = Set; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js ***! \****************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -(function () { - "use strict"; - var constraintParser = __webpack_require__(/*! ./constraint/parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js"), - noolParser = __webpack_require__(/*! ./nools/nool.parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js"); +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js"), + setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js"), + setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js"); - exports.parseConstraint = function (expression) { - try { - return constraintParser.parse(expression); - } catch (e) { - throw new Error("Invalid expression '" + expression + "'"); - } - }; +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +module.exports = SetCache; - exports.parseRuleSet = function (source, file) { - return noolParser.parse(source, file); - }; -})(); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js ***! - \****************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); +/** Built-in value references. */ +var Symbol = root.Symbol; -var tokens = __webpack_require__(/*! ./tokens.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js"), - extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - keys = extd.hash.keys, - utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"); +module.exports = Symbol; -var parse = function (src, keywords, context) { - var orig = src; - src = src.replace(/\/\/(.*)/g, "").replace(/\r\n|\r|\n/g, " "); - var blockTypes = new RegExp("^(" + keys(keywords).join("|") + ")"), index; - while (src && (index = utils.findNextTokenIndex(src)) !== -1) { - src = src.substr(index); - var blockType = src.match(blockTypes); - if (blockType !== null) { - blockType = blockType[1]; - if (blockType in keywords) { - try { - src = keywords[blockType](src, context, parse).replace(/^\s*|\s*$/g, ""); - } catch (e) { - throw new Error("Invalid " + blockType + " definition \n" + e.message + "; \nstarting at : " + orig); - } - } else { - throw new Error("Unknown token" + blockType); - } - } else { - throw new Error("Error parsing " + src); - } - } -}; +/***/ }), -exports.parse = function (src, file) { - var context = {define: [], rules: [], scope: [], loaded: [], file: file}; - parse(src, tokens, context); - return context; -}; +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js"); + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; +} +module.exports = arrayIncludes; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js ***! - \***********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js ***! + \*************************************************************************************************************/ +/***/ ((module) => { -"use strict"; +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} -var utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"), - fs = __webpack_require__(/*! fs */ "fs"), - extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - filter = extd.filter, - indexOf = extd.indexOf, - predicates = ["not", "or", "exists"], - predicateRegExp = new RegExp("^(" + predicates.join("|") + ") *\\((.*)\\)$", "m"), - predicateBeginExp = new RegExp(" *(" + predicates.join("|") + ") *\\(", "g"); +module.exports = arrayIncludesWith; -var isWhiteSpace = function (str) { - return str.replace(/[\s|\n|\r|\t]/g, "").length === 0; -}; -var joinFunc = function (m, str) { - return "; " + str; -}; +/***/ }), -var splitRuleLineByPredicateExpressions = function (ruleLine) { - var str = ruleLine.replace(/,\s*(\$?\w+\s*:)/g, joinFunc); - var parts = filter(str.split(predicateBeginExp), function (str) { - return str !== ""; - }), - l = parts.length, ret = []; +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (l) { - for (var i = 0; i < l; i++) { - if (indexOf(predicates, parts[i]) !== -1) { - ret.push([parts[i], "(", parts[++i].replace(/, *$/, "")].join("")); - } else { - ret.push(parts[i].replace(/, *$/, "")); - } - } - } else { - return str; +var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js"); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; } - return ret.join(";"); -}; + } + return -1; +} -var ruleTokens = { +module.exports = assocIndexOf; - salience: (function () { - var salienceRegexp = /^(salience|priority)\s*:\s*(-?\d+)\s*[,;]?/; - return function (src, context) { - if (salienceRegexp.test(src)) { - var parts = src.match(salienceRegexp), - priority = parseInt(parts[2], 10); - if (!isNaN(priority)) { - context.options.priority = priority; - } else { - throw new Error("Invalid salience/priority " + parts[2]); - } - return src.replace(parts[0], ""); - } else { - throw new Error("invalid format"); - } - }; - })(), - agendaGroup: (function () { - var agendaGroupRegexp = /^(agenda-group|agendaGroup)\s*:\s*([a-zA-Z_$][0-9a-zA-Z_$]*|"[^"]*"|'[^']*')\s*[,;]?/; - return function (src, context) { - if (agendaGroupRegexp.test(src)) { - var parts = src.match(agendaGroupRegexp), - agendaGroup = parts[2]; - if (agendaGroup) { - context.options.agendaGroup = agendaGroup.replace(/^["']|["']$/g, ""); - } else { - throw new Error("Invalid agenda-group " + parts[2]); - } - return src.replace(parts[0], ""); - } else { - throw new Error("invalid format"); - } - }; - })(), +/***/ }), - autoFocus: (function () { - var autoFocusRegexp = /^(auto-focus|autoFocus)\s*:\s*(true|false)\s*[,;]?/; - return function (src, context) { - if (autoFocusRegexp.test(src)) { - var parts = src.match(autoFocusRegexp), - autoFocus = parts[2]; - if (autoFocus) { - context.options.autoFocus = autoFocus === "true" ? true : false; - } else { - throw new Error("Invalid auto-focus " + parts[2]); - } - return src.replace(parts[0], ""); - } else { - throw new Error("invalid format"); - } - }; - })(), +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js ***! + \*********************************************************************************************************/ +/***/ ((module) => { - "agenda-group": function () { - return this.agendaGroup.apply(this, arguments); - }, +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); - "auto-focus": function () { - return this.autoFocus.apply(this, arguments); - }, + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} - priority: function () { - return this.salience.apply(this, arguments); - }, +module.exports = baseFindIndex; - when: (function () { - /*jshint evil:true*/ - var ruleRegExp = /^(\$?\w+) *: *(\w+)(.*)/; +/***/ }), - var constraintRegExp = /(\{ *(?:["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']? *(?:, *["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']?)*)+ *\})/; - var fromRegExp = /(\bfrom\s+.*)/; - var parseRules = function (str) { - var rules = []; - var ruleLines = str.split(";"), l = ruleLines.length, ruleLine; - for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\s*|\s*$/g, "").replace(/\n/g, "")); i++) { - if (!isWhiteSpace(ruleLine)) { - var rule = []; - if (predicateRegExp.test(ruleLine)) { - var m = ruleLine.match(predicateRegExp); - var pred = m[1].replace(/^\s*|\s*$/g, ""); - rule.push(pred); - ruleLine = m[2].replace(/^\s*|\s*$/g, ""); - if (pred === "or") { - rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine))); - rules.push(rule); - continue; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - } - var parts = ruleLine.match(ruleRegExp); - if (parts && parts.length) { - rule.push(parts[2], parts[1]); - var constraints = parts[3].replace(/^\s*|\s*$/g, ""); - var hashParts = constraints.match(constraintRegExp), from = null, fromMatch; - if (hashParts) { - var hash = hashParts[1], constraint = constraints.replace(hash, ""); - if (fromRegExp.test(constraint)) { - fromMatch = constraint.match(fromRegExp); - from = fromMatch[0]; - constraint = constraint.replace(fromMatch[0], ""); - } - if (constraint) { - rule.push(constraint.replace(/^\s*|\s*$/g, "")); - } - if (hash) { - rule.push(eval("(" + hash.replace(/(\$?\w+)\s*:\s*(\$?\w+)/g, '"$1" : "$2"') + ")")); - } - } else if (constraints && !isWhiteSpace(constraints)) { - if (fromRegExp.test(constraints)) { - fromMatch = constraints.match(fromRegExp); - from = fromMatch[0]; - constraints = constraints.replace(fromMatch[0], ""); - } - rule.push(constraints); - } - if (from) { - rule.push(from); - } - rules.push(rule); - } else { - throw new Error("Invalid constraint " + ruleLine); - } - } - } - return rules; - }; +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js"); - return function (orig, context) { - var src = orig.replace(/^when\s*/, "").replace(/^\s*|\s*$/g, ""); - if (utils.findNextToken(src) === "{") { - var body = utils.getTokensBetween(src, "{", "}", true).join(""); - src = src.replace(body, ""); - context.constraints = parseRules(body.replace(/^\{\s*|\}\s*$/g, "")); - return src; - } else { - throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); - } - }; - })(), +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; - then: (function () { - return function (orig, context) { - if (!context.action) { - var src = orig.replace(/^then\s*/, "").replace(/^\s*|\s*$/g, ""); - if (utils.findNextToken(src) === "{") { - var body = utils.getTokensBetween(src, "{", "}", true).join(""); - src = src.replace(body, ""); - if (!context.action) { - context.action = body.replace(/^\{\s*|\}\s*$/g, ""); - } - if (!isWhiteSpace(src)) { - throw new Error("Error parsing then block " + orig); - } - return src; - } else { - throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); - } - } else { - throw new Error("action already defined for rule" + context.name); - } +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - }; - })() -}; +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} -var topLevelTokens = { - "/": function (orig) { - if (orig.match(/^\/\*/)) { - // Block Comment parse - return orig.replace(/\/\*.*?\*\//, ""); - } else { - return orig; - } - }, +module.exports = baseGetTag; - "define": function (orig, context) { - var src = orig.replace(/^define\s*/, ""); - var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/); - if (name) { - src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); - if (utils.findNextToken(src) === "{") { - name = name[1]; - var body = utils.getTokensBetween(src, "{", "}", true).join(""); - src = src.replace(body, ""); - //should - context.define.push({name: name, properties: "(" + body + ")"}); - return src; - } else { - throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); - } - } else { - throw new Error("missing name"); - } - }, - "import": function (orig, context, parse) { - if (typeof window !== 'undefined') { - throw new Error("import cannot be used in a browser"); - } - var src = orig.replace(/^import\s*/, ""); - if (utils.findNextToken(src) === "(") { - var file = utils.getParamList(src); - src = src.replace(file, "").replace(/^\s*|\s*$/g, ""); - utils.findNextToken(src) === ";" && (src = src.replace(/\s*;/, "")); - file = file.replace(/[\(|\)]/g, "").split(","); - if (file.length === 1) { - file = utils.resolve(context.file || process.cwd(), file[0].replace(/["|']/g, "")); - if (indexOf(context.loaded, file) === -1) { - var origFile = context.file; - context.file = file; - parse(fs.readFileSync(file, "utf8"), topLevelTokens, context); - context.loaded.push(file); - context.file = origFile; - } - return src; - } else { - throw new Error("import accepts a single file"); - } - } else { - throw new Error("unexpected token : expected : '(' found : '" + utils.findNextToken(src) + "'"); - } +/***/ }), - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //define a global - "global": function (orig, context) { - var src = orig.replace(/^global\s*/, ""); - var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\s*)/); - if (name) { - src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); - if (utils.findNextToken(src) === "=") { - name = name[1].replace(/^\s+|\s+$/g, ''); - var fullbody = utils.getTokensBetween(src, "=", ";", true).join(""); - var body = fullbody.substring(1, fullbody.length - 1); - body = body.replace(/^\s+|\s+$/g, ''); - if (/^require\(/.test(body)) { - var file = utils.getParamList(body.replace("require")).replace(/[\(|\)]/g, "").split(","); - if (file.length === 1) { - //handle relative require calls - file = file[0].replace(/["|']/g, ""); - body = ["require('", utils.resolve(context.file || process.cwd(), file) , "')"].join(""); - } - } - context.scope.push({name: name, body: body}); - src = src.replace(fullbody, ""); - return src; - } else { - throw new Error("unexpected token : expected : '=' found : '" + utils.findNextToken(src) + "'"); - } - } else { - throw new Error("missing name"); - } - }, +var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js"), + baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js"), + strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js"); - //define a function - "function": function (orig, context) { - var src = orig.replace(/^function\s*/, ""); - //parse the function name - var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\s*/); - if (name) { - src = src.replace(name[0], ""); - if (utils.findNextToken(src) === "(") { - name = name[1]; - var params = utils.getParamList(src); - src = src.replace(params, "").replace(/^\s*|\s*$/g, ""); - if (utils.findNextToken(src) === "{") { - var body = utils.getTokensBetween(src, "{", "}", true).join(""); - src = src.replace(body, ""); - //should - context.scope.push({name: name, body: "function" + params + body}); - return src; - } else { - throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); - } - } else { - throw new Error("unexpected token : expected : '(' found : '" + utils.findNextToken(src) + "'"); - } - } else { - throw new Error("missing name"); - } - }, +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); +} - "rule": function (orig, context, parse) { - var src = orig.replace(/^rule\s*/, ""); - var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|"[^"]*"|'[^']*')/); - if (name) { - src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); - if (utils.findNextToken(src) === "{") { - name = name[1].replace(/^["']|["']$/g, ""); - var rule = {name: name, options: {}, constraints: null, action: null}; - var body = utils.getTokensBetween(src, "{", "}", true).join(""); - src = src.replace(body, ""); - parse(body.replace(/^\{\s*|\}\s*$/g, ""), ruleTokens, rule); - context.rules.push(rule); - return src; - } else { - throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); - } - } else { - throw new Error("missing name"); - } +module.exports = baseIndexOf; - } -}; -module.exports = topLevelTokens; +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js ***! + \*****************************************************************************************************/ +/***/ ((module) => { + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +module.exports = baseIsNaN; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js ***! - \*********************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js"), + isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js"); +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -var path = __webpack_require__(/*! path */ "path"); -var WHITE_SPACE_REG = /[\s|\n|\r|\t]/, - pathSep = path.sep || ( process.platform === 'win32' ? '\\' : '/' ); +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; -var TOKEN_INVERTS = { - "{": "}", - "}": "{", - "(": ")", - ")": "(", - "[": "]" -}; +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; -var getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) { - var depth = 0, ret = []; - if (!start) { - start = TOKEN_INVERTS[stop]; - depth = 1; - } - if (!stop) { - stop = TOKEN_INVERTS[start]; +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +module.exports = baseIsNative; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js"), + arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js"), + arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js"), + createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js"); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); } - str = Object(str); - var startPushing = false, token, cursor = 0, found = false; - while ((token = str.charAt(cursor++))) { - if (token === start) { - depth++; - if (!startPushing) { - startPushing = true; - if (includeStartEnd) { - ret.push(token); - } - } else { - ret.push(token); - } - } else if (token === stop && cursor) { - depth--; - if (depth === 0) { - if (includeStartEnd) { - ret.push(token); - } - found = true; - break; - } - ret.push(token); - } else if (startPushing) { - ret.push(token); + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); } - if (!found) { - throw new Error("Unable to match " + start + " in " + str); + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); } - return ret; -}; + } + return result; +} -exports.getParamList = function (str) { - return getTokensBetween(str, "(", ")", true).join(""); -}; +module.exports = baseUniq; -exports.resolve = function (from, to) { - if (process.platform === 'win32') { - to = to.replace(/\//g, '\\'); - } - if (path.extname(from) !== '') { - from = path.dirname(from); - } - if (to.split(pathSep).length === 1) { - return to; - } - return path.resolve(from, to).replace(/\\/g, '/'); -}; +/***/ }), -var findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) { - startIndex = startIndex || 0; - endIndex = endIndex || str.length; - var ret = -1, l = str.length; - if (!endIndex || endIndex > l) { - endIndex = l; - } - for (; startIndex < endIndex; startIndex++) { - var c = str.charAt(startIndex); - if (!WHITE_SPACE_REG.test(c)) { - ret = startIndex; - break; - } - } - return ret; -}; +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js ***! + \****************************************************************************************************/ +/***/ ((module) => { -exports.findNextToken = function (str, startIndex, endIndex) { - return str.charAt(findNextTokenIndex(str, startIndex, endIndex)); +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +module.exports = cacheHas; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +module.exports = coreJsData; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js"), + noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js"); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); }; +module.exports = createSet; + + /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js ***! - \***********************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js ***! + \******************************************************************************************************/ +/***/ ((module) => { -"use strict"; +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - isEmpty = extd.isEmpty, - merge = extd.merge, - forEach = extd.forEach, - declare = extd.declare, - constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), - constraint = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), - EqualityConstraint = constraint.EqualityConstraint, - FromConstraint = constraint.FromConstraint; +module.exports = freeGlobal; -var id = 0; -var Pattern = declare({}); -var ObjectPattern = Pattern.extend({ - instance: { - constructor: function (type, alias, conditions, store, options) { - options = options || {}; - this.id = id++; - this.type = type; - this.alias = alias; - this.conditions = conditions; - this.pattern = options.pattern; - var constraints = [new constraint.ObjectConstraint(type)]; - var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options)); - if (constrnts.length) { - constraints = constraints.concat(constrnts); - } else { - var cnstrnt = new constraint.TrueConstraint(); - constraints.push(cnstrnt); - } - if (store && !isEmpty(store)) { - var atm = new constraint.HashConstraint(store); - constraints.push(atm); - } +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js"); + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +module.exports = getMapData; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js"), + getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js"); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} - forEach(constraints, function (constraint) { - constraint.set("alias", alias); - }); - this.constraints = constraints; - }, +module.exports = getNative; - getSpecificity: function () { - var constraints = this.constraints, specificity = 0; - for (var i = 0, l = constraints.length; i < l; i++) { - if (constraints[i] instanceof EqualityConstraint) { - specificity++; - } - } - return specificity; - }, - hasConstraint: function (type) { - return extd.some(this.constraints, function (c) { - return c instanceof type; - }); - }, +/***/ }), - hashCode: function () { - return [this.type, this.alias, extd.format("%j", this.conditions)].join(":"); - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - toString: function () { - return extd.format("%j", this.constraints); - } - } -}).as(exports, "ObjectPattern"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js"); -var FromPattern = ObjectPattern.extend({ - instance: { - constructor: function (type, alias, conditions, store, from, options) { - this._super([type, alias, conditions, store, options]); - this.from = new FromConstraint(from, options); - }, +/** Used for built-in method references. */ +var objectProto = Object.prototype; - hasConstraint: function (type) { - return extd.some(this.constraints, function (c) { - return c instanceof type; - }); - }, +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - getSpecificity: function () { - return this._super(arguments) + 1; - }, +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - hashCode: function () { - return [this.type, this.alias, extd.format("%j", this.conditions), this.from.from].join(":"); - }, +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - toString: function () { - return extd.format("%j from %s", this.constraints, this.from.from); - } +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; } -}).as(exports, "FromPattern"); + } + return result; +} +module.exports = getRawTag; -FromPattern.extend().as(exports, "FromNotPattern"); -ObjectPattern.extend().as(exports, "NotPattern"); -ObjectPattern.extend().as(exports, "ExistsPattern"); -FromPattern.extend().as(exports, "FromExistsPattern"); -Pattern.extend({ +/***/ }), - instance: { - constructor: function (left, right) { - this.id = id++; - this.leftPattern = left; - this.rightPattern = right; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js ***! + \****************************************************************************************************/ +/***/ ((module) => { - hashCode: function () { - return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(":"); - }, +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} - getSpecificity: function () { - return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity(); - }, +module.exports = getValue; - getters: { - constraints: function () { - return this.leftPattern.constraints.concat(this.rightPattern.constraints); - } - } - } -}).as(exports, "CompositePattern"); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var InitialFact = declare({ - instance: { - constructor: function () { - this.id = id++; - this.recency = 0; - } - } -}).as(exports, "InitialFact"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); -ObjectPattern.extend({ - instance: { - constructor: function () { - this._super([InitialFact, "__i__", [], {}]); - }, +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} - assert: function () { - return true; - } - } -}).as(exports, "InitialFactPattern"); +module.exports = hashClear; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js ***! + \******************************************************************************************************/ +/***/ ((module) => { +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} -/***/ }), +module.exports = hashDelete; -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js ***! - \********************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; +/***/ }), -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - isArray = extd.isArray, - Promise = extd.Promise, - declare = extd.declare, - isHash = extd.isHash, - isString = extd.isString, - format = extd.format, - parser = __webpack_require__(/*! ./parser */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), - pattern = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), - ObjectPattern = pattern.ObjectPattern, - FromPattern = pattern.FromPattern, - NotPattern = pattern.NotPattern, - ExistsPattern = pattern.ExistsPattern, - FromNotPattern = pattern.FromNotPattern, - FromExistsPattern = pattern.FromExistsPattern, - CompositePattern = pattern.CompositePattern; +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js ***! + \***************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var parseConstraint = function (constraint) { - if (typeof constraint === 'function') { - // No parsing is needed for constraint functions - return constraint; - } - return parser.parseConstraint(constraint); -}; +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); -var parseExtra = extd - .switcher() - .isUndefinedOrNull(function () { - return null; - }) - .isLike(/^from +/, function (s) { - return {from: s.replace(/^from +/, "").replace(/^\s*|\s*$/g, "")}; - }) - .def(function (o) { - throw new Error("invalid rule constraint option " + o); - }) - .switcher(); +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; -var normailizeConstraint = extd - .switcher() - .isLength(1, function (c) { - throw new Error("invalid rule constraint " + format("%j", [c])); - }) - .isLength(2, function (c) { - c.push("true"); - return c; - }) - //handle case where c[2] is a hash rather than a constraint string - .isLength(3, function (c) { - if (isString(c[2]) && /^from +/.test(c[2])) { - var extra = c[2]; - c.splice(2, 0, "true"); - c[3] = null; - c[4] = parseExtra(extra); - } else if (isHash(c[2])) { - c.splice(2, 0, "true"); - } - return c; - }) - //handle case where c[3] is a from clause rather than a hash for references - .isLength(4, function (c) { - if (isString(c[3])) { - c.splice(3, 0, null); - c[4] = parseExtra(c[4]); - } - return c; - }) - .def(function (c) { - if (c.length === 5) { - c[4] = parseExtra(c[4]); - } - return c; - }) - .switcher(); +/** Used for built-in method references. */ +var objectProto = Object.prototype; -var getParamType = function getParamType(type, scope) { - scope = scope || {}; - var getParamTypeSwitch = extd - .switcher() - .isEq("string", function () { - return String; - }) - .isEq("date", function () { - return Date; - }) - .isEq("array", function () { - return Array; - }) - .isEq("boolean", function () { - return Boolean; - }) - .isEq("regexp", function () { - return RegExp; - }) - .isEq("number", function () { - return Number; - }) - .isEq("object", function () { - return Object; - }) - .isEq("hash", function () { - return Object; - }) - .def(function (param) { - throw new TypeError("invalid param type " + param); - }) - .switcher(); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - var _getParamType = extd - .switcher() - .isString(function (param) { - var t = scope[param]; - if (!t) { - return getParamTypeSwitch(param.toLowerCase()); - } else { - return t; - } - }) - .isFunction(function (func) { - return func; - }) - .deepEqual([], function () { - return Array; - }) - .def(function (param) { - throw new Error("invalid param type " + param); - }) - .switcher(); +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} - return _getParamType(type); -}; +module.exports = hashGet; -var parsePattern = extd - .switcher() - .containsAt("or", 0, function (condition) { - condition.shift(); - return extd(condition).map(function (cond) { - cond.scope = condition.scope; - return parsePattern(cond); - }).flatten().value(); - }) - .containsAt("not", 0, function (condition) { - condition.shift(); - condition = normailizeConstraint(condition); - if (condition[4] && condition[4].from) { - return [ - new FromNotPattern( - getParamType(condition[0], condition.scope), - condition[1] || "m", - parseConstraint(condition[2] || "true"), - condition[3] || {}, - parseConstraint(condition[4].from), - {scope: condition.scope, pattern: condition[2]} - ) - ]; - } else { - return [ - new NotPattern( - getParamType(condition[0], condition.scope), - condition[1] || "m", - parseConstraint(condition[2] || "true"), - condition[3] || {}, - {scope: condition.scope, pattern: condition[2]} - ) - ]; - } - }) - .containsAt("exists", 0, function (condition) { - condition.shift(); - condition = normailizeConstraint(condition); - if (condition[4] && condition[4].from) { - return [ - new FromExistsPattern( - getParamType(condition[0], condition.scope), - condition[1] || "m", - parseConstraint(condition[2] || "true"), - condition[3] || {}, - parseConstraint(condition[4].from), - {scope: condition.scope, pattern: condition[2]} - ) - ]; - } else { - return [ - new ExistsPattern( - getParamType(condition[0], condition.scope), - condition[1] || "m", - parseConstraint(condition[2] || "true"), - condition[3] || {}, - {scope: condition.scope, pattern: condition[2]} - ) - ]; - } - }) - .def(function (condition) { - if (typeof condition === 'function') { - return [condition]; - } - condition = normailizeConstraint(condition); - if (condition[4] && condition[4].from) { - return [ - new FromPattern( - getParamType(condition[0], condition.scope), - condition[1] || "m", - parseConstraint(condition[2] || "true"), - condition[3] || {}, - parseConstraint(condition[4].from), - {scope: condition.scope, pattern: condition[2]} - ) - ]; - } else { - return [ - new ObjectPattern( - getParamType(condition[0], condition.scope), - condition[1] || "m", - parseConstraint(condition[2] || "true"), - condition[3] || {}, - {scope: condition.scope, pattern: condition[2]} - ) - ]; - } - }).switcher(); -var Rule = declare({ - instance: { - constructor: function (name, options, pattern, cb) { - this.name = name; - this.pattern = pattern; - this.cb = cb; - if (options.agendaGroup) { - this.agendaGroup = options.agendaGroup; - this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false; - } - this.priority = options.priority || options.salience || 0; - }, +/***/ }), - fire: function (flow, match) { - var ret = new Promise(), cb = this.cb; - try { - if (cb.length === 3) { - cb.call(flow, match.factHash, flow, ret.resolve); - } else { - ret = cb.call(flow, match.factHash, flow); - } - } catch (e) { - ret.errback(e); - } - return ret; - } - } -}); +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js ***! + \***************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -function createRule(name, options, conditions, cb) { - if (isArray(options)) { - cb = conditions; - conditions = options; - } else { - options = options || {}; - } - var isRules = extd.every(conditions, function (cond) { - return isArray(cond); - }); - if (isRules && conditions.length === 1) { - conditions = conditions[0]; - isRules = false; - } - var rules = []; - var scope = options.scope || {}; - conditions.scope = scope; - if (isRules) { - var _mergePatterns = function (patt, i) { - if (!patterns[i]) { - patterns[i] = i === 0 ? [] : patterns[i - 1].slice(); - //remove dup - if (i !== 0) { - patterns[i].pop(); - } - patterns[i].push(patt); - } else { - extd(patterns).forEach(function (p) { - p.push(patt); - }); - } +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); - }; - var l = conditions.length, patterns = [], condition; - for (var i = 0; i < l; i++) { - condition = conditions[i]; - condition.scope = scope; - extd.forEach(parsePattern(condition), _mergePatterns); +/** Used for built-in method references. */ +var objectProto = Object.prototype; - } - rules = extd.map(patterns, function (patterns) { - var compPat = null; - for (var i = 0; i < patterns.length; i++) { - if (compPat === null) { - compPat = new CompositePattern(patterns[i++], patterns[i]); - } else { - compPat = new CompositePattern(compPat, patterns[i]); - } - } - return new Rule(name, options, compPat, cb); - }); - } else { - rules = extd.map(parsePattern(conditions), function (cond) { - return new Rule(name, options, cond, cb); - }); - } - return rules; +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); } -exports.createRule = createRule; +module.exports = hashHas; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js ***! + \***************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} +module.exports = hashSet; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js ***! \*****************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js"), - LinkedList = __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), - InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, - id = 0; +/***/ ((module) => { -var Fact = declare({ +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} - instance: { - constructor: function (obj) { - this.object = obj; - this.recency = 0; - this.id = id++; - }, +module.exports = isKeyable; - equals: function (fact) { - return fact === this.object; - }, - hashCode: function () { - return this.id; - } - } +/***/ }), -}); +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -declare({ +var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js"); - instance: { +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); - constructor: function () { - this.recency = 0; - this.facts = new LinkedList(); - }, +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} - dispose: function () { - this.facts.clear(); - }, +module.exports = isMasked; - getFacts: function () { - var head = {next: this.facts.head}, ret = [], i = 0, val; - while ((head = head.next)) { - if (!((val = head.data.object) instanceof InitialFact)) { - ret[i++] = val; - } - } - return ret; - }, - getFactsByType: function (Type) { - var head = {next: this.facts.head}, ret = [], i = 0; - while ((head = head.next)) { - var val = head.data.object; - if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) { - ret[i++] = val; - } - } - return ret; - }, +/***/ }), - getFactHandle: function (o) { - var head = {next: this.facts.head}, ret; - while ((head = head.next)) { - var existingFact = head.data; - if (existingFact.equals(o)) { - return existingFact; - } - } - if (!ret) { - ret = new Fact(o); - ret.recency = this.recency++; - //this.facts.push(ret); - } - return ret; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js ***! + \**********************************************************************************************************/ +/***/ ((module) => { - modifyFact: function (fact) { - var head = {next: this.facts.head}; - while ((head = head.next)) { - var existingFact = head.data; - if (existingFact.equals(fact)) { - existingFact.recency = this.recency++; - return existingFact; - } - } - //if we made it here we did not find the fact - throw new Error("the fact to modify does not exist"); - }, +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} - assertFact: function (fact) { - var ret = new Fact(fact); - ret.recency = this.recency++; - this.facts.push(ret); - return ret; - }, +module.exports = listCacheClear; - retractFact: function (fact) { - var facts = this.facts, head = {next: facts.head}; - while ((head = head.next)) { - var existingFact = head.data; - if (existingFact.equals(fact)) { - facts.remove(head); - return existingFact; - } - } - //if we made it here we did not find the fact - throw new Error("the fact to remove does not exist"); +/***/ }), - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}).as(exports, "WorkingMemory"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); +/** Used for built-in method references. */ +var arrayProto = Array.prototype; +/** Built-in value references. */ +var splice = arrayProto.splice; -/***/ }), +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js ***! - \***************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} -(function () { - "use strict"; - /*global extended isExtended*/ +module.exports = listCacheDelete; - function defineObject(extended, is, arr) { - var deepEqual = is.deepEqual, - isString = is.isString, - isHash = is.isHash, - difference = arr.difference, - hasOwn = Object.prototype.hasOwnProperty, - isFunction = is.isFunction; +/***/ }), - function _merge(target, source) { - var name, s; - for (name in source) { - if (hasOwn.call(source, name)) { - s = source[name]; - if (!(name in target) || (target[name] !== s)) { - target[name] = s; - } - } - } - return target; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function _deepMerge(target, source) { - var name, s, t; - for (name in source) { - if (hasOwn.call(source, name)) { - s = source[name]; - t = target[name]; - if (!deepEqual(t, s)) { - if (isHash(t) && isHash(s)) { - target[name] = _deepMerge(t, s); - } else if (isHash(s)) { - target[name] = _deepMerge({}, s); - } else { - target[name] = s; - } - } - } - } - return target; - } +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - function merge(obj) { - if (!obj) { - obj = {}; - } - for (var i = 1, l = arguments.length; i < l; i++) { - _merge(obj, arguments[i]); - } - return obj; // Object - } + return index < 0 ? undefined : data[index][1]; +} - function deepMerge(obj) { - if (!obj) { - obj = {}; - } - for (var i = 1, l = arguments.length; i < l; i++) { - _deepMerge(obj, arguments[i]); - } - return obj; // Object - } +module.exports = listCacheGet; - function extend(parent, child) { - var proto = parent.prototype || parent; - merge(proto, child); - return parent; - } +/***/ }), - function forEach(hash, iterator, scope) { - if (!isHash(hash) || !isFunction(iterator)) { - throw new TypeError(); - } - var objKeys = keys(hash), key; - for (var i = 0, len = objKeys.length; i < len; ++i) { - key = objKeys[i]; - iterator.call(scope || hash, hash[key], key, hash); - } - return hash; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function filter(hash, iterator, scope) { - if (!isHash(hash) || !isFunction(iterator)) { - throw new TypeError(); - } - var objKeys = keys(hash), key, value, ret = {}; - for (var i = 0, len = objKeys.length; i < len; ++i) { - key = objKeys[i]; - value = hash[key]; - if (iterator.call(scope || hash, value, key, hash)) { - ret[key] = value; - } - } - return ret; - } +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); - function values(hash) { - if (!isHash(hash)) { - throw new TypeError(); - } - var objKeys = keys(hash), ret = []; - for (var i = 0, len = objKeys.length; i < len; ++i) { - ret.push(hash[objKeys[i]]); - } - return ret; - } +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} +module.exports = listCacheHas; - function keys(hash) { - if (!isHash(hash)) { - throw new TypeError(); - } - var ret = []; - for (var i in hash) { - if (hasOwn.call(hash, i)) { - ret.push(i); - } - } - return ret; - } - function invert(hash) { - if (!isHash(hash)) { - throw new TypeError(); - } - var objKeys = keys(hash), key, ret = {}; - for (var i = 0, len = objKeys.length; i < len; ++i) { - key = objKeys[i]; - ret[hash[key]] = key; - } - return ret; - } +/***/ }), - function toArray(hash) { - if (!isHash(hash)) { - throw new TypeError(); - } - var objKeys = keys(hash), key, ret = []; - for (var i = 0, len = objKeys.length; i < len; ++i) { - key = objKeys[i]; - ret.push([key, hash[key]]); - } - return ret; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function omit(hash, omitted) { - if (!isHash(hash)) { - throw new TypeError(); - } - if (isString(omitted)) { - omitted = [omitted]; - } - var objKeys = difference(keys(hash), omitted), key, ret = {}; - for (var i = 0, len = objKeys.length; i < len; ++i) { - key = objKeys[i]; - ret[key] = hash[key]; - } - return ret; - } +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); - var hash = { - forEach: forEach, - filter: filter, - invert: invert, - values: values, - toArray: toArray, - keys: keys, - omit: omit - }; +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} - var obj = { - extend: extend, - merge: merge, - deepMerge: deepMerge, - omit: omit - }; +module.exports = listCacheSet; - var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj); - var orig = ret.extend; - ret.extend = function __extend() { - if (arguments.length === 1) { - return orig.extend.apply(ret, arguments); - } else { - extend.apply(null, arguments); - } - }; - return ret; - } +/***/ }), - if (true) { - if ( true && module.exports) { - module.exports = defineObject(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")); +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - } - } else {} +var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js"), + ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js"); -}).call(this); +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +module.exports = mapCacheClear; +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} +module.exports = mapCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js ***! - \****************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -(function () { - "use strict"; - /*global setImmediate, MessageChannel*/ +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} - function definePromise(declare, extended, array, is, fn, args) { +module.exports = mapCacheGet; - var forEach = array.forEach, - isUndefinedOrNull = is.isUndefinedOrNull, - isArray = is.isArray, - isFunction = is.isFunction, - isBoolean = is.isBoolean, - bind = fn.bind, - bindIgnore = fn.bindIgnore, - argsToArray = args.argsToArray; - function createHandler(fn, promise) { - return function _handler() { - try { - when(fn.apply(null, arguments)) - .addCallback(promise) - .addErrback(promise); - } catch (e) { - promise.errback(e); - } - }; - } +/***/ }), - var nextTick; - if (typeof setImmediate === "function") { - // In IE10, or use https://github.com/NobleJS/setImmediate - if (typeof window !== "undefined") { - nextTick = setImmediate.bind(window); - } else { - nextTick = setImmediate; - } - } else if (typeof process !== "undefined") { - // node - nextTick = function (cb) { - process.nextTick(cb); - }; - } else if (typeof MessageChannel !== "undefined") { - // modern browsers - // http://www.nonblocking.io/2011/06/windownexttick.html - var channel = new MessageChannel(); - // linked list of tasks (single, with head node) - var head = {}, tail = head; - channel.port1.onmessage = function () { - head = head.next; - var task = head.task; - delete head.task; - task(); - }; - nextTick = function (task) { - tail = tail.next = {task: task}; - channel.port2.postMessage(0); - }; - } else { - // old browsers - nextTick = function (task) { - setTimeout(task, 0); - }; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); - //noinspection JSHint - var Promise = declare({ - instance: { - __fired: false, +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} - __results: null, +module.exports = mapCacheHas; - __error: null, - __errorCbs: null, +/***/ }), - __cbs: null, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - constructor: function () { - this.__errorCbs = []; - this.__cbs = []; - fn.bindAll(this, ["callback", "errback", "resolve", "classic", "__resolve", "addCallback", "addErrback"]); - }, +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); - __resolve: function () { - if (!this.__fired) { - this.__fired = true; - var cbs = this.__error ? this.__errorCbs : this.__cbs, - len = cbs.length, i, - results = this.__error || this.__results; - for (i = 0; i < len; i++) { - this.__callNextTick(cbs[i], results); - } +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; - } - }, + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} - __callNextTick: function (cb, results) { - nextTick(function () { - cb.apply(this, results); - }); - }, +module.exports = mapCacheSet; - addCallback: function (cb) { - if (cb) { - if (isPromiseLike(cb) && cb.callback) { - cb = cb.callback; - } - if (this.__fired && this.__results) { - this.__callNextTick(cb, this.__results); - } else { - this.__cbs.push(cb); - } - } - return this; - }, +/***/ }), - addErrback: function (cb) { - if (cb) { - if (isPromiseLike(cb) && cb.errback) { - cb = cb.errback; - } - if (this.__fired && this.__error) { - this.__callNextTick(cb, this.__error); - } else { - this.__errorCbs.push(cb); - } - } - return this; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - callback: function (args) { - if (!this.__fired) { - this.__results = arguments; - this.__resolve(); - } - return this.promise(); - }, +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js"); - errback: function (args) { - if (!this.__fired) { - this.__error = arguments; - this.__resolve(); - } - return this.promise(); - }, +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); - resolve: function (err, args) { - if (err) { - this.errback(err); - } else { - this.callback.apply(this, argsToArray(arguments, 1)); - } - return this; - }, +module.exports = nativeCreate; - classic: function (cb) { - if ("function" === typeof cb) { - this.addErrback(function (err) { - cb(err); - }); - this.addCallback(function () { - cb.apply(this, [null].concat(argsToArray(arguments))); - }); - } - return this; - }, - then: function (callback, errback) { +/***/ }), - var promise = new Promise(), errorHandler = promise; - if (isFunction(errback)) { - errorHandler = createHandler(errback, promise); - } - this.addErrback(errorHandler); - if (isFunction(callback)) { - this.addCallback(createHandler(callback, promise)); - } else { - this.addCallback(promise); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js ***! + \**********************************************************************************************************/ +/***/ ((module) => { - return promise.promise(); - }, +/** Used for built-in method references. */ +var objectProto = Object.prototype; - both: function (callback) { - return this.then(callback, callback); - }, +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - promise: function () { - var ret = { - then: bind(this, "then"), - both: bind(this, "both"), - promise: function () { - return ret; - } - }; - forEach(["addCallback", "addErrback", "classic"], function (action) { - ret[action] = bind(this, function () { - this[action].apply(this, arguments); - return ret; - }); - }, this); +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} - return ret; - } +module.exports = objectToString; - } - }); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var PromiseList = Promise.extend({ - instance: { +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js"); - /*@private*/ - __results: null, +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - /*@private*/ - __errors: null, +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); - /*@private*/ - __promiseLength: 0, +module.exports = root; - /*@private*/ - __defLength: 0, - /*@private*/ - __firedLength: 0, +/***/ }), - normalizeResults: false, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js ***! + \*******************************************************************************************************/ +/***/ ((module) => { - constructor: function (defs, normalizeResults) { - this.__errors = []; - this.__results = []; - this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false; - this._super(arguments); - if (defs && defs.length) { - this.__defLength = defs.length; - forEach(defs, this.__addPromise, this); - } else { - this.__resolve(); - } - }, +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - __addPromise: function (promise, i) { - promise.then( - bind(this, function () { - var args = argsToArray(arguments); - args.unshift(i); - this.callback.apply(this, args); - }), - bind(this, function () { - var args = argsToArray(arguments); - args.unshift(i); - this.errback.apply(this, args); - }) - ); - }, +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} - __resolve: function () { - if (!this.__fired) { - this.__fired = true; - var cbs = this.__errors.length ? this.__errorCbs : this.__cbs, - len = cbs.length, i, - results = this.__errors.length ? this.__errors : this.__results; - for (i = 0; i < len; i++) { - this.__callNextTick(cbs[i], results); - } +module.exports = setCacheAdd; - } - }, - __callNextTick: function (cb, results) { - nextTick(function () { - cb.apply(null, [results]); - }); - }, +/***/ }), - addCallback: function (cb) { - if (cb) { - if (isPromiseLike(cb) && cb.callback) { - cb = bind(cb, "callback"); - } - if (this.__fired && !this.__errors.length) { - this.__callNextTick(cb, this.__results); - } else { - this.__cbs.push(cb); - } - } - return this; - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js ***! + \*******************************************************************************************************/ +/***/ ((module) => { - addErrback: function (cb) { - if (cb) { - if (isPromiseLike(cb) && cb.errback) { - cb = bind(cb, "errback"); - } - if (this.__fired && this.__errors.length) { - this.__callNextTick(cb, this.__errors); - } else { - this.__errorCbs.push(cb); - } - } - return this; - }, +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} +module.exports = setCacheHas; - callback: function (i) { - if (this.__fired) { - throw new Error("Already fired!"); - } - var args = argsToArray(arguments); - if (this.normalizeResults) { - args = args.slice(1); - args = args.length === 1 ? args.pop() : args; - } - this.__results[i] = args; - this.__firedLength++; - if (this.__firedLength === this.__defLength) { - this.__resolve(); - } - return this.promise(); - }, +/***/ }), - errback: function (i) { - if (this.__fired) { - throw new Error("Already fired!"); - } - var args = argsToArray(arguments); - if (this.normalizeResults) { - args = args.slice(1); - args = args.length === 1 ? args.pop() : args; - } - this.__errors[i] = args; - this.__firedLength++; - if (this.__firedLength === this.__defLength) { - this.__resolve(); - } - return this.promise(); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js ***! + \******************************************************************************************************/ +/***/ ((module) => { - } - }); +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} - function callNext(list, results, propogate) { - var ret = new Promise().callback(); - forEach(list, function (listItem) { - ret = ret.then(propogate ? listItem : bindIgnore(null, listItem)); - if (!propogate) { - ret = ret.then(function (res) { - results.push(res); - return results; - }); - } - }); - return ret; - } +module.exports = setToArray; - function isPromiseLike(obj) { - return !isUndefinedOrNull(obj) && (isFunction(obj.then)); - } - function wrapThenPromise(p) { - var ret = new Promise(); - p.then(bind(ret, "callback"), bind(ret, "errback")); - return ret.promise(); - } +/***/ }), - function when(args) { - var p; - args = argsToArray(arguments); - if (!args.length) { - p = new Promise().callback(args).promise(); - } else if (args.length === 1) { - args = args.pop(); - if (isPromiseLike(args)) { - if (args.addCallback && args.addErrback) { - p = new Promise(); - args.addCallback(p.callback); - args.addErrback(p.errback); - } else { - p = wrapThenPromise(args); - } - } else if (isArray(args) && array.every(args, isPromiseLike)) { - p = new PromiseList(args, true).promise(); - } else { - p = new Promise().callback(args); - } - } else { - p = new PromiseList(array.map(args, function (a) { - return when(a); - }), true).promise(); - } - return p; +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js ***! + \*********************************************************************************************************/ +/***/ ((module) => { - } +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; - function wrap(fn, scope) { - return function _wrap() { - var ret = new Promise(); - var args = argsToArray(arguments); - args.push(ret.resolve); - fn.apply(scope || this, args); - return ret.promise(); - }; - } + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} - function serial(list) { - if (isArray(list)) { - return callNext(list, [], false); - } else { - throw new Error("When calling promise.serial the first argument must be an array"); - } - } +module.exports = strictIndexOf; - function chain(list) { - if (isArray(list)) { - return callNext(list, [], true); - } else { - throw new Error("When calling promise.serial the first argument must be an array"); - } - } +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js ***! + \****************************************************************************************************/ +/***/ ((module) => { - function wait(args, fn) { - args = argsToArray(arguments); - var resolved = false; - fn = args.pop(); - var p = when(args); - return function waiter() { - if (!resolved) { - args = arguments; - return p.then(bind(this, function doneWaiting() { - resolved = true; - return fn.apply(this, args); - })); - } else { - return when(fn.apply(this, arguments)); - } - }; - } +/** Used for built-in method references. */ +var funcProto = Function.prototype; - function createPromise() { - return new Promise(); - } +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - function createPromiseList(promises) { - return new PromiseList(promises, true).promise(); - } +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} - function createRejected(val) { - return createPromise().errback(val); - } +module.exports = toSource; - function createResolved(val) { - return createPromise().callback(val); - } +/***/ }), - return extended - .define({ - isPromiseLike: isPromiseLike - }).expose({ - isPromiseLike: isPromiseLike, - when: when, - wrap: wrap, - wait: wait, - serial: serial, - chain: chain, - Promise: Promise, - PromiseList: PromiseList, - promise: createPromise, - defer: createPromise, - deferredList: createPromiseList, - reject: createRejected, - resolve: createResolved - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js ***! + \*********************************************************************************************/ +/***/ ((module) => { - } +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} - if (true) { - if ( true && module.exports) { - module.exports = definePromise(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js"), __webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); - } - } else {} +module.exports = eq; -}).call(this); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js"); +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} +module.exports = isFunction; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js ***! \***************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - -(function () { - "use strict"; - - function defineString(extended, is, date, arr) { - - var stringify; - if (typeof JSON === "undefined") { - /* - json2.js - 2012-10-08 +/***/ ((module) => { - Public Domain. +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - */ +module.exports = isObject; - (function () { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - var isPrimitive = is.tester().isString().isNumber().isBoolean().tester(); +/***/ }), - function toJSON(obj) { - if (is.isDate(obj)) { - return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' + - f(obj.getUTCMonth() + 1) + '-' + - f(obj.getUTCDate()) + 'T' + - f(obj.getUTCHours()) + ':' + - f(obj.getUTCMinutes()) + ':' + - f(obj.getUTCSeconds()) + 'Z' - : null; - } else if (isPrimitive(obj)) { - return obj.valueOf(); - } - return obj; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js ***! + \***********************************************************************************************/ +/***/ ((module) => { - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"': '\\"', - '\\': '\\\\' - }, - rep; +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} +module.exports = noop; - function quote(string) { - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } +/***/ }), - function str(key, holder) { +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var i, k, v, length, mind = gap, partial, value = holder[key]; - if (value) { - value = toJSON(value); - } - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - switch (typeof value) { - case 'string': - return quote(value); - case 'number': - return isFinite(value) ? String(value) : 'null'; - case 'boolean': - case 'null': - return String(value); - case 'object': - if (!value) { - return 'null'; - } - gap += indent; - partial = []; - if (Object.prototype.toString.apply(value) === '[object Array]') { - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } +var baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js"); - stringify = function (value, replacer, space) { - var i; - gap = ''; - indent = ''; - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - } else if (typeof space === 'string') { - indent = space; - } - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - return str('', {'': value}); - }; - }()); - } else { - stringify = JSON.stringify; - } +/** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ +function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; +} +module.exports = uniq; - var isHash = is.isHash, aSlice = Array.prototype.slice; - var FORMAT_REGEX = /%((?:-?\+?.?\d*)?|(?:\[[^\[|\]]*\]))?([sjdDZ])/g; - var INTERP_REGEX = /\{(?:\[([^\[|\]]*)\])?(\w+)\}/g; - var STR_FORMAT = /(-?)(\+?)([A-Z|a-z|\W]?)([1-9][0-9]*)?$/; - var OBJECT_FORMAT = /([1-9][0-9]*)$/g; +/***/ }), - function formatString(string, format) { - var ret = string; - if (STR_FORMAT.test(format)) { - var match = format.match(STR_FORMAT); - var isLeftJustified = match[1], padChar = match[3], width = match[4]; - if (width) { - width = parseInt(width, 10); - if (ret.length < width) { - ret = pad(ret, width, padChar, isLeftJustified); - } else { - ret = truncate(ret, width); - } - } - } - return ret; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js": +/*!********************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - function formatNumber(number, format) { - var ret; - if (is.isNumber(number)) { - ret = "" + number; - if (STR_FORMAT.test(format)) { - var match = format.match(STR_FORMAT); - var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4]; - if (signed) { - ret = (number > 0 ? "+" : "") + ret; - } - if (width) { - width = parseInt(width, 10); - if (ret.length < width) { - ret = pad(ret, width, padChar || "0", isLeftJustified); - } else { - ret = truncate(ret, width); - } - } +const uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js"); - } - } else { - throw new Error("stringExtended.format : when using %d the parameter must be a number!"); - } - return ret; - } +const formCodeMatches = (conf, form) => { + return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form); +}; - function formatObject(object, format) { - var ret, match = format.match(OBJECT_FORMAT), spacing = 0; - if (match) { - spacing = parseInt(match[0], 10); - if (isNaN(spacing)) { - spacing = 0; - } - } - try { - ret = stringify(object, null, spacing); - } catch (e) { - throw new Error("stringExtended.format : Unable to parse json from ", object); - } - return ret; - } +// Returns whether `doc` is a valid registration against a configuration +// This is done by checks roughly similar to the `registration` transition filter function +// Serves as a replacement for checking for `transitions` metadata within the doc itself +exports.isValidRegistration = (doc, settings) => { + if (!doc || + (doc.errors && doc.errors.length) || + !settings || + !settings.registrations || + doc.type !== 'data_record' || + !doc.form) { + return false; + } + // Registration transition should be configured for this form + const registrationConfiguration = settings.registrations.find((conf) => { + return conf && + conf.form && + formCodeMatches(conf.form, doc.form); + }); + if (!registrationConfiguration) { + return false; + } - var styles = { - //styles - bold: 1, - bright: 1, - italic: 3, - underline: 4, - blink: 5, - inverse: 7, - crossedOut: 9, + if (doc.content_type === 'xml') { + return true; + } - red: 31, - green: 32, - yellow: 33, - blue: 34, - magenta: 35, - cyan: 36, - white: 37, + // SMS forms need to be configured + const form = settings.forms && settings.forms[doc.form]; + if (!form) { + return false; + } - redBackground: 41, - greenBackground: 42, - yellowBackground: 43, - blueBackground: 44, - magentaBackground: 45, - cyanBackground: 46, - whiteBackground: 47, + // Require a known submitter or the form to be public. + return Boolean(form.public_form || doc.contact); +}; - encircled: 52, - overlined: 53, - grey: 90, - black: 90 - }; +exports._formCodeMatches = formCodeMatches; - var characters = { - SMILEY: "☺", - SOLID_SMILEY: "☻", - HEART: "♥", - DIAMOND: "♦", - CLOVE: "♣", - SPADE: "♠", - DOT: "•", - SQUARE_CIRCLE: "◘", - CIRCLE: "○", - FILLED_SQUARE_CIRCLE: "◙", - MALE: "♂", - FEMALE: "♀", - EIGHT_NOTE: "♪", - DOUBLE_EIGHTH_NOTE: "♫", - SUN: "☼", - PLAY: "►", - REWIND: "◄", - UP_DOWN: "↕", - PILCROW: "¶", - SECTION: "§", - THICK_MINUS: "▬", - SMALL_UP_DOWN: "↨", - UP_ARROW: "↑", - DOWN_ARROW: "↓", - RIGHT_ARROW: "→", - LEFT_ARROW: "←", - RIGHT_ANGLE: "∟", - LEFT_RIGHT_ARROW: "↔", - TRIANGLE: "▲", - DOWN_TRIANGLE: "▼", - HOUSE: "⌂", - C_CEDILLA: "Ç", - U_UMLAUT: "ü", - E_ACCENT: "é", - A_LOWER_CIRCUMFLEX: "â", - A_LOWER_UMLAUT: "ä", - A_LOWER_GRAVE_ACCENT: "à", - A_LOWER_CIRCLE_OVER: "å", - C_LOWER_CIRCUMFLEX: "ç", - E_LOWER_CIRCUMFLEX: "ê", - E_LOWER_UMLAUT: "ë", - E_LOWER_GRAVE_ACCENT: "è", - I_LOWER_UMLAUT: "ï", - I_LOWER_CIRCUMFLEX: "î", - I_LOWER_GRAVE_ACCENT: "ì", - A_UPPER_UMLAUT: "Ä", - A_UPPER_CIRCLE: "Å", - E_UPPER_ACCENT: "É", - A_E_LOWER: "æ", - A_E_UPPER: "Æ", - O_LOWER_CIRCUMFLEX: "ô", - O_LOWER_UMLAUT: "ö", - O_LOWER_GRAVE_ACCENT: "ò", - U_LOWER_CIRCUMFLEX: "û", - U_LOWER_GRAVE_ACCENT: "ù", - Y_LOWER_UMLAUT: "ÿ", - O_UPPER_UMLAUT: "Ö", - U_UPPER_UMLAUT: "Ü", - CENTS: "¢", - POUND: "£", - YEN: "¥", - CURRENCY: "¤", - PTS: "₧", - FUNCTION: "ƒ", - A_LOWER_ACCENT: "á", - I_LOWER_ACCENT: "í", - O_LOWER_ACCENT: "ó", - U_LOWER_ACCENT: "ú", - N_LOWER_TILDE: "ñ", - N_UPPER_TILDE: "Ñ", - A_SUPER: "ª", - O_SUPER: "º", - UPSIDEDOWN_QUESTION: "¿", - SIDEWAYS_L: "⌐", - NEGATION: "¬", - ONE_HALF: "½", - ONE_FOURTH: "¼", - UPSIDEDOWN_EXCLAMATION: "¡", - DOUBLE_LEFT: "«", - DOUBLE_RIGHT: "»", - LIGHT_SHADED_BOX: "░", - MEDIUM_SHADED_BOX: "▒", - DARK_SHADED_BOX: "▓", - VERTICAL_LINE: "│", - MAZE__SINGLE_RIGHT_T: "┤", - MAZE_SINGLE_RIGHT_TOP: "┐", - MAZE_SINGLE_RIGHT_BOTTOM_SMALL: "┘", - MAZE_SINGLE_LEFT_TOP_SMALL: "┌", - MAZE_SINGLE_LEFT_BOTTOM_SMALL: "└", - MAZE_SINGLE_LEFT_T: "├", - MAZE_SINGLE_BOTTOM_T: "┴", - MAZE_SINGLE_TOP_T: "┬", - MAZE_SINGLE_CENTER: "┼", - MAZE_SINGLE_HORIZONTAL_LINE: "─", - MAZE_SINGLE_RIGHT_DOUBLECENTER_T: "╡", - MAZE_SINGLE_RIGHT_DOUBLE_BL: "╛", - MAZE_SINGLE_RIGHT_DOUBLE_T: "╢", - MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: "╖", - MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: "╕", - MAZE_SINGLE_LEFT_DOUBLE_T: "╞", - MAZE_SINGLE_BOTTOM_DOUBLE_T: "╧", - MAZE_SINGLE_TOP_DOUBLE_T: "╤", - MAZE_SINGLE_TOP_DOUBLECENTER_T: "╥", - MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: "╨", - MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: "╘", - MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: "╒", - MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: "╓", - MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: "╙", - MAZE_SINGLE_LEFT_TOP: "Γ", - MAZE_SINGLE_RIGHT_BOTTOM: "╜", - MAZE_SINGLE_LEFT_CENTER: "╟", - MAZE_SINGLE_DOUBLECENTER_CENTER: "╫", - MAZE_SINGLE_DOUBLECROSS_CENTER: "╪", - MAZE_DOUBLE_LEFT_CENTER: "╣", - MAZE_DOUBLE_VERTICAL: "║", - MAZE_DOUBLE_RIGHT_TOP: "╗", - MAZE_DOUBLE_RIGHT_BOTTOM: "╝", - MAZE_DOUBLE_LEFT_BOTTOM: "╚", - MAZE_DOUBLE_LEFT_TOP: "╔", - MAZE_DOUBLE_BOTTOM_T: "╩", - MAZE_DOUBLE_TOP_T: "╦", - MAZE_DOUBLE_LEFT_T: "╠", - MAZE_DOUBLE_HORIZONTAL: "═", - MAZE_DOUBLE_CROSS: "╬", - SOLID_RECTANGLE: "█", - THICK_LEFT_VERTICAL: "▌", - THICK_RIGHT_VERTICAL: "▐", - SOLID_SMALL_RECTANGLE_BOTTOM: "▄", - SOLID_SMALL_RECTANGLE_TOP: "▀", - PHI_UPPER: "Φ", - INFINITY: "∞", - INTERSECTION: "∩", - DEFINITION: "≡", - PLUS_MINUS: "±", - GT_EQ: "≥", - LT_EQ: "≤", - THEREFORE: "⌠", - SINCE: "∵", - DOESNOT_EXIST: "∄", - EXISTS: "∃", - FOR_ALL: "∀", - EXCLUSIVE_OR: "⊕", - BECAUSE: "⌡", - DIVIDE: "÷", - APPROX: "≈", - DEGREE: "°", - BOLD_DOT: "∙", - DOT_SMALL: "·", - CHECK: "√", - ITALIC_X: "✗", - SUPER_N: "ⁿ", - SQUARED: "²", - CUBED: "³", - SOLID_BOX: "■", - PERMILE: "‰", - REGISTERED_TM: "®", - COPYRIGHT: "©", - TRADEMARK: "™", - BETA: "β", - GAMMA: "γ", - ZETA: "ζ", - ETA: "η", - IOTA: "ι", - KAPPA: "κ", - LAMBDA: "λ", - NU: "ν", - XI: "ξ", - OMICRON: "ο", - RHO: "ρ", - UPSILON: "υ", - CHI_LOWER: "φ", - CHI_UPPER: "χ", - PSI: "ψ", - ALPHA: "α", - ESZETT: "ß", - PI: "π", - SIGMA_UPPER: "Σ", - SIGMA_LOWER: "σ", - MU: "µ", - TAU: "τ", - THETA: "Θ", - OMEGA: "Ω", - DELTA: "δ", - PHI_LOWER: "φ", - EPSILON: "ε" - }; +const CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id']; +const REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid']; - function pad(string, length, ch, end) { - string = "" + string; //check for numbers - ch = ch || " "; - var strLen = string.length; - while (strLen < length) { - if (end) { - string += ch; - } else { - string = ch + string; - } - strLen++; - } - return string; - } +exports.getSubjectIds = (doc) => { + const subjectIds = []; - function truncate(string, length, end) { - var ret = string; - if (is.isString(ret)) { - if (string.length > length) { - if (end) { - var l = string.length; - ret = string.substring(l - length, l); - } else { - ret = string.substring(0, length); - } - } - } else { - ret = truncate("" + ret, length); - } - return ret; - } + if (!doc) { + return subjectIds; + } - function format(str, obj) { - if (obj instanceof Array) { - var i = 0, len = obj.length; - //find the matches - return str.replace(FORMAT_REGEX, function (m, format, type) { - var replacer, ret; - if (i < len) { - replacer = obj[i++]; - } else { - //we are out of things to replace with so - //just return the match? - return m; - } - if (m === "%s" || m === "%d" || m === "%D") { - //fast path! - ret = replacer + ""; - } else if (m === "%Z") { - ret = replacer.toUTCString(); - } else if (m === "%j") { - try { - ret = stringify(replacer); - } catch (e) { - throw new Error("stringExtended.format : Unable to parse json from ", replacer); - } - } else { - format = format.replace(/^\[|\]$/g, ""); - switch (type) { - case "s": - ret = formatString(replacer, format); - break; - case "d": - ret = formatNumber(replacer, format); - break; - case "j": - ret = formatObject(replacer, format); - break; - case "D": - ret = date.format(replacer, format); - break; - case "Z": - ret = date.format(replacer, format, true); - break; - } - } - return ret; - }); - } else if (isHash(obj)) { - return str.replace(INTERP_REGEX, function (m, format, value) { - value = obj[value]; - if (!is.isUndefined(value)) { - if (format) { - if (is.isString(value)) { - return formatString(value, format); - } else if (is.isNumber(value)) { - return formatNumber(value, format); - } else if (is.isDate(value)) { - return date.format(value, format); - } else if (is.isObject(value)) { - return formatObject(value, format); - } - } else { - return "" + value; - } - } - return m; - }); - } else { - var args = aSlice.call(arguments).slice(1); - return format(str, args); - } - } + if (doc.type === 'data_record') { + REPORT_SUBJECT_PROPERTIES.forEach(prop => { + if (doc[prop]) { + subjectIds.push(doc[prop]); + } + if (doc.fields && doc.fields[prop]) { + subjectIds.push(doc.fields[prop]); + } + }); + } else { + CONTACT_SUBJECT_PROPERTIES.forEach(prop => { + if (doc[prop]) { + subjectIds.push(doc[prop]); + } + }); + } - function toArray(testStr, delim) { - var ret = []; - if (testStr) { - if (testStr.indexOf(delim) > 0) { - ret = testStr.replace(/\s+/g, "").split(delim); - } - else { - ret.push(testStr); - } - } - return ret; - } + return uniq(subjectIds); +}; - function multiply(str, times) { - var ret = []; - if (times) { - for (var i = 0; i < times; i++) { - ret.push(str); - } - } - return ret.join(""); - } +exports.getSubjectId = report => { + if (!report) { + return false; + } + for (const prop of REPORT_SUBJECT_PROPERTIES) { + if (report[prop]) { + return report[prop]; + } + if (report.fields && report.fields[prop]) { + return report.fields[prop]; + } + } +}; - function style(str, options) { - var ret, i, l; - if (options) { - if (is.isArray(str)) { - ret = []; - for (i = 0, l = str.length; i < l; i++) { - ret.push(style(str[i], options)); - } - } else if (options instanceof Array) { - ret = str; - for (i = 0, l = options.length; i < l; i++) { - ret = style(ret, options[i]); - } - } else if (options in styles) { - ret = '\x1B[' + styles[options] + 'm' + str + '\x1B[0m'; - } - } - return ret; - } +/***/ }), - function escape(str, except) { - return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function (ch) { - if (except && arr.indexOf(except, ch) !== -1) { - return ch; - } - return "\\" + ch; - }); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js ***! + \******************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - function trim(str) { - return str.replace(/^\s*|\s*$/g, ""); - } +(function () { + "use strict"; - function trimLeft(str) { - return str.replace(/^\s*/, ""); - } + function defineArgumentsExtended(extended, is) { - function trimRight(str) { - return str.replace(/\s*$/, ""); - } + var pSlice = Array.prototype.slice, + isArguments = is.isArguments; - function isEmpty(str) { - return str.length === 0; + function argsToArray(args, slice) { + var i = -1, j = 0, l = args.length, ret = []; + slice = slice || 0; + i += slice; + while (++i < l) { + ret[j++] = args[i]; + } + return ret; } - var string = { - toArray: toArray, - pad: pad, - truncate: truncate, - multiply: multiply, - format: format, - style: style, - escape: escape, - trim: trim, - trimLeft: trimLeft, - trimRight: trimRight, - isEmpty: isEmpty - }; - return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters}); + return extended + .define(isArguments, { + toArray: argsToArray + }) + .expose({ + argsToArray: argsToArray + }); } if (true) { if ( true && module.exports) { - module.exports = defineString(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js")); + module.exports = defineArgumentsExtended(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")); } } else {} @@ -42288,26919 +47188,23178 @@ declare({ - - - - - /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore.js ***! - \***************************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js ***! + \**************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { -/* module decorator */ module = __webpack_require__.nmd(module); -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.9.1 -// http://underscorejs.org -// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +(function () { + "use strict"; + /*global define*/ -(function() { + function defineArray(extended, is, args) { - // Baseline setup - // -------------- + var isString = is.isString, + isArray = Array.isArray || is.isArray, + isDate = is.isDate, + floor = Math.floor, + abs = Math.abs, + mathMax = Math.max, + mathMin = Math.min, + arrayProto = Array.prototype, + arrayIndexOf = arrayProto.indexOf, + arrayForEach = arrayProto.forEach, + arrayMap = arrayProto.map, + arrayReduce = arrayProto.reduce, + arrayReduceRight = arrayProto.reduceRight, + arrayFilter = arrayProto.filter, + arrayEvery = arrayProto.every, + arraySome = arrayProto.some, + argsToArray = args.argsToArray; - // Establish the root object, `window` (`self`) in the browser, `global` - // on the server, or `this` in some virtual machines. We use `self` - // instead of `window` for `WebWorker` support. - var root = typeof self == 'object' && self.self === self && self || - typeof global == 'object' && global.global === global && global || - this || - {}; - // Save the previous value of the `_` variable. - var previousUnderscore = root._; + function cross(num, cros) { + return reduceRight(cros, function (a, b) { + if (!isArray(b)) { + b = [b]; + } + b.unshift(num); + a.unshift(b); + return a; + }, []); + } - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype; - var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; + function permute(num, cross, length) { + var ret = []; + for (var i = 0; i < cross.length; i++) { + ret.push([num].concat(rotate(cross, i)).slice(0, length)); + } + return ret; + } - // Create quick reference variables for speed access to core prototypes. - var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create; + function intersection(a, b) { + var ret = [], aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) !== -1) { + ret.push(aOne); + } + } + return ret; + } - // Naked function reference for surrogate-prototype-swapping. - var Ctor = function(){}; - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; + var _sort = (function () { - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for their old module API. If we're in - // the browser, add `_` as a global object. - // (`nodeType` is checked to ensure that `module` - // and `exports` are not HTML elements.) - if ( true && !exports.nodeType) { - if ( true && !module.nodeType && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } + var isAll = function (arr, test) { + return every(arr, test); + }; - // Current version. - _.VERSION = '1.9.1'; + var defaultCmp = function (a, b) { + return a - b; + }; - // Internal function that returns an efficient (for current engines) version - // of the passed-in callback, to be repeatedly applied in other Underscore - // functions. - var optimizeCb = function(func, context, argCount) { - if (context === void 0) return func; - switch (argCount == null ? 3 : argCount) { - case 1: return function(value) { - return func.call(context, value); - }; - // The 2-argument case is omitted because we’re not using it. - case 3: return function(value, index, collection) { - return func.call(context, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(context, accumulator, value, index, collection); - }; - } - return function() { - return func.apply(context, arguments); - }; - }; + var dateSort = function (a, b) { + return a.getTime() - b.getTime(); + }; - var builtinIteratee; + return function _sort(arr, property) { + var ret = []; + if (isArray(arr)) { + ret = arr.slice(); + if (property) { + if (typeof property === "function") { + ret.sort(property); + } else { + ret.sort(function (a, b) { + var aProp = a[property], bProp = b[property]; + if (isString(aProp) && isString(bProp)) { + return aProp > bProp ? 1 : aProp < bProp ? -1 : 0; + } else if (isDate(aProp) && isDate(bProp)) { + return aProp.getTime() - bProp.getTime(); + } else { + return aProp - bProp; + } + }); + } + } else { + if (isAll(ret, isString)) { + ret.sort(); + } else if (isAll(ret, isDate)) { + ret.sort(dateSort); + } else { + ret.sort(defaultCmp); + } + } + } + return ret; + }; - // An internal function to generate callbacks that can be applied to each - // element in a collection, returning the desired result — either `identity`, - // an arbitrary callback, a property matcher, or a property accessor. - var cb = function(value, context, argCount) { - if (_.iteratee !== builtinIteratee) return _.iteratee(value, context); - if (value == null) return _.identity; - if (_.isFunction(value)) return optimizeCb(value, context, argCount); - if (_.isObject(value) && !_.isArray(value)) return _.matcher(value); - return _.property(value); - }; + })(); - // External wrapper for our callback generator. Users may customize - // `_.iteratee` if they want additional predicate/iteratee shorthand styles. - // This abstraction hides the internal-only argCount argument. - _.iteratee = builtinIteratee = function(value, context) { - return cb(value, context, Infinity); - }; + function indexOf(arr, searchElement, from) { + var index = (from || 0) - 1, + length = arr.length; + while (++index < length) { + if (arr[index] === searchElement) { + return index; + } + } + return -1; + } - // Some functions take a variable number of arguments, or a few expected - // arguments at the beginning and then a variable number of values to operate - // on. This helper accumulates all remaining arguments past the function’s - // argument length (or an explicit `startIndex`), into an array that becomes - // the last argument. Similar to ES6’s "rest parameter". - var restArguments = function(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; - }; + function lastIndexOf(arr, searchElement, from) { + if (!isArray(arr)) { + throw new TypeError(); + } - // An internal function for creating a new object that inherits from another. - var baseCreate = function(prototype) { - if (!_.isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; - }; + var t = Object(arr); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } - var shallowProperty = function(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; - }; + var n = len; + if (arguments.length > 2) { + n = Number(arguments[2]); + if (n !== n) { + n = 0; + } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { + n = (n > 0 || -1) * floor(abs(n)); + } + } - var has = function(obj, path) { - return obj != null && hasOwnProperty.call(obj, path); - } + var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n); - var deepGet = function(obj, path) { - var length = path.length; - for (var i = 0; i < length; i++) { - if (obj == null) return void 0; - obj = obj[path[i]]; - } - return length ? obj : void 0; - }; + for (; k >= 0; k--) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } - // Helper for collection methods to determine whether a collection - // should be iterated as an array or as an object. - // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength - // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 - var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; - var getLength = shallowProperty('length'); - var isArrayLike = function(collection) { - var length = getLength(collection); - return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; - }; + function filter(arr, iterator, scope) { + if (arr && arrayFilter && arrayFilter === arr.filter) { + return arr.filter(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } - // Collection Functions - // -------------------- + var t = Object(arr); + var len = t.length >>> 0; + var res = []; + for (var i = 0; i < len; i++) { + if (i in t) { + var val = t[i]; // in case fun mutates this + if (iterator.call(scope, val, i, t)) { + res.push(val); + } + } + } + return res; + } - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles raw objects in addition to array-likes. Treats all - // sparse array-likes as if they were dense. - _.each = _.forEach = function(obj, iteratee, context) { - iteratee = optimizeCb(iteratee, context); - var i, length; - if (isArrayLike(obj)) { - for (i = 0, length = obj.length; i < length; i++) { - iteratee(obj[i], i, obj); - } - } else { - var keys = _.keys(obj); - for (i = 0, length = keys.length; i < length; i++) { - iteratee(obj[keys[i]], keys[i], obj); - } - } - return obj; - }; + function forEach(arr, iterator, scope) { + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + if (arr && arrayForEach && arrayForEach === arr.forEach) { + arr.forEach(iterator, scope); + return arr; + } + for (var i = 0, len = arr.length; i < len; ++i) { + iterator.call(scope || arr, arr[i], i, arr); + } - // Return the results of applying the iteratee to each element. - _.map = _.collect = function(obj, iteratee, context) { - iteratee = cb(iteratee, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length, - results = Array(length); - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - results[index] = iteratee(obj[currentKey], currentKey, obj); - } - return results; - }; + return arr; + } - // Create a reducing function iterating left or right. - var createReduce = function(dir) { - // Wrap code that reassigns argument variables in a separate function than - // the one that accesses `arguments.length` to avoid a perf hit. (#1991) - var reducer = function(obj, iteratee, memo, initial) { - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length, - index = dir > 0 ? 0 : length - 1; - if (!initial) { - memo = obj[keys ? keys[index] : index]; - index += dir; - } - for (; index >= 0 && index < length; index += dir) { - var currentKey = keys ? keys[index] : index; - memo = iteratee(memo, obj[currentKey], currentKey, obj); - } - return memo; - }; + function every(arr, iterator, scope) { + if (arr && arrayEvery && arrayEvery === arr.every) { + return arr.every(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + var t = Object(arr); + var len = t.length >>> 0; + for (var i = 0; i < len; i++) { + if (i in t && !iterator.call(scope, t[i], i, t)) { + return false; + } + } + return true; + } - return function(obj, iteratee, memo, context) { - var initial = arguments.length >= 3; - return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); - }; - }; + function some(arr, iterator, scope) { + if (arr && arraySome && arraySome === arr.some) { + return arr.some(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + var t = Object(arr); + var len = t.length >>> 0; + for (var i = 0; i < len; i++) { + if (i in t && iterator.call(scope, t[i], i, t)) { + return true; + } + } + return false; + } - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. - _.reduce = _.foldl = _.inject = createReduce(1); + function map(arr, iterator, scope) { + if (arr && arrayMap && arrayMap === arr.map) { + return arr.map(iterator, scope); + } + if (!isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } - // The right-associative version of reduce, also known as `foldr`. - _.reduceRight = _.foldr = createReduce(-1); + var t = Object(arr); + var len = t.length >>> 0; + var res = []; + for (var i = 0; i < len; i++) { + if (i in t) { + res.push(iterator.call(scope, t[i], i, t)); + } + } + return res; + } - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey; - var key = keyFinder(obj, predicate, context); - if (key !== void 0 && key !== -1) return obj[key]; - }; + function reduce(arr, accumulator, curr) { + var initial = arguments.length > 2; + if (arr && arrayReduce && arrayReduce === arr.reduce) { + return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator); + } + if (!isArray(arr) || typeof accumulator !== "function") { + throw new TypeError(); + } + var i = 0, l = arr.length >> 0; + if (arguments.length < 3) { + if (l === 0) { + throw new TypeError("Array length is 0 and no second argument"); + } + curr = arr[0]; + i = 1; // start accumulating at the second element + } else { + curr = arguments[2]; + } + while (i < l) { + if (i in arr) { + curr = accumulator.call(undefined, curr, arr[i], i, arr); + } + ++i; + } + return curr; + } - // Return all the elements that pass a truth test. - // Aliased as `select`. - _.filter = _.select = function(obj, predicate, context) { - var results = []; - predicate = cb(predicate, context); - _.each(obj, function(value, index, list) { - if (predicate(value, index, list)) results.push(value); - }); - return results; - }; + function reduceRight(arr, accumulator, curr) { + var initial = arguments.length > 2; + if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) { + return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator); + } + if (!isArray(arr) || typeof accumulator !== "function") { + throw new TypeError(); + } - // Return all the elements for which a truth test fails. - _.reject = function(obj, predicate, context) { - return _.filter(obj, _.negate(cb(predicate)), context); - }; + var t = Object(arr); + var len = t.length >>> 0; - // Determine whether all of the elements match a truth test. - // Aliased as `all`. - _.every = _.all = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length; - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - if (!predicate(obj[currentKey], currentKey, obj)) return false; - } - return true; - }; + // no value to return if no initial value, empty array + if (len === 0 && arguments.length === 2) { + throw new TypeError(); + } - // Determine if at least one element in the object matches a truth test. - // Aliased as `any`. - _.some = _.any = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length; - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - if (predicate(obj[currentKey], currentKey, obj)) return true; - } - return false; - }; + var k = len - 1; + if (arguments.length >= 3) { + curr = arguments[2]; + } else { + do { + if (k in arr) { + curr = arr[k--]; + break; + } + } + while (true); + } + while (k >= 0) { + if (k in t) { + curr = accumulator.call(undefined, curr, t[k], k, t); + } + k--; + } + return curr; + } - // Determine if the array or object contains a given item (using `===`). - // Aliased as `includes` and `include`. - _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = _.values(obj); - if (typeof fromIndex != 'number' || guard) fromIndex = 0; - return _.indexOf(obj, item, fromIndex) >= 0; - }; - // Invoke a method (with arguments) on every item in a collection. - _.invoke = restArguments(function(obj, path, args) { - var contextPath, func; - if (_.isFunction(path)) { - func = path; - } else if (_.isArray(path)) { - contextPath = path.slice(0, -1); - path = path[path.length - 1]; - } - return _.map(obj, function(context) { - var method = func; - if (!method) { - if (contextPath && contextPath.length) { - context = deepGet(context, contextPath); + function toArray(o) { + var ret = []; + if (o !== null) { + var args = argsToArray(arguments); + if (args.length === 1) { + if (isArray(o)) { + ret = o; + } else if (is.isHash(o)) { + for (var i in o) { + if (o.hasOwnProperty(i)) { + ret.push([i, o[i]]); + } + } + } else { + ret.push(o); + } + } else { + forEach(args, function (a) { + ret = ret.concat(toArray(a)); + }); + } + } + return ret; } - if (context == null) return void 0; - method = context[path]; - } - return method == null ? method : method.apply(context, args); - }); - }); - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, _.property(key)); - }; + function sum(array) { + array = array || []; + if (array.length) { + return reduce(array, function (a, b) { + return a + b; + }); + } else { + return 0; + } + } - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs) { - return _.filter(obj, _.matcher(attrs)); - }; + function avg(arr) { + arr = arr || []; + if (arr.length) { + var total = sum(arr); + if (is.isNumber(total)) { + return total / arr.length; + } else { + throw new Error("Cannot average an array of non numbers."); + } + } else { + return 0; + } + } - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.find(obj, _.matcher(attrs)); - }; + function sort(arr, cmp) { + return _sort(arr, cmp); + } - // Return the maximum element (or element-based computation). - _.max = function(obj, iteratee, context) { - var result = -Infinity, lastComputed = -Infinity, - value, computed; - if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { - obj = isArrayLike(obj) ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value != null && value > result) { - result = value; + function min(arr, cmp) { + return _sort(arr, cmp)[0]; } - } - } else { - iteratee = cb(iteratee, context); - _.each(obj, function(v, index, list) { - computed = iteratee(v, index, list); - if (computed > lastComputed || computed === -Infinity && result === -Infinity) { - result = v; - lastComputed = computed; + + function max(arr, cmp) { + return _sort(arr, cmp)[arr.length - 1]; } - }); - } - return result; - }; - // Return the minimum element (or element-based computation). - _.min = function(obj, iteratee, context) { - var result = Infinity, lastComputed = Infinity, - value, computed; - if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { - obj = isArrayLike(obj) ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value != null && value < result) { - result = value; + function difference(arr1) { + var ret = arr1, args = flatten(argsToArray(arguments, 1)); + if (isArray(arr1)) { + ret = filter(arr1, function (a) { + return indexOf(args, a) === -1; + }); + } + return ret; } - } - } else { - iteratee = cb(iteratee, context); - _.each(obj, function(v, index, list) { - computed = iteratee(v, index, list); - if (computed < lastComputed || computed === Infinity && result === Infinity) { - result = v; - lastComputed = computed; + + function removeDuplicates(arr) { + var ret = [], i = -1, l, retLength = 0; + if (arr) { + l = arr.length; + while (++i < l) { + var item = arr[i]; + if (indexOf(ret, item) === -1) { + ret[retLength++] = item; + } + } + } + return ret; } - }); - } - return result; - }; - // Shuffle a collection. - _.shuffle = function(obj) { - return _.sample(obj, Infinity); - }; - // Sample **n** random values from a collection using the modern version of the - // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). - // If **n** is not specified, returns a single random element. - // The internal `guard` argument allows it to work with `map`. - _.sample = function(obj, n, guard) { - if (n == null || guard) { - if (!isArrayLike(obj)) obj = _.values(obj); - return obj[_.random(obj.length - 1)]; - } - var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj); - var length = getLength(sample); - n = Math.max(Math.min(n, length), 0); - var last = length - 1; - for (var index = 0; index < n; index++) { - var rand = _.random(index, last); - var temp = sample[index]; - sample[index] = sample[rand]; - sample[rand] = temp; - } - return sample.slice(0, n); - }; + function unique(arr) { + return removeDuplicates(arr); + } - // Sort the object's values by a criterion produced by an iteratee. - _.sortBy = function(obj, iteratee, context) { - var index = 0; - iteratee = cb(iteratee, context); - return _.pluck(_.map(obj, function(value, key, list) { - return { - value: value, - index: index++, - criteria: iteratee(value, key, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index - right.index; - }), 'value'); - }; - // An internal function used for aggregate "group by" operations. - var group = function(behavior, partition) { - return function(obj, iteratee, context) { - var result = partition ? [[], []] : {}; - iteratee = cb(iteratee, context); - _.each(obj, function(value, index) { - var key = iteratee(value, index, obj); - behavior(result, value, key); - }); - return result; - }; - }; + function rotate(arr, numberOfTimes) { + var ret = arr.slice(); + if (typeof numberOfTimes !== "number") { + numberOfTimes = 1; + } + if (numberOfTimes && isArray(arr)) { + if (numberOfTimes > 0) { + ret.push(ret.shift()); + numberOfTimes--; + } else { + ret.unshift(ret.pop()); + numberOfTimes++; + } + return rotate(ret, numberOfTimes); + } else { + return ret; + } + } - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = group(function(result, value, key) { - if (has(result, key)) result[key].push(value); else result[key] = [value]; - }); + function permutations(arr, length) { + var ret = []; + if (isArray(arr)) { + var copy = arr.slice(0); + if (typeof length !== "number") { + length = arr.length; + } + if (!length) { + ret = [ + [] + ]; + } else if (length <= arr.length) { + ret = reduce(arr, function (a, b, i) { + var ret; + if (length > 1) { + ret = permute(b, rotate(copy, i).slice(1), length); + } else { + ret = [ + [b] + ]; + } + return a.concat(ret); + }, []); + } + } + return ret; + } - // Indexes the object's values by a criterion, similar to `groupBy`, but for - // when you know that your index values will be unique. - _.indexBy = group(function(result, value, key) { - result[key] = value; - }); + function zip() { + var ret = []; + var arrs = argsToArray(arguments); + if (arrs.length > 1) { + var arr1 = arrs.shift(); + if (isArray(arr1)) { + ret = reduce(arr1, function (a, b, i) { + var curr = [b]; + for (var j = 0; j < arrs.length; j++) { + var currArr = arrs[j]; + if (isArray(currArr) && !is.isUndefined(currArr[i])) { + curr.push(currArr[i]); + } else { + curr.push(null); + } + } + a.push(curr); + return a; + }, []); + } + } + return ret; + } - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = group(function(result, value, key) { - if (has(result, key)) result[key]++; else result[key] = 1; - }); + function transpose(arr) { + var ret = []; + if (isArray(arr) && arr.length) { + var last; + forEach(arr, function (a) { + if (isArray(a) && (!last || a.length === last.length)) { + forEach(a, function (b, i) { + if (!ret[i]) { + ret[i] = []; + } + ret[i].push(b); + }); + last = a; + } + }); + } + return ret; + } - var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; - // Safely create a real, live array from anything iterable. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (_.isString(obj)) { - // Keep surrogate pair characters together - return obj.match(reStrSymbol); - } - if (isArrayLike(obj)) return _.map(obj, _.identity); - return _.values(obj); - }; + function valuesAt(arr, indexes) { + var ret = []; + indexes = argsToArray(arguments); + arr = indexes.shift(); + if (isArray(arr) && indexes.length) { + for (var i = 0, l = indexes.length; i < l; i++) { + ret.push(arr[indexes[i]] || null); + } + } + return ret; + } - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : _.keys(obj).length; - }; + function union() { + var ret = []; + var arrs = argsToArray(arguments); + if (arrs.length > 1) { + for (var i = 0, l = arrs.length; i < l; i++) { + ret = ret.concat(arrs[i]); + } + ret = removeDuplicates(ret); + } + return ret; + } - // Split a collection into two arrays: one whose elements all satisfy the given - // predicate, and one whose elements all do not satisfy the predicate. - _.partition = group(function(result, value, pass) { - result[pass ? 0 : 1].push(value); - }, true); + function intersect() { + var collect = [], sets, i = -1 , l; + if (arguments.length > 1) { + //assume we are intersections all the lists in the array + sets = argsToArray(arguments); + } else { + sets = arguments[0]; + } + if (isArray(sets)) { + collect = sets[0]; + i = 0; + l = sets.length; + while (++i < l) { + collect = intersection(collect, sets[i]); + } + } + return removeDuplicates(collect); + } - // Array Functions - // --------------- + function powerSet(arr) { + var ret = []; + if (isArray(arr) && arr.length) { + ret = reduce(arr, function (a, b) { + var ret = map(a, function (c) { + return c.concat(b); + }); + return a.concat(ret); + }, [ + [] + ]); + } + return ret; + } - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null || array.length < 1) return n == null ? void 0 : []; - if (n == null || guard) return array[0]; - return _.initial(array, array.length - n); - }; + function cartesian(a, b) { + var ret = []; + if (isArray(a) && isArray(b) && a.length && b.length) { + ret = cross(a[0], b).concat(cartesian(a.slice(1), b)); + } + return ret; + } - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. - _.initial = function(array, n, guard) { - return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); - }; + function compact(arr) { + var ret = []; + if (isArray(arr) && arr.length) { + ret = filter(arr, function (item) { + return !is.isUndefinedOrNull(item); + }); + } + return ret; + } - // Get the last element of an array. Passing **n** will return the last N - // values in the array. - _.last = function(array, n, guard) { - if (array == null || array.length < 1) return n == null ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return _.rest(array, Math.max(0, array.length - n)); - }; + function multiply(arr, times) { + times = is.isNumber(times) ? times : 1; + if (!times) { + //make sure times is greater than zero if it is zero then dont multiply it + times = 1; + } + arr = toArray(arr || []); + var ret = [], i = 0; + while (++i <= times) { + ret = ret.concat(arr); + } + return ret; + } - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); - }; + function flatten(arr) { + var set; + var args = argsToArray(arguments); + if (args.length > 1) { + //assume we are intersections all the lists in the array + set = args; + } else { + set = toArray(arr); + } + return reduce(set, function (a, b) { + return a.concat(b); + }, []); + } - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, Boolean); - }; + function pluck(arr, prop) { + prop = prop.split("."); + var result = arr.slice(0); + forEach(prop, function (prop) { + var exec = prop.match(/(\w+)\(\)$/); + result = map(result, function (item) { + return exec ? item[exec[1]]() : item[prop]; + }); + }); + return result; + } - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, strict, output) { - output = output || []; - var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { - var value = input[i]; - if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { - // Flatten current level of array or arguments object. - if (shallow) { - var j = 0, len = value.length; - while (j < len) output[idx++] = value[j++]; - } else { - flatten(value, shallow, strict, output); - idx = output.length; + function invoke(arr, func, args) { + args = argsToArray(arguments, 2); + return map(arr, function (item) { + var exec = isString(func) ? item[func] : func; + return exec.apply(item, args); + }); } - } else if (!strict) { - output[idx++] = value; - } - } - return output; - }; - // Flatten out an array, either recursively (by default), or just one level. - _.flatten = function(array, shallow) { - return flatten(array, shallow, false); - }; - // Return a version of the array that does not contain the specified value(s). - _.without = restArguments(function(array, otherArrays) { - return _.difference(array, otherArrays); - }); + var array = { + toArray: toArray, + sum: sum, + avg: avg, + sort: sort, + min: min, + max: max, + difference: difference, + removeDuplicates: removeDuplicates, + unique: unique, + rotate: rotate, + permutations: permutations, + zip: zip, + transpose: transpose, + valuesAt: valuesAt, + union: union, + intersect: intersect, + powerSet: powerSet, + cartesian: cartesian, + compact: compact, + multiply: multiply, + flatten: flatten, + pluck: pluck, + invoke: invoke, + forEach: forEach, + map: map, + filter: filter, + reduce: reduce, + reduceRight: reduceRight, + some: some, + every: every, + indexOf: indexOf, + lastIndexOf: lastIndexOf + }; - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // The faster algorithm will not work with an iteratee if the iteratee - // is not a one-to-one function, so providing an iteratee will disable - // the faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iteratee, context) { - if (!_.isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!_.contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!_.contains(result, value)) { - result.push(value); - } + return extended.define(isArray, array).expose(array); } - return result; - }; - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = restArguments(function(arrays) { - return _.uniq(flatten(arrays, true, true)); - }); + if (true) { + if ( true && module.exports) { + module.exports = defineArray(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + } + } else {} - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (_.contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!_.contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; - }; +}).call(this); - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = restArguments(function(array, rest) { - rest = flatten(rest, true, true); - return _.filter(array, function(value){ - return !_.contains(rest, value); - }); - }); - // Complement of _.zip. Unzip accepts an array of arrays and groups - // each array's elements on shared indices. - _.unzip = function(array) { - var length = array && _.max(array, getLength).length || 0; - var result = Array(length); - for (var index = 0; index < length; index++) { - result[index] = _.pluck(array, index); - } - return result; - }; - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = restArguments(_.unzip); - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. Passing by pairs is the reverse of _.pairs. - _.object = function(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; - }; - // Generator function to create the findIndex and findLastIndex functions. - var createPredicateIndexFinder = function(dir) { - return function(array, predicate, context) { - predicate = cb(predicate, context); - var length = getLength(array); - var index = dir > 0 ? 0 : length - 1; - for (; index >= 0 && index < length; index += dir) { - if (predicate(array[index], index, array)) return index; - } - return -1; - }; - }; - // Returns the first index on an array-like that passes a predicate test. - _.findIndex = createPredicateIndexFinder(1); - _.findLastIndex = createPredicateIndexFinder(-1); - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iteratee, context) { - iteratee = cb(iteratee, context, 1); - var value = iteratee(obj); - var low = 0, high = getLength(array); - while (low < high) { - var mid = Math.floor((low + high) / 2); - if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; - } - return low; - }; +/***/ }), - // Generator function to create the indexOf and lastIndexOf functions. - var createIndexFinder = function(dir, predicateFind, sortedIndex) { - return function(array, item, idx) { - var i = 0, length = getLength(array); - if (typeof idx == 'number') { - if (dir > 0) { - i = idx >= 0 ? idx : Math.max(idx + length, i); - } else { - length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; - } - } else if (sortedIndex && idx && length) { - idx = sortedIndex(array, item); - return array[idx] === item ? idx : -1; - } - if (item !== item) { - idx = predicateFind(slice.call(array, i, length), _.isNaN); - return idx >= 0 ? idx + i : -1; - } - for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { - if (array[idx] === item) return idx; - } - return -1; - }; - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js ***! + \*********************************************************************************************/ +/***/ ((module) => { - // Return the position of the first occurrence of an item in an array, - // or -1 if the item is not included in the array. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); - _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); +var charenc = { + // UTF-8 encoding + utf8: { + // Convert a string to a byte array + stringToBytes: function(str) { + return charenc.bin.stringToBytes(unescape(encodeURIComponent(str))); + }, - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; + // Convert a byte array to a string + bytesToString: function(bytes) { + return decodeURIComponent(escape(charenc.bin.bytesToString(bytes))); } + }, - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); + // Binary encoding + bin: { + // Convert a string to a byte array + stringToBytes: function(str) { + for (var bytes = [], i = 0; i < str.length; i++) + bytes.push(str.charCodeAt(i) & 0xFF); + return bytes; + }, - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; + // Convert a byte array to a string + bytesToString: function(bytes) { + for (var str = [], i = 0; i < bytes.length; i++) + str.push(String.fromCharCode(bytes[i])); + return str.join(''); } + } +}; - return range; - }; +module.exports = charenc; - // Chunk a single array into multiple arrays, each containing `count` or fewer - // items. - _.chunk = function(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); - } - return result; - }; - // Function (ahem) Functions - // ------------------ +/***/ }), - // Determines whether to execute a function as a constructor - // or a normal function with the provided arguments. - var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { - if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); - var self = baseCreate(sourceFunc.prototype); - var result = sourceFunc.apply(self, args); - if (_.isObject(result)) return result; - return self; - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js ***! + \*****************************************************************************************/ +/***/ ((module) => { - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = restArguments(function(func, context, args) { - if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); - var bound = restArguments(function(callArgs) { - return executeBound(func, bound, context, this, args.concat(callArgs)); - }); - return bound; - }); +(function() { + var base64map + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. _ acts - // as a placeholder by default, allowing any combination of arguments to be - // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. - _.partial = restArguments(function(func, boundArgs) { - var placeholder = _.partial.placeholder; - var bound = function() { - var position = 0, length = boundArgs.length; - var args = Array(length); - for (var i = 0; i < length; i++) { - args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + crypt = { + // Bit-wise rotation left + rotl: function(n, b) { + return (n << b) | (n >>> (32 - b)); + }, + + // Bit-wise rotation right + rotr: function(n, b) { + return (n << (32 - b)) | (n >>> b); + }, + + // Swap big-endian to little-endian and vice versa + endian: function(n) { + // If number given, swap endian + if (n.constructor == Number) { + return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; } - while (position < arguments.length) args.push(arguments[position++]); - return executeBound(func, bound, this, this, args); - }; - return bound; - }); - _.partial.placeholder = _; + // Else, assume array and swap all items + for (var i = 0; i < n.length; i++) + n[i] = crypt.endian(n[i]); + return n; + }, - // Bind a number of an object's methods to that object. Remaining arguments - // are the method names to be bound. Useful for ensuring that all callbacks - // defined on an object belong to it. - _.bindAll = restArguments(function(obj, keys) { - keys = flatten(keys, false, false); - var index = keys.length; - if (index < 1) throw new Error('bindAll must be passed function names'); - while (index--) { - var key = keys[index]; - obj[key] = _.bind(obj[key], obj); - } - }); + // Generate an array of any length of random bytes + randomBytes: function(n) { + for (var bytes = []; n > 0; n--) + bytes.push(Math.floor(Math.random() * 256)); + return bytes; + }, - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memoize = function(key) { - var cache = memoize.cache; - var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has(cache, address)) cache[address] = func.apply(this, arguments); - return cache[address]; - }; - memoize.cache = {}; - return memoize; - }; + // Convert a byte array to big-endian 32-bit words + bytesToWords: function(bytes) { + for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) + words[b >>> 5] |= bytes[i] << (24 - b % 32); + return words; + }, - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = restArguments(function(func, wait, args) { - return setTimeout(function() { - return func.apply(null, args); - }, wait); - }); + // Convert big-endian 32-bit words to a byte array + wordsToBytes: function(words) { + for (var bytes = [], b = 0; b < words.length * 32; b += 8) + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); + return bytes; + }, - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = _.partial(_.delay, _, 1); + // Convert a byte array to a hex string + bytesToHex: function(bytes) { + for (var hex = [], i = 0; i < bytes.length; i++) { + hex.push((bytes[i] >>> 4).toString(16)); + hex.push((bytes[i] & 0xF).toString(16)); + } + return hex.join(''); + }, - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. Normally, the throttled function will run - // as much as it can, without ever going more than once per `wait` duration; - // but if you'd like to disable the execution on the leading edge, pass - // `{leading: false}`. To disable execution on the trailing edge, ditto. - _.throttle = function(func, wait, options) { - var timeout, context, args, result; - var previous = 0; - if (!options) options = {}; + // Convert a hex string to a byte array + hexToBytes: function(hex) { + for (var bytes = [], c = 0; c < hex.length; c += 2) + bytes.push(parseInt(hex.substr(c, 2), 16)); + return bytes; + }, - var later = function() { - previous = options.leading === false ? 0 : _.now(); - timeout = null; - result = func.apply(context, args); - if (!timeout) context = args = null; - }; + // Convert a byte array to a base-64 string + bytesToBase64: function(bytes) { + for (var base64 = [], i = 0; i < bytes.length; i += 3) { + var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; + for (var j = 0; j < 4; j++) + if (i * 8 + j * 6 <= bytes.length * 8) + base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); + else + base64.push('='); + } + return base64.join(''); + }, - var throttled = function() { - var now = _.now(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0 || remaining > wait) { - if (timeout) { - clearTimeout(timeout); - timeout = null; - } - previous = now; - result = func.apply(context, args); - if (!timeout) context = args = null; - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); + // Convert a base-64 string to a byte array + base64ToBytes: function(base64) { + // Remove non-base-64 characters + base64 = base64.replace(/[^A-Z0-9+\/]/ig, ''); + + for (var bytes = [], i = 0, imod4 = 0; i < base64.length; + imod4 = ++i % 4) { + if (imod4 == 0) continue; + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) + & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) + | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); } - return result; - }; + return bytes; + } + }; - throttled.cancel = function() { - clearTimeout(timeout); - previous = 0; - timeout = context = args = null; - }; + module.exports = crypt; +})(); - return throttled; - }; - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, result; +/***/ }), - var later = function(context, args) { - timeout = null; - if (args) result = func.apply(context, args); - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js ***! + \*************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - var debounced = restArguments(function(args) { - if (timeout) clearTimeout(timeout); - if (immediate) { - var callNow = !timeout; - timeout = setTimeout(later, wait); - if (callNow) result = func.apply(this, args); - } else { - timeout = _.delay(later, wait, this, args); - } +(function () { + "use strict"; - return result; - }); + function defineDate(extended, is, array) { - debounced.cancel = function() { - clearTimeout(timeout); - timeout = null; - }; + function _pad(string, length, ch, end) { + string = "" + string; //check for numbers + ch = ch || " "; + var strLen = string.length; + while (strLen < length) { + if (end) { + string += ch; + } else { + string = ch + string; + } + strLen++; + } + return string; + } - return debounced; - }; + function _truncate(string, length, end) { + var ret = string; + if (is.isString(ret)) { + if (string.length > length) { + if (end) { + var l = string.length; + ret = string.substring(l - length, l); + } else { + ret = string.substring(0, length); + } + } + } else { + ret = _truncate("" + ret, length); + } + return ret; + } - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return _.partial(wrapper, func); - }; + function every(arr, iterator, scope) { + if (!is.isArray(arr) || typeof iterator !== "function") { + throw new TypeError(); + } + var t = Object(arr); + var len = t.length >>> 0; + for (var i = 0; i < len; i++) { + if (i in t && !iterator.call(scope, t[i], i, t)) { + return false; + } + } + return true; + } - // Returns a negated version of the passed-in predicate. - _.negate = function(predicate) { - return function() { - return !predicate.apply(this, arguments); - }; - }; - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var args = arguments; - var start = args.length - 1; - return function() { - var i = start; - var result = args[start].apply(this, arguments); - while (i--) result = args[i].call(this, result); - return result; - }; - }; + var transforms = (function () { + var floor = Math.floor, round = Math.round; - // Returns a function that will only be executed on and after the Nth call. - _.after = function(times, func) { - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; + var addMap = { + day: function addDay(date, amount) { + return [amount, "Date", false]; + }, + weekday: function addWeekday(date, amount) { + // Divide the increment time span into weekspans plus leftover days + // e.g., 8 days is one 5-day weekspan / and two leftover days + // Can't have zero leftover days, so numbers divisible by 5 get + // a days value of 5, and the remaining days make up the number of weeks + var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0; + if (!mod) { + days = (amount > 0) ? 5 : -5; + weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5); + } else { + days = mod; + weeks = parseInt(amount / 5, 10); + } + if (strt === 6 && amount > 0) { + adj = 1; + } else if (strt === 0 && amount < 0) { + // Orig date is Sun / negative increment + // Jump back over Sat + adj = -1; + } + // Get weekday val for the new date + var trgt = strt + days; + // New date is on Sat or Sun + if (trgt === 0 || trgt === 6) { + adj = (amount > 0) ? 2 : -2; + } + // Increment by number of weeks plus leftover days plus + // weekend adjustments + return [(7 * weeks) + days + adj, "Date", false]; + }, + year: function addYear(date, amount) { + return [amount, "FullYear", true]; + }, + week: function addWeek(date, amount) { + return [amount * 7, "Date", false]; + }, + quarter: function addYear(date, amount) { + return [amount * 3, "Month", true]; + }, + month: function addYear(date, amount) { + return [amount, "Month", true]; + } + }; - // Returns a function that will only be executed up to (but not including) the Nth call. - _.before = function(times, func) { - var memo; - return function() { - if (--times > 0) { - memo = func.apply(this, arguments); - } - if (times <= 1) func = null; - return memo; - }; - }; + function addTransform(interval, date, amount) { + interval = interval.replace(/s$/, ""); + if (addMap.hasOwnProperty(interval)) { + return addMap[interval](date, amount); + } + return [amount, "UTC" + interval.charAt(0).toUpperCase() + interval.substring(1) + "s", false]; + } - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = _.partial(_.before, 2); - _.restArguments = restArguments; + var differenceMap = { + "quarter": function quarterDifference(date1, date2, utc) { + var yearDiff = date2.getFullYear() - date1.getFullYear(); + var m1 = date1[utc ? "getUTCMonth" : "getMonth"](); + var m2 = date2[utc ? "getUTCMonth" : "getMonth"](); + // Figure out which quarter the months are in + var q1 = floor(m1 / 3) + 1; + var q2 = floor(m2 / 3) + 1; + // Add quarters for any year difference between the dates + q2 += (yearDiff * 4); + return q2 - q1; + }, - // Object Functions - // ---------------- + "weekday": function weekdayDifference(date1, date2, utc) { + var days = differenceTransform("day", date1, date2, utc), weeks; + var mod = days % 7; + // Even number of weeks + if (mod === 0) { + days = differenceTransform("week", date1, date2, utc) * 5; + } else { + // Weeks plus spare change (< 7 days) + var adj = 0, aDay = date1[utc ? "getUTCDay" : "getDay"](), bDay = date2[utc ? "getUTCDay" : "getDay"](); + weeks = parseInt(days / 7, 10); + // Mark the date advanced by the number of + // round weeks (may be zero) + var dtMark = new Date(+date1); + dtMark.setDate(dtMark[utc ? "getUTCDate" : "getDate"]() + (weeks * 7)); + var dayMark = dtMark[utc ? "getUTCDay" : "getDay"](); - // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. - var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); - var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + // Spare change days -- 6 or less + if (days > 0) { + if (aDay === 6 || bDay === 6) { + adj = -1; + } else if (aDay === 0) { + adj = 0; + } else if (bDay === 0 || (dayMark + mod) > 5) { + adj = -2; + } + } else if (days < 0) { + if (aDay === 6) { + adj = 0; + } else if (aDay === 0 || bDay === 0) { + adj = 1; + } else if (bDay === 6 || (dayMark + mod) < 0) { + adj = 2; + } + } + days += adj; + days -= (weeks * 2); + } + return days; + }, + year: function (date1, date2) { + return date2.getFullYear() - date1.getFullYear(); + }, + month: function (date1, date2, utc) { + var m1 = date1[utc ? "getUTCMonth" : "getMonth"](); + var m2 = date2[utc ? "getUTCMonth" : "getMonth"](); + return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12); + }, + week: function (date1, date2, utc) { + return round(differenceTransform("day", date1, date2, utc) / 7); + }, + day: function (date1, date2) { + return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime()); + }, + hour: function (date1, date2) { + return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime()); + }, + minute: function (date1, date2) { + return 0.000016666666666666667 * (date2.getTime() - date1.getTime()); + }, + second: function (date1, date2) { + return 0.001 * (date2.getTime() - date1.getTime()); + }, + millisecond: function (date1, date2) { + return date2.getTime() - date1.getTime(); + } + }; - var collectNonEnumProps = function(obj, keys) { - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = _.isFunction(constructor) && constructor.prototype || ObjProto; - // Constructor is a special case. - var prop = 'constructor'; - if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + function differenceTransform(interval, date1, date2, utc) { + interval = interval.replace(/s$/, ""); + return round(differenceMap[interval](date1, date2, utc)); + } - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { - keys.push(prop); - } - } - }; - // Retrieve the names of an object's own properties. - // Delegates to **ECMAScript 5**'s native `Object.keys`. - _.keys = function(obj) { - if (!_.isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; - }; + return { + addTransform: addTransform, + differenceTransform: differenceTransform + }; + }()), + addTransform = transforms.addTransform, + differenceTransform = transforms.differenceTransform; - // Retrieve all the property names of an object. - _.allKeys = function(obj) { - if (!_.isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; - }; - // Retrieve the values of an object's properties. - _.values = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[keys[i]]; - } - return values; - }; + /** + * @ignore + * Based on DOJO Date Implementation + * + * Dojo is available under *either* the terms of the modified BSD license *or* the + * Academic Free License version 2.1. As a recipient of Dojo, you may choose which + * license to receive this code under (except as noted in per-module LICENSE + * files). Some modules may not be the copyright of the Dojo Foundation. These + * modules contain explicit declarations of copyright in both the LICENSE files in + * the directories in which they reside and in the code itself. No external + * contributions are allowed under licenses which are fundamentally incompatible + * with the AFL or BSD licenses that Dojo is distributed under. + * + */ - // Returns the results of applying the iteratee to each element of the object. - // In contrast to _.map it returns an object. - _.mapObject = function(obj, iteratee, context) { - iteratee = cb(iteratee, context); - var keys = _.keys(obj), - length = keys.length, - results = {}; - for (var index = 0; index < length; index++) { - var currentKey = keys[index]; - results[currentKey] = iteratee(obj[currentKey], currentKey, obj); - } - return results; - }; + var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs; + var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + var monthAbbr = ["Jan.", "Feb.", "Mar.", "Apr.", "May.", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]; + var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; + var dayAbbr = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + var eraNames = ["Before Christ", "Anno Domini"]; + var eraAbbr = ["BC", "AD"]; - // Convert an object into a list of `[key, value]` pairs. - // The opposite of _.object. - _.pairs = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [keys[i], obj[keys[i]]]; - } - return pairs; - }; - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - var keys = _.keys(obj); - for (var i = 0, length = keys.length; i < length; i++) { - result[obj[keys[i]]] = keys[i]; - } - return result; - }; + function getDayOfYear(/*Date*/dateObject, utc) { + // summary: gets the day of the year as represented by dateObject + return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number + } - // Return a sorted list of the function names available on the object. - // Aliased as `methods`. - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; + function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) { + firstDayOfWeek = firstDayOfWeek || 0; + var fullYear = dateObject[utc ? "getUTCFullYear" : "getFullYear"](); + var firstDayOfYear = new Date(fullYear, 0, 1).getDay(), + adj = (firstDayOfYear - firstDayOfWeek + 7) % 7, + week = floor((getDayOfYear(dateObject) + adj - 1) / 7); - // An internal function for creating assigner functions. - var createAssigner = function(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; + // if year starts on the specified day, start counting weeks at 1 + if (firstDayOfYear === firstDayOfWeek) { + week++; + } + + return week; // Number } - } - return obj; - }; - }; - // Extend a given object with all the properties in passed-in object(s). - _.extend = createAssigner(_.allKeys); + function getTimezoneName(/*Date*/dateObject) { + var str = dateObject.toString(); + var tz = ''; + var pos = str.indexOf('('); + if (pos > -1) { + tz = str.substring(++pos, str.indexOf(')')); + } + return tz; // String + } - // Assigns a given object with all the own properties in the passed-in object(s). - // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) - _.extendOwn = _.assign = createAssigner(_.keys); - // Returns the first key on an object that passes a predicate test. - _.findKey = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = _.keys(obj), key; - for (var i = 0, length = keys.length; i < length; i++) { - key = keys[i]; - if (predicate(obj[key], key, obj)) return key; - } - }; + function buildDateEXP(pattern, tokens) { + return pattern.replace(/([a-z])\1*/ig,function (match) { + // Build a simple regexp. Avoid captures, which would ruin the tokens list + var s, + c = match.charAt(0), + l = match.length, + p2 = '0?', + p3 = '0{0,2}'; + if (c === 'y') { + s = '\\d{2,4}'; + } else if (c === "M") { + s = (l > 2) ? '\\S+?' : '1[0-2]|' + p2 + '[1-9]'; + } else if (c === "D") { + s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]'; + } else if (c === "d") { + s = '3[01]|[12]\\d|' + p2 + '[1-9]'; + } else if (c === "w") { + s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]'; + } else if (c === "E") { + s = '\\S+'; + } else if (c === "h") { + s = '1[0-2]|' + p2 + '[1-9]'; + } else if (c === "K") { + s = '1[01]|' + p2 + '\\d'; + } else if (c === "H") { + s = '1\\d|2[0-3]|' + p2 + '\\d'; + } else if (c === "k") { + s = '1\\d|2[0-4]|' + p2 + '[1-9]'; + } else if (c === "m" || c === "s") { + s = '[0-5]\\d'; + } else if (c === "S") { + s = '\\d{' + l + '}'; + } else if (c === "a") { + var am = 'AM', pm = 'PM'; + s = am + '|' + pm; + if (am !== am.toLowerCase()) { + s += '|' + am.toLowerCase(); + } + if (pm !== pm.toLowerCase()) { + s += '|' + pm.toLowerCase(); + } + s = s.replace(/\./g, "\\."); + } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') { + s = ".*"; + } else { + s = c === " " ? "\\s*" : c + "*"; + } + if (tokens) { + tokens.push(match); + } - // Internal pick helper function to determine if `obj` has key `key`. - var keyInObj = function(value, key, obj) { - return key in obj; - }; + return "(" + s + ")"; // add capture + }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace. Need explicit handling of \xa0 for IE. + } - // Return a copy of the object only containing the whitelisted properties. - _.pick = restArguments(function(obj, keys) { - var result = {}, iteratee = keys[0]; - if (obj == null) return result; - if (_.isFunction(iteratee)) { - if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); - keys = _.allKeys(obj); - } else { - iteratee = keyInObj; - keys = flatten(keys, false, false); - obj = Object(obj); - } - for (var i = 0, length = keys.length; i < length; i++) { - var key = keys[i]; - var value = obj[key]; - if (iteratee(value, key, obj)) result[key] = value; - } - return result; - }); - // Return a copy of the object without the blacklisted properties. - _.omit = restArguments(function(obj, keys) { - var iteratee = keys[0], context; - if (_.isFunction(iteratee)) { - iteratee = _.negate(iteratee); - if (keys.length > 1) context = keys[1]; - } else { - keys = _.map(flatten(keys, false, false), String); - iteratee = function(value, key) { - return !_.contains(keys, key); - }; - } - return _.pick(obj, iteratee, context); - }); + /** + * @namespace Utilities for Dates + */ + var date = { - // Fill in a given object with default properties. - _.defaults = createAssigner(_.allKeys, true); + /**@lends date*/ - // Creates an object that inherits from the given prototype object. - // If additional properties are provided then they will be added to the - // created object. - _.create = function(prototype, props) { - var result = baseCreate(prototype); - if (props) _.extendOwn(result, props); - return result; - }; + /** + * Returns the number of days in the month of a date + * + * @example + * + * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28 + * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29 + * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31 + * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30 + * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31 + * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30 + * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31 + * @param {Date} dateObject the date containing the month + * @return {Number} the number of days in the month + */ + getDaysInMonth: function (/*Date*/dateObject) { + // summary: + // Returns the number of days in the month used by dateObject + var month = dateObject.getMonth(); + var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + if (month === 1 && date.isLeapYear(dateObject)) { + return 29; + } // Number + return days[month]; // Number + }, - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; + /** + * Determines if a date is a leap year + * + * @example + * + * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true + * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true + * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true + * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false + * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false + * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false + * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false + * + * @param {Date} dateObject + * @returns {Boolean} true if it is a leap year false otherwise + */ + isLeapYear: function (/*Date*/dateObject, utc) { + var year = dateObject[utc ? "getUTCFullYear" : "getFullYear"](); + return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0); - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; + }, - // Returns whether an object has a given set of `key:value` pairs. - _.isMatch = function(object, attrs) { - var keys = _.keys(attrs), length = keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; - }; + /** + * Determines if a date is on a weekend + * + * @example + * + * var thursday = new Date(2006, 8, 21); + * var saturday = new Date(2006, 8, 23); + * var sunday = new Date(2006, 8, 24); + * var monday = new Date(2006, 8, 25); + * dateExtender.isWeekend(thursday)); //false + * dateExtender.isWeekend(saturday); //true + * dateExtender.isWeekend(sunday); //true + * dateExtender.isWeekend(monday)); //false + * + * @param {Date} dateObject the date to test + * + * @returns {Boolean} true if the date is a weekend + */ + isWeekend: function (/*Date?*/dateObject, utc) { + // summary: + // Determines if the date falls on a weekend, according to local custom. + var day = (dateObject || new Date())[utc ? "getUTCDay" : "getDay"](); + return day === 0 || day === 6; + }, + /** + * Get the timezone of a date + * + * @example + * //just setting the strLocal to simulate the toString() of a date + * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)'; + * //just setting the strLocal to simulate the locale + * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT'; + * dateExtender.getTimezoneName(dt); //'CDT' + * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)'; + * dt.strLocale = 'Sun Sep 17 22:57:18 2006'; + * dateExtender.getTimezoneName(dt); //'CDT' + * @param dateObject the date to get the timezone from + * + * @returns {String} the timezone of the date + */ + getTimezoneName: getTimezoneName, - // Internal recursive comparison function for `isEqual`. - var eq, deepEq; - eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); - }; + /** + * Compares two dates + * + * @example + * + * var d1 = new Date(); + * d1.setHours(0); + * dateExtender.compare(d1, d1); // 0 + * + * var d1 = new Date(); + * d1.setHours(0); + * var d2 = new Date(); + * d2.setFullYear(2005); + * d2.setHours(12); + * dateExtender.compare(d1, d2, "date"); // 1 + * dateExtender.compare(d1, d2, "datetime"); // 1 + * + * var d1 = new Date(); + * d1.setHours(0); + * var d2 = new Date(); + * d2.setFullYear(2005); + * d2.setHours(12); + * dateExtender.compare(d2, d1, "date"); // -1 + * dateExtender.compare(d1, d2, "time"); //-1 + * + * @param {Date|String} date1 the date to comapare + * @param {Date|String} [date2=new Date()] the date to compare date1 againse + * @param {"date"|"time"|"datetime"} portion compares the portion specified + * + * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2 + */ + compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) { + date1 = new Date(+date1); + date2 = new Date(+(date2 || new Date())); + + if (portion === "date") { + // Ignore times and compare dates. + date1.setHours(0, 0, 0, 0); + date2.setHours(0, 0, 0, 0); + } else if (portion === "time") { + // Ignore dates and compare times. + date1.setFullYear(0, 0, 0); + date2.setFullYear(0, 0, 0); + } + return date1 > date2 ? 1 : date1 < date2 ? -1 : 0; + }, + + + /** + * Adds a specified interval and amount to a date + * + * @example + * var dtA = new Date(2005, 11, 27); + * dateExtender.add(dtA, "year", 1); //new Date(2006, 11, 27); + * dateExtender.add(dtA, "years", 1); //new Date(2006, 11, 27); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "quarter", 1); //new Date(2000, 3, 1); + * dateExtender.add(dtA, "quarters", 1); //new Date(2000, 3, 1); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "month", 1); //new Date(2000, 1, 1); + * dateExtender.add(dtA, "months", 1); //new Date(2000, 1, 1); + * + * dtA = new Date(2000, 0, 31); + * dateExtender.add(dtA, "month", 1); //new Date(2000, 1, 29); + * dateExtender.add(dtA, "months", 1); //new Date(2000, 1, 29); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "week", 1); //new Date(2000, 0, 8); + * dateExtender.add(dtA, "weeks", 1); //new Date(2000, 0, 8); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "day", 1); //new Date(2000, 0, 2); + * + * dtA = new Date(2000, 0, 1); + * dateExtender.add(dtA, "weekday", 1); //new Date(2000, 0, 3); + * + * dtA = new Date(2000, 0, 1, 11); + * dateExtender.add(dtA, "hour", 1); //new Date(2000, 0, 1, 12); + * + * dtA = new Date(2000, 11, 31, 23, 59); + * dateExtender.add(dtA, "minute", 1); //new Date(2001, 0, 1, 0, 0); + * + * dtA = new Date(2000, 11, 31, 23, 59, 59); + * dateExtender.add(dtA, "second", 1); //new Date(2001, 0, 1, 0, 0, 0); + * + * dtA = new Date(2000, 11, 31, 23, 59, 59, 999); + * dateExtender.add(dtA, "millisecond", 1); //new Date(2001, 0, 1, 0, 0, 0, 0); + * + * @param {Date} date + * @param {String} interval the interval to add + *
    + *
  • day | days
  • + *
  • weekday | weekdays
  • + *
  • year | years
  • + *
  • week | weeks
  • + *
  • quarter | quarters
  • + *
  • months | months
  • + *
  • hour | hours
  • + *
  • minute | minutes
  • + *
  • second | seconds
  • + *
  • millisecond | milliseconds
  • + *
+ * @param {Number} [amount=0] the amount to add + */ + add: function (/*Date*/date, /*String*/interval, /*int*/amount) { + var res = addTransform(interval, date, amount || 0); + amount = res[0]; + var property = res[1]; + var sum = new Date(+date); + var fixOvershoot = res[2]; + if (property) { + sum["set" + property](sum["get" + property]() + amount); + } + + if (fixOvershoot && (sum.getDate() < date.getDate())) { + sum.setDate(0); + } + + return sum; // Date + }, + + /** + * Finds the difference between two dates based on the specified interval + * + * @example + * + * var dtA, dtB; + * + * dtA = new Date(2005, 11, 27); + * dtB = new Date(2006, 11, 27); + * dateExtender.difference(dtA, dtB, "year"); //1 + * + * dtA = new Date(2000, 1, 29); + * dtB = new Date(2001, 2, 1); + * dateExtender.difference(dtA, dtB, "quarter"); //4 + * dateExtender.difference(dtA, dtB, "month"); //13 + * + * dtA = new Date(2000, 1, 1); + * dtB = new Date(2000, 1, 8); + * dateExtender.difference(dtA, dtB, "week"); //1 + * + * dtA = new Date(2000, 1, 29); + * dtB = new Date(2000, 2, 1); + * dateExtender.difference(dtA, dtB, "day"); //1 + * + * dtA = new Date(2006, 7, 3); + * dtB = new Date(2006, 7, 11); + * dateExtender.difference(dtA, dtB, "weekday"); //6 + * + * dtA = new Date(2000, 11, 31, 23); + * dtB = new Date(2001, 0, 1, 0); + * dateExtender.difference(dtA, dtB, "hour"); //1 + * + * dtA = new Date(2000, 11, 31, 23, 59); + * dtB = new Date(2001, 0, 1, 0, 0); + * dateExtender.difference(dtA, dtB, "minute"); //1 + * + * dtA = new Date(2000, 11, 31, 23, 59, 59); + * dtB = new Date(2001, 0, 1, 0, 0, 0); + * dateExtender.difference(dtA, dtB, "second"); //1 + * + * dtA = new Date(2000, 11, 31, 23, 59, 59, 999); + * dtB = new Date(2001, 0, 1, 0, 0, 0, 0); + * dateExtender.difference(dtA, dtB, "millisecond"); //1 + * + * + * @param {Date} date1 + * @param {Date} [date2 = new Date()] + * @param {String} [interval = "day"] the intercal to find the difference of. + *
    + *
  • day | days
  • + *
  • weekday | weekdays
  • + *
  • year | years
  • + *
  • week | weeks
  • + *
  • quarter | quarters
  • + *
  • months | months
  • + *
  • hour | hours
  • + *
  • minute | minutes
  • + *
  • second | seconds
  • + *
  • millisecond | milliseconds
  • + *
+ */ + difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) { + date2 = date2 || new Date(); + interval = interval || "day"; + return differenceTransform(interval, date1, date2, utc); + }, + + /** + * Formats a date to the specidifed format string + * + * @example + * + * var date = new Date(2006, 7, 11, 0, 55, 12, 345); + * dateExtender.format(date, "EEEE, MMMM dd, yyyy"); //"Friday, August 11, 2006" + * dateExtender.format(date, "M/dd/yy"); //"8/11/06" + * dateExtender.format(date, "E"); //"6" + * dateExtender.format(date, "h:m a"); //"12:55 AM" + * dateExtender.format(date, 'h:m:s'); //"12:55:12" + * dateExtender.format(date, 'h:m:s.SS'); //"12:55:12.35" + * dateExtender.format(date, 'k:m:s.SS'); //"24:55:12.35" + * dateExtender.format(date, 'H:m:s.SS'); //"0:55:12.35" + * dateExtender.format(date, "ddMMyyyy"); //"11082006" + * + * @param date the date to format + * @param {String} format the format of the date composed of the following options + *
    + *
  • G Era designator Text AD
  • + *
  • y Year Year 1996; 96
  • + *
  • M Month in year Month July; Jul; 07
  • + *
  • w Week in year Number 27
  • + *
  • W Week in month Number 2
  • + *
  • D Day in year Number 189
  • + *
  • d Day in month Number 10
  • + *
  • E Day in week Text Tuesday; Tue
  • + *
  • a Am/pm marker Text PM
  • + *
  • H Hour in day (0-23) Number 0
  • + *
  • k Hour in day (1-24) Number 24
  • + *
  • K Hour in am/pm (0-11) Number 0
  • + *
  • h Hour in am/pm (1-12) Number 12
  • + *
  • m Minute in hour Number 30
  • + *
  • s Second in minute Number 55
  • + *
  • S Millisecond Number 978
  • + *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • + *
  • Z Time zone RFC 822 time zone -0800
  • + *
+ */ + format: function (date, format, utc) { + utc = utc || false; + var fullYear, month, day, d, hour, minute, second, millisecond; + if (utc) { + fullYear = date.getUTCFullYear(); + month = date.getUTCMonth(); + day = date.getUTCDay(); + d = date.getUTCDate(); + hour = date.getUTCHours(); + minute = date.getUTCMinutes(); + second = date.getUTCSeconds(); + millisecond = date.getUTCMilliseconds(); + } else { + fullYear = date.getFullYear(); + month = date.getMonth(); + d = date.getDate(); + day = date.getDay(); + hour = date.getHours(); + minute = date.getMinutes(); + second = date.getSeconds(); + millisecond = date.getMilliseconds(); + } + return format.replace(/([A-Za-z])\1*/g, function (match) { + var s, pad, + c = match.charAt(0), + l = match.length; + if (c === 'd') { + s = "" + d; + pad = true; + } else if (c === "H" && !s) { + s = "" + hour; + pad = true; + } else if (c === 'm' && !s) { + s = "" + minute; + pad = true; + } else if (c === 's') { + if (!s) { + s = "" + second; + } + pad = true; + } else if (c === "G") { + s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1]; + } else if (c === "y") { + s = fullYear; + if (l > 1) { + if (l === 2) { + s = _truncate("" + s, 2, true); + } else { + pad = true; + } + } + } else if (c.toUpperCase() === "Q") { + s = ceil((month + 1) / 3); + pad = true; + } else if (c === "M") { + if (l < 3) { + s = month + 1; + pad = true; + } else { + s = (l === 3 ? monthAbbr : monthNames)[month]; + } + } else if (c === "w") { + s = getWeekOfYear(date, 0, utc); + pad = true; + } else if (c === "D") { + s = getDayOfYear(date, utc); + pad = true; + } else if (c === "E") { + if (l < 3) { + s = day + 1; + pad = true; + } else { + s = (l === -3 ? dayAbbr : dayNames)[day]; + } + } else if (c === 'a') { + s = (hour < 12) ? 'AM' : 'PM'; + } else if (c === "h") { + s = (hour % 12) || 12; + pad = true; + } else if (c === "K") { + s = (hour % 12); + pad = true; + } else if (c === "k") { + s = hour || 24; + pad = true; + } else if (c === "S") { + s = round(millisecond * pow(10, l - 3)); + pad = true; + } else if (c === "z" || c === "v" || c === "Z") { + s = getTimezoneName(date); + if ((c === "z" || c === "v") && !s) { + l = 4; + } + if (!s || c === "Z") { + var offset = date.getTimezoneOffset(); + var tz = [ + (offset >= 0 ? "-" : "+"), + _pad(floor(abs(offset) / 60), 2, "0"), + _pad(abs(offset) % 60, 2, "0") + ]; + if (l === 4) { + tz.splice(0, 0, "GMT"); + tz.splice(3, 0, ":"); + } + s = tz.join(""); + } + } else { + s = match; + } + if (pad) { + s = _pad(s, l, '0'); + } + return s; + }); + } - // Internal recursive comparison function for `isEqual`. - deepEq = function(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - switch (className) { - // Strings, numbers, regular expressions, dates, and booleans are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - } + }; - var areArrays = className === '[object Array]'; - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; + var numberDate = {}; - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && - _.isFunction(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + function addInterval(interval) { + numberDate[interval + "sFromNow"] = function (val) { + return date.add(new Date(), interval, val); + }; + numberDate[interval + "sAgo"] = function (val) { + return date.add(new Date(), interval, -val); + }; + } - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } + var intervals = ["year", "month", "day", "hour", "minute", "second"]; + for (var i = 0, l = intervals.length; i < l; i++) { + addInterval(intervals[i]); + } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); + var stringDate = { - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var keys = _.keys(a), key; - length = keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (_.keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = keys[length]; - if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } + parseDate: function (dateStr, format) { + if (!format) { + throw new Error('format required when calling dateExtender.parse'); + } + var tokens = [], regexp = buildDateEXP(format, tokens), + re = new RegExp("^" + regexp + "$", "i"), + match = re.exec(dateStr); + if (!match) { + return null; + } // null + var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end + amPm = "", + valid = every(match, function (v, i) { + if (i) { + var token = tokens[i - 1]; + var l = token.length, type = token.charAt(0); + if (type === 'y') { + if (v < 100) { + v = parseInt(v, 10); + //choose century to apply, according to a sliding window + //of 80 years before and 20 years after present year + var year = '' + new Date().getFullYear(), + century = year.substring(0, 2) * 100, + cutoff = min(year.substring(2, 4) + 20, 99); + result[0] = (v < cutoff) ? century + v : century - 100 + v; + } else { + result[0] = v; + } + } else if (type === "M") { + if (l > 2) { + var months = monthNames, j, k; + if (l === 3) { + months = monthAbbr; + } + //Tolerate abbreviating period in month part + //Case-insensitive comparison + v = v.replace(".", "").toLowerCase(); + var contains = false; + for (j = 0, k = months.length; j < k && !contains; j++) { + var s = months[j].replace(".", "").toLocaleLowerCase(); + if (s === v) { + v = j; + contains = true; + } + } + if (!contains) { + return false; + } + } else { + v--; + } + result[1] = v; + } else if (type === "E" || type === "e") { + var days = dayNames; + if (l === 3) { + days = dayAbbr; + } + //Case-insensitive comparison + v = v.toLowerCase(); + days = array.map(days, function (d) { + return d.toLowerCase(); + }); + var d = array.indexOf(days, v); + if (d === -1) { + v = parseInt(v, 10); + if (isNaN(v) || v > days.length) { + return false; + } + } else { + v = d; + } + } else if (type === 'D' || type === "d") { + if (type === "D") { + result[1] = 0; + } + result[2] = v; + } else if (type === "a") { + var am = "am"; + var pm = "pm"; + var period = /\./g; + v = v.replace(period, '').toLowerCase(); + // we might not have seen the hours field yet, so store the state and apply hour change later + amPm = (v === pm) ? 'p' : (v === am) ? 'a' : ''; + } else if (type === "k" || type === "h" || type === "H" || type === "K") { + if (type === "k" && (+v) === 24) { + v = 0; + } + result[3] = v; + } else if (type === "m") { + result[4] = v; + } else if (type === "s") { + result[5] = v; + } else if (type === "S") { + result[6] = v; + } + } + return true; + }); + if (valid) { + var hours = +result[3]; + //account for am/pm + if (amPm === 'p' && hours < 12) { + result[3] = hours + 12; //e.g., 3pm -> 15 + } else if (amPm === 'a' && hours === 12) { + result[3] = 0; //12am -> 0 + } + var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date + var dateToken = (array.indexOf(tokens, 'd') !== -1), + monthToken = (array.indexOf(tokens, 'M') !== -1), + month = result[1], + day = result[2], + dateMonth = dateObject.getMonth(), + dateDay = dateObject.getDate(); + if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) { + return null; + } + return dateObject; // Date + } else { + return null; + } + } + }; + + + var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate); + for (i in date) { + if (date.hasOwnProperty(i)) { + ret[i] = date[i]; + } + } + + for (i in stringDate) { + if (stringDate.hasOwnProperty(i)) { + ret[i] = stringDate[i]; + } + } + for (i in numberDate) { + if (numberDate.hasOwnProperty(i)) { + ret[i] = numberDate[i]; + } + } + return ret; } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; - }; - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b); - }; + if (true) { + if ( true && module.exports) { + module.exports = defineDate(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")); - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; - return _.keys(obj).length === 0; - }; + } + } else {} - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; +}).call(this); - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) === '[object Array]'; - }; - // Is a given variable an object? - _.isObject = function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - }; - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet. - _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) === '[object ' + name + ']'; - }; - }); - // Define a fallback version of the method in browsers (ahem, IE < 9), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return has(obj, 'callee'); - }; - } - // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, - // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). - var nodelist = root.document && root.document.childNodes; - if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - _.isFunction = function(obj) { - return typeof obj == 'function' || false; - }; - } - // Is a given object a finite number? - _.isFinite = function(obj) { - return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj)); - }; - // Is the given value `NaN`? - _.isNaN = function(obj) { - return _.isNumber(obj) && isNaN(obj); - }; - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; - }; +/***/ }), - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js ***! + \************************************************************************************************/ +/***/ ((module) => { - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; +(function () { - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, path) { - if (!_.isArray(path)) { - return has(obj, path); - } - var length = path.length; - for (var i = 0; i < length; i++) { - var key = path[i]; - if (obj == null || !hasOwnProperty.call(obj, key)) { - return false; - } - obj = obj[key]; - } - return !!length; - }; + /** + * @projectName declare + * @github http://github.com/doug-martin/declare.js + * @header + * + * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js. + * + * ##Installation + * + * `npm install declare.js` + * + * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js)) + * + * ###Requirejs + * + * To use with requirejs place the `declare` source in the root scripts directory + * + * ``` + * + * define(["declare"], function(declare){ + * return declare({ + * instance : { + * hello : function(){ + * return "world"; + * } + * } + * }); + * }); + * + * ``` + * + * + * ##Usage + * + * declare.js provides + * + * Class methods + * + * * `as(module | object, name)` : exports the object to module or the object with the name + * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class. + * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`; + * + * Instance methods + * + * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super + * * `_getSuper()`: returns a this methods direct super. + * * `_static` : use to reference class properties and methods. + * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object. + * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object. + * + * + * ###Declaring a new Class + * + * Creating a new class with declare is easy! + * + * ``` + * + * var Mammal = declare({ + * //define your instance methods and properties + * instance : { + * + * //will be called whenever a new instance is created + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); + * this._type = options.type || "mammal"; + * }, + * + * speak : function() { + * return "A mammal of type " + this._type + " sounds like"; + * }, + * + * //Define your getters + * getters : { + * + * //can be accessed by using the get method. (mammal.get("type")) + * type : function() { + * return this._type; + * } + * }, + * + * //Define your setters + * setters : { + * + * //can be accessed by using the set method. (mammal.set("type", "mammalType")) + * type : function(t) { + * this._type = t; + * } + * } + * }, + * + * //Define your static methods + * static : { + * + * //Mammal.soundOff(); //"Im a mammal!!" + * soundOff : function() { + * return "Im a mammal!!"; + * } + * } + * }); + * + * + * ``` + * + * You can use Mammal just like you would any other class. + * + * ``` + * Mammal.soundOff("Im a mammal!!"); + * + * var myMammal = new Mammal({type : "mymammal"}); + * myMammal.speak(); // "A mammal of type mymammal sounds like" + * myMammal.get("type"); //"mymammal" + * myMammal.set("type", "mammal"); + * myMammal.get("type"); //"mammal" + * + * + * ``` + * + * ###Extending a class + * + * If you want to just extend a single class use the .extend method. + * + * ``` + * + * var Wolf = Mammal.extend({ + * + * //define your instance method + * instance: { + * + * //You can override super constructors just be sure to call `_super` + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); //call our super constructor. + * this._sound = "growl"; + * this._color = options.color || "grey"; + * }, + * + * //override Mammals `speak` method by appending our own data to it. + * speak : function() { + * return this._super(arguments) + " a " + this._sound; + * }, + * + * //add new getters for sound and color + * getters : { + * + * //new Wolf().get("type") + * //notice color is read only as we did not define a setter + * color : function() { + * return this._color; + * }, + * + * //new Wolf().get("sound") + * sound : function() { + * return this._sound; + * } + * }, + * + * setters : { + * + * //new Wolf().set("sound", "howl") + * sound : function(s) { + * this._sound = s; + * } + * } + * + * }, + * + * static : { + * + * //You can override super static methods also! And you can still use _super + * soundOff : function() { + * //You can even call super in your statics!!! + * //should return "I'm a mammal!! that growls" + * return this._super(arguments) + " that growls"; + * } + * } + * }); + * + * Wolf.soundOff(); //Im a mammal!! that growls + * + * var myWolf = new Wolf(); + * myWolf instanceof Mammal //true + * myWolf instanceof Wolf //true + * + * ``` + * + * You can also extend a class by using the declare method and just pass in the super class. + * + * ``` + * //Typical hierarchical inheritance + * // Mammal->Wolf->Dog + * var Dog = declare(Wolf, { + * instance: { + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); + * //override Wolfs initialization of sound to woof. + * this._sound = "woof"; + * + * }, + * + * speak : function() { + * //Should return "A mammal of type mammal sounds like a growl thats domesticated" + * return this._super(arguments) + " thats domesticated"; + * } + * }, + * + * static : { + * soundOff : function() { + * //should return "I'm a mammal!! that growls but now barks" + * return this._super(arguments) + " but now barks"; + * } + * } + * }); + * + * Dog.soundOff(); //Im a mammal!! that growls but now barks + * + * var myDog = new Dog(); + * myDog instanceof Mammal //true + * myDog instanceof Wolf //true + * myDog instanceof Dog //true + * + * + * //Notice you still get the extend method. + * + * // Mammal->Wolf->Dog->Breed + * var Breed = Dog.extend({ + * instance: { + * + * //initialize outside of constructor + * _pitch : "high", + * + * constructor: function(options) { + * options = options || {}; + * this._super(arguments); + * this.breed = options.breed || "lab"; + * }, + * + * speak : function() { + * //Should return "A mammal of type mammal sounds like a + * //growl thats domesticated with a high pitch!" + * return this._super(arguments) + " with a " + this._pitch + " pitch!"; + * }, + * + * getters : { + * pitch : function() { + * return this._pitch; + * } + * } + * }, + * + * static : { + * soundOff : function() { + * //should return "I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!" + * return this._super(arguments).toUpperCase() + "!"; + * } + * } + * }); + * + * + * Breed.soundOff()//"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!" + * + * var myBreed = new Breed({color : "gold", type : "lab"}), + * myBreed instanceof Dog //true + * myBreed instanceof Wolf //true + * myBreed instanceof Mammal //true + * myBreed.speak() //"A mammal of type lab sounds like a woof thats domesticated with a high pitch!" + * myBreed.get("type") //"lab" + * myBreed.get("color") //"gold" + * myBreed.get("sound")" //"woof" + * ``` + * + * ###Multiple Inheritance / Mixins + * + * declare also allows the use of multiple super classes. + * This is useful if you have generic classes that provide functionality but shouldnt be used on their own. + * + * Lets declare a mixin that allows us to watch for property changes. + * + * ``` + * //Notice that we set up the functions outside of declare because we can reuse them + * + * function _set(prop, val) { + * //get the old value + * var oldVal = this.get(prop); + * //call super to actually set the property + * var ret = this._super(arguments); + * //call our handlers + * this.__callHandlers(prop, oldVal, val); + * return ret; + * } + * + * function _callHandlers(prop, oldVal, newVal) { + * //get our handlers for the property + * var handlers = this.__watchers[prop], l; + * //if the handlers exist and their length does not equal 0 then we call loop through them + * if (handlers && (l = handlers.length) !== 0) { + * for (var i = 0; i < l; i++) { + * //call the handler + * handlers[i].call(null, prop, oldVal, newVal); + * } + * } + * } + * + * + * //the watch function + * function _watch(prop, handler) { + * if ("function" !== typeof handler) { + * //if its not a function then its an invalid handler + * throw new TypeError("Invalid handler."); + * } + * if (!this.__watchers[prop]) { + * //create the watchers if it doesnt exist + * this.__watchers[prop] = [handler]; + * } else { + * //otherwise just add it to the handlers array + * this.__watchers[prop].push(handler); + * } + * } + * + * function _unwatch(prop, handler) { + * if ("function" !== typeof handler) { + * throw new TypeError("Invalid handler."); + * } + * var handlers = this.__watchers[prop], index; + * if (handlers && (index = handlers.indexOf(handler)) !== -1) { + * //remove the handler if it is found + * handlers.splice(index, 1); + * } + * } + * + * declare({ + * instance:{ + * constructor:function () { + * this._super(arguments); + * //set up our watchers + * this.__watchers = {}; + * }, + * + * //override the default set function so we can watch values + * "set":_set, + * //set up our callhandlers function + * __callHandlers:_callHandlers, + * //add the watch function + * watch:_watch, + * //add the unwatch function + * unwatch:_unwatch + * }, + * + * "static":{ + * + * init:function () { + * this._super(arguments); + * this.__watchers = {}; + * }, + * //override the default set function so we can watch values + * "set":_set, + * //set our callHandlers function + * __callHandlers:_callHandlers, + * //add the watch + * watch:_watch, + * //add the unwatch function + * unwatch:_unwatch + * } + * }) + * + * ``` + * + * Now lets use the mixin + * + * ``` + * var WatchDog = declare([Dog, WatchMixin]); + * + * var watchDog = new WatchDog(); + * //create our handler + * function watch(id, oldVal, newVal) { + * console.log("watchdog's %s was %s, now %s", id, oldVal, newVal); + * } + * + * //watch for property changes + * watchDog.watch("type", watch); + * watchDog.watch("color", watch); + * watchDog.watch("sound", watch); + * + * //now set the properties each handler will be called + * watchDog.set("type", "newDog"); + * watchDog.set("color", "newColor"); + * watchDog.set("sound", "newSound"); + * + * + * //unwatch the property changes + * watchDog.unwatch("type", watch); + * watchDog.unwatch("color", watch); + * watchDog.unwatch("sound", watch); + * + * //no handlers will be called this time + * watchDog.set("type", "newDog"); + * watchDog.set("color", "newColor"); + * watchDog.set("sound", "newSound"); + * + * + * ``` + * + * ###Accessing static methods and properties witin an instance. + * + * To access static properties on an instance use the `_static` property which is a reference to your constructor. + * + * For example if your in your constructor and you want to have configurable default values. + * + * ``` + * consturctor : function constructor(opts){ + * this.opts = opts || {}; + * this._type = opts.type || this._static.DEFAULT_TYPE; + * } + * ``` + * + * + * + * ###Creating a new instance of within an instance. + * + * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class. + * + * Lets add a reproduce method `Mammal` + * + * ``` + * reproduce : function(options){ + * return new this._static(options); + * } + * ``` + * + * Now in each subclass you can call reproduce and get the proper type. + * + * ``` + * var myDog = new Dog(); + * var myDogsChild = myDog.reproduce(); + * + * myDogsChild instanceof Dog; //true + * ``` + * + * ###Using the `as` + * + * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module. + * + * ``` + * var animals = {}; + * + * Mammal.as(animals, "Dog"); + * Wolf.as(animals, "Wolf"); + * Dog.as(animals, "Dog"); + * Breed.as(animals, "Breed"); + * + * var myDog = new animals.Dog(); + * + * ``` + * + * Or in node + * + * ``` + * Mammal.as(exports, "Dog"); + * Wolf.as(exports, "Wolf"); + * Dog.as(exports, "Dog"); + * Breed.as(exports, "Breed"); + * + * ``` + * + * To export a class as the `module` in node + * + * ``` + * Mammal.as(module); + * ``` + * + * + */ + function createDeclared() { + var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function(); - // Utility Functions - // ----------------- + var SUPER_REGEXP = /(super)/g; - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; + function argsToArray(args, slice) { + slice = slice || 0; + return arraySlice.call(args, slice); + } - // Keep the identity function around for default iteratees. - _.identity = function(value) { - return value; - }; + function isArray(obj) { + return Object.prototype.toString.call(obj) === "[object Array]"; + } - // Predicate-generating functions. Often useful outside of Underscore. - _.constant = function(value) { - return function() { - return value; - }; - }; + function isObject(obj) { + var undef; + return obj !== null && obj !== undef && typeof obj === "object"; + } - _.noop = function(){}; + function isHash(obj) { + var ret = isObject(obj); + return ret && obj.constructor === Object; + } - // Creates a function that, when passed an object, will traverse that object’s - // properties down the given `path`, specified as an array of keys or indexes. - _.property = function(path) { - if (!_.isArray(path)) { - return shallowProperty(path); - } - return function(obj) { - return deepGet(obj, path); - }; - }; + var isArguments = function _isArguments(object) { + return Object.prototype.toString.call(object) === '[object Arguments]'; + }; - // Generates a function for a given object that returns a given property. - _.propertyOf = function(obj) { - if (obj == null) { - return function(){}; - } - return function(path) { - return !_.isArray(path) ? obj[path] : deepGet(obj, path); - }; - }; + if (!isArguments(arguments)) { + isArguments = function _isArguments(obj) { + return !!(obj && obj.hasOwnProperty("callee")); + }; + } - // Returns a predicate for checking whether an object has a given set of - // `key:value` pairs. - _.matcher = _.matches = function(attrs) { - attrs = _.extendOwn({}, attrs); - return function(obj) { - return _.isMatch(obj, attrs); - }; - }; + function indexOf(arr, item) { + if (arr && arr.length) { + for (var i = 0, l = arr.length; i < l; i++) { + if (arr[i] === item) { + return i; + } + } + } + return -1; + } - // Run a function **n** times. - _.times = function(n, iteratee, context) { - var accum = Array(Math.max(0, n)); - iteratee = optimizeCb(iteratee, context, 1); - for (var i = 0; i < n; i++) accum[i] = iteratee(i); - return accum; - }; + function merge(target, source, exclude) { + var name, s; + for (name in source) { + if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; + } - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; + function callSuper(args, a) { + var meta = this.__meta, + supers = meta.supers, + l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; + if (l > pos) { + args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args; + var name = superMeta.name, f = superMeta.f, m; + do { + m = supers[pos][name]; + if ("function" === typeof m && (m = m._f || m) !== f) { + superMeta.pos = 1 + pos; + return m.apply(this, args); + } + } while (l > ++pos); + } - // A (possibly faster) way to get the current timestamp as an integer. - _.now = Date.now || function() { - return new Date().getTime(); - }; + return null; + } - // List of HTML entities for escaping. - var escapeMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - var unescapeMap = _.invert(escapeMap); + function getSuper() { + var meta = this.__meta, + supers = meta.supers, + l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; + if (l > pos) { + var name = superMeta.name, f = superMeta.f, m; + do { + m = supers[pos][name]; + if ("function" === typeof m && (m = m._f || m) !== f) { + superMeta.pos = 1 + pos; + return m.bind(this); + } + } while (l > ++pos); + } + return null; + } - // Functions for escaping and unescaping strings to/from HTML interpolation. - var createEscaper = function(map) { - var escaper = function(match) { - return map[match]; - }; - // Regexes for identifying a key that needs to be escaped. - var source = '(?:' + _.keys(map).join('|') + ')'; - var testRegexp = RegExp(source); - var replaceRegexp = RegExp(source, 'g'); - return function(string) { - string = string == null ? '' : '' + string; - return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; - }; - }; - _.escape = createEscaper(escapeMap); - _.unescape = createEscaper(unescapeMap); + function getter(name) { + var getters = this.__getters__; + if (getters.hasOwnProperty(name)) { + return getters[name].apply(this); + } else { + return this[name]; + } + } - // Traverses the children of `obj` along `path`. If a child is a function, it - // is invoked with its parent as context. Returns the value of the final - // child, or `fallback` if any child is undefined. - _.result = function(obj, path, fallback) { - if (!_.isArray(path)) path = [path]; - var length = path.length; - if (!length) { - return _.isFunction(fallback) ? fallback.call(obj) : fallback; - } - for (var i = 0; i < length; i++) { - var prop = obj == null ? void 0 : obj[path[i]]; - if (prop === void 0) { - prop = fallback; - i = length; // Ensure we don't continue iterating. - } - obj = _.isFunction(prop) ? prop.call(obj) : prop; - } - return obj; - }; + function setter(name, val) { + var setters = this.__setters__; + if (isHash(name)) { + for (var i in name) { + var prop = name[i]; + if (setters.hasOwnProperty(i)) { + setters[name].call(this, prop); + } else { + this[i] = prop; + } + } + } else { + if (setters.hasOwnProperty(name)) { + return setters[name].apply(this, argsToArray(arguments, 1)); + } else { + return this[name] = val; + } + } + } - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate: /<%([\s\S]+?)%>/g, - interpolate: /<%=([\s\S]+?)%>/g, - escape: /<%-([\s\S]+?)%>/g - }; + function defaultFunction() { + var meta = this.__meta || {}, + supers = meta.supers, + l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos; + if (l > pos) { + var name = superMeta.name, f = superMeta.f, m; + do { + m = supers[pos][name]; + if ("function" === typeof m && (m = m._f || m) !== f) { + superMeta.pos = 1 + pos; + return m.apply(this, arguments); + } + } while (l > ++pos); + } + return null; + } - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; + function functionWrapper(f, name) { + if (f.toString().match(SUPER_REGEXP)) { + var wrapper = function wrapper() { + var ret, meta = this.__meta || {}; + var orig = meta.superMeta; + meta.superMeta = {f: f, pos: 0, name: name}; + switch (arguments.length) { + case 0: + ret = f.call(this); + break; + case 1: + ret = f.call(this, arguments[0]); + break; + case 2: + ret = f.call(this, arguments[0], arguments[1]); + break; - var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; + case 3: + ret = f.call(this, arguments[0], arguments[1], arguments[2]); + break; + default: + ret = f.apply(this, arguments); + } + meta.superMeta = orig; + return ret; + }; + wrapper._f = f; + return wrapper; + } else { + f._f = f; + return f; + } + } - var escapeChar = function(match) { - return '\\' + escapes[match]; - }; + function defineMixinProps(child, proto) { - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - // NB: `oldSettings` only exists for backwards compatibility. - _.template = function(text, settings, oldSettings) { - if (!settings && oldSettings) settings = oldSettings; - settings = _.defaults({}, settings, _.templateSettings); + var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__; + for (var i in operations) { + if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there + __setters[i] = operations[i]; + } + } + operations = proto.getters || {}; + for (i in operations) { + if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there + __getters[i] = operations[i]; + } + } + for (var j in proto) { + if (j !== "getters" && j !== "setters") { + var p = proto[j]; + if ("function" === typeof p) { + if (!child.hasOwnProperty(j)) { + child[j] = functionWrapper(defaultFunction, j); + } + } else { + child[j] = p; + } + } + } + } - // Combine delimiters into one regular expression via alternation. - var matcher = RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); + function mixin() { + var args = argsToArray(arguments), l = args.length; + var child = this.prototype; + var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(), + staticSupers = thisMeta.supers || [], supers = childMeta.supers || []; + for (var i = 0; i < l; i++) { + var m = args[i], mProto = m.prototype; + var protoMeta = mProto.__meta, meta = m.__meta; + !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}})); + !meta && (meta = (m.__meta = {proto: m.__proto__ || {}})); + defineMixinProps(child, protoMeta.proto || {}); + defineMixinProps(this, meta.proto || {}); + //copy the bases for static, - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset).replace(escapeRegExp, escapeChar); - index = offset + match.length; + mixinSupers(m.prototype, supers, bases); + mixinSupers(m, staticSupers, staticBases); + } + return this; + } - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } else if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } else if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } + function mixinSupers(sup, arr, bases) { + var meta = sup.__meta; + !meta && (meta = (sup.__meta = {})); + var unique = sup.__meta.unique; + !unique && (meta.unique = "declare" + ++classCounter); + //check it we already have this super mixed into our prototype chain + //if true then we have already looped their supers! + if (indexOf(bases, unique) === -1) { + //add their id to our bases + bases.push(unique); + var supers = sup.__meta.supers || [], i = supers.length - 1 || 0; + while (i >= 0) { + mixinSupers(supers[i--], arr, bases); + } + arr.unshift(sup); + } + } - // Adobe VMs need the match returned to produce the correct offset. - return match; - }); - source += "';\n"; + function defineProps(child, proto) { + var operations = proto.setters, + __setters = child.__setters__, + __getters = child.__getters__; + if (operations) { + for (var i in operations) { + __setters[i] = operations[i]; + } + } + operations = proto.getters || {}; + if (operations) { + for (i in operations) { + __getters[i] = operations[i]; + } + } + for (i in proto) { + if (i != "getters" && i != "setters") { + var f = proto[i]; + if ("function" === typeof f) { + var meta = f.__meta || {}; + if (!meta.isConstructor) { + child[i] = functionWrapper(f, i); + } else { + child[i] = f; + } + } else { + child[i] = f; + } + } + } - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + } - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + 'return __p;\n'; + function _export(obj, name) { + if (obj && name) { + obj[name] = this; + } else { + obj.exports = obj = this; + } + return this; + } - var render; - try { - render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; - } + function extend(proto) { + return declare(this, proto); + } - var template = function(data) { - return render.call(this, data, _); - }; + function getNew(ctor) { + // create object with correct prototype using a do-nothing + // constructor + forceNew.prototype = ctor.prototype; + var t = new forceNew(); + forceNew.prototype = null; // clean up + return t; + } - // Provide the compiled source as a convenience for precompilation. - var argument = settings.variable || 'obj'; - template.source = 'function(' + argument + '){\n' + source + '}'; - return template; - }; + function __declare(child, sup, proto) { + var childProto = {}, supers = []; + var unique = "declare" + ++classCounter, bases = [], staticBases = []; + var instanceSupers = [], staticSupers = []; + var meta = { + supers: instanceSupers, + unique: unique, + bases: bases, + superMeta: { + f: null, + pos: 0, + name: null + } + }; + var childMeta = { + supers: staticSupers, + unique: unique, + bases: staticBases, + isConstructor: true, + superMeta: { + f: null, + pos: 0, + name: null + } + }; - // Add a "chain" function. Start chaining a wrapped Underscore object. - _.chain = function(obj) { - var instance = _(obj); - instance._chain = true; - return instance; - }; + if (isHash(sup) && !proto) { + proto = sup; + sup = Base; + } - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. + if ("function" === typeof sup || isArray(sup)) { + supers = isArray(sup) ? sup : [sup]; + sup = supers.shift(); + child.__meta = childMeta; + childProto = getNew(sup); + childProto.__meta = meta; + childProto.__getters__ = merge({}, childProto.__getters__ || {}); + childProto.__setters__ = merge({}, childProto.__setters__ || {}); + child.__getters__ = merge({}, child.__getters__ || {}); + child.__setters__ = merge({}, child.__setters__ || {}); + mixinSupers(sup.prototype, instanceSupers, bases); + mixinSupers(sup, staticSupers, staticBases); + } else { + child.__meta = childMeta; + childProto.__meta = meta; + childProto.__getters__ = childProto.__getters__ || {}; + childProto.__setters__ = childProto.__setters__ || {}; + child.__getters__ = child.__getters__ || {}; + child.__setters__ = child.__setters__ || {}; + } + child.prototype = childProto; + if (proto) { + var instance = meta.proto = proto.instance || {}; + var stat = childMeta.proto = proto.static || {}; + stat.init = stat.init || defaultFunction; + defineProps(childProto, instance); + defineProps(child, stat); + if (!instance.hasOwnProperty("constructor")) { + childProto.constructor = instance.constructor = functionWrapper(defaultFunction, "constructor"); + } else { + childProto.constructor = functionWrapper(instance.constructor, "constructor"); + } + } else { + meta.proto = {}; + childMeta.proto = {}; + child.init = functionWrapper(defaultFunction, "init"); + childProto.constructor = functionWrapper(defaultFunction, "constructor"); + } + if (supers.length) { + mixin.apply(child, supers); + } + if (sup) { + //do this so we mixin our super methods directly but do not ov + merge(child, merge(merge({}, sup), child)); + } + childProto._super = child._super = callSuper; + childProto._getSuper = child._getSuper = getSuper; + childProto._static = child; + } - // Helper function to continue chaining intermediate results. - var chainResult = function(instance, obj) { - return instance._chain ? _(obj).chain() : obj; - }; + function declare(sup, proto) { + function declared() { + switch (arguments.length) { + case 0: + this.constructor.call(this); + break; + case 1: + this.constructor.call(this, arguments[0]); + break; + case 2: + this.constructor.call(this, arguments[0], arguments[1]); + break; + case 3: + this.constructor.call(this, arguments[0], arguments[1], arguments[2]); + break; + default: + this.constructor.apply(this, arguments); + } + } - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - _.each(_.functions(obj), function(name) { - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_, args)); - }; - }); - return _; - }; + __declare(declared, sup, proto); + return declared.init() || declared; + } - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); + function singleton(sup, proto) { + var retInstance; - // Add all mutator Array functions to the wrapper. - _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; - return chainResult(this, obj); - }; - }); + function declaredSingleton() { + if (!retInstance) { + this.constructor.apply(this, arguments); + retInstance = this; + } + return retInstance; + } - // Add all accessor Array functions to the wrapper. - _.each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return chainResult(this, method.apply(this._wrapped, arguments)); - }; - }); + __declare(declaredSingleton, sup, proto); + return declaredSingleton.init() || declaredSingleton; + } - // Extracts the result from a wrapped and chained object. - _.prototype.value = function() { - return this._wrapped; - }; + Base = declare({ + instance: { + "get": getter, + "set": setter + }, - // Provide unwrapping proxy for some methods used in engine operations - // such as arithmetic and JSON stringification. - _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + "static": { + "get": getter, + "set": setter, + mixin: mixin, + extend: extend, + as: _export + } + }); - _.prototype.toString = function() { - return String(this._wrapped); - }; + declare.singleton = singleton; + return declare; + } - // AMD registration happens at the end for compatibility with AMD loaders - // that may not enforce next-turn semantics on modules. Even though general - // practice for AMD registration is to be anonymous, underscore registers - // as a named module because, like jQuery, it is a base library that is - // popular enough to be bundled in a third party lib, but not be part of - // an AMD load request. Those cases could generate an error when an - // anonymous define() is called outside of a loader request. - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { - return _; - }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } + if (true) { + if ( true && module.exports) { + module.exports = createDeclared(); + } + } else {} }()); -/***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/index.js": -/*!**************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/index.js ***! - \**************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/** - * @module rules-engine - * - * Business logic for interacting with rules documents - */ -const pouchdbProvider = __webpack_require__(/*! ./pouchdb-provider */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js"); -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js"); -const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js"); -const wireupToProvider = __webpack_require__(/*! ./provider-wireup */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js"); +/***/ }), -/** - * @param {Object} db Medic pouchdb database - */ -module.exports = db => { - const provider = pouchdbProvider(db); - return { - /** - * @param {Object} settings Settings for the behavior of the rules engine - * @param {Object} settings.rules Rules code from settings doc - * @param {Object[]} settings.taskSchedules Task schedules from settings doc - * @param {Object[]} settings.targets Target definitions from settings doc - * @param {Boolean} settings.enableTasks Flag to enable tasks - * @param {Boolean} settings.enableTargets Flag to enable targets - * @param {Object} settings.contact User's hydrated contact document - * @param {Object} settings.user User's settings document - */ - initialize: (settings) => wireupToProvider.initialize(provider, settings), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - /** - * @returns {Boolean} True if the rules engine is enabled and ready for use - */ - isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(), +module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js"); - /** - * Refreshes all rules documents for a set of contacts and returns their task documents - * - * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are - * @returns {Promise} All the fresh task docs owned by contactIds - */ - fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds), +/***/ }), - /** - * Refreshes all rules documents and returns the latest target document - * - * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the - * target scores - * @param {Integer} filterInterval.start Start timestamp of interval - * @param {Integer} filterInterval.end End timestamp of interval - * @returns {Promise} Array of fresh targets - */ - fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js ***! + \********************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - /** - * Indicate that the task documents associated with a given subjectId are dirty. - * - * @param {string[]} subjectIds An array of subject ids - * - * @returns {Promise} To mark the subjectIds as dirty - */ - updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds), +(function () { + "use strict"; + /*global extender is, dateExtended*/ - /** - * Determines if either the settings or user's hydrated contact document have changed in a way which will impact - * the result of rules calculations. - * If they have changed in a meaningful way, the calculation state of all contacts is reset - * - * @param {Object} settings Updated settings - * @param {Object} settings.rules Rules code from settings doc - * @param {Object[]} settings.taskSchedules Task schedules from settings doc - * @param {Object[]} settings.targets Target definitions from settings doc - * @param {Boolean} settings.enableTasks Flag to enable tasks - * @param {Boolean} settings.enableTargets Flag to enable targets - * @param {Object} settings.contact User's hydrated contact document - * @param {Object} settings.user User's user-settings document - */ - rulesConfigChange: (settings) => { - const cacheIsReset = rulesStateStore.rulesConfigChange(settings); - if (cacheIsReset) { - rulesEmitter.shutdown(); - rulesEmitter.initialize(settings); - } - }, + function defineExtended(extender) { - /** - * Returns a list of UUIDs of tracked contacts that are marked as dirty - * @returns {Array} list of dirty contacts UUIDs - */ - getDirtyContacts: () => rulesStateStore.getDirtyContacts(), - }; -}; + var merge = (function merger() { + function _merge(target, source) { + var name, s; + for (name in source) { + if (source.hasOwnProperty(name)) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; + } -/***/ }), + return function merge(obj) { + if (!obj) { + obj = {}; + } + for (var i = 1, l = arguments.length; i < l; i++) { + _merge(obj, arguments[i]); + } + return obj; // Object + }; + }()); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js": -/*!*************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js ***! - \*************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function getExtended() { -/** - * @module pouchdb-provider - * - * Wireup for accessing rules document data via medic pouch db - */ + var loaded = {}; -// TODO work out how to pass in the logger from node/browser -/* eslint-disable no-console */ -const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); -const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); -const RULES_STATE_DOCID = '_local/rulesStateStore'; -const docsOf = (query) => { - return query.then(result => { - const rows = uniqBy(result.rows, 'id'); - return rows.map(row => row.doc).filter(existing => existing); - }); -}; + //getInitial instance; + var extended = extender.define(); + extended.expose({ + register: function register(alias, extendWith) { + if (!extendWith) { + extendWith = alias; + alias = null; + } + var type = typeof extendWith; + if (alias) { + extended[alias] = extendWith; + } else if (extendWith && type === "function") { + extended.extend(extendWith); + } else if (type === "object") { + extended.expose(extendWith); + } else { + throw new TypeError("extended.register must be called with an extender function"); + } + return extended; + }, + define: function () { + return extender.define.apply(extender, arguments); + } + }); -const medicPouchProvider = db => { - const self = { - // PouchDB.query slows down when provided with a large keys array. - // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids - allTasks: prefix => { - const options = { startkey: `${prefix}-`, endkey: `${prefix}-\ufff0`, include_docs: true }; - return docsOf(db.query('medic-client/tasks_by_contact', options)); - }, + return extended; + } - allTaskData: userSettingsDoc => { - const userSettingsId = userSettingsDoc && userSettingsDoc._id; - return Promise.all([ - docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })), - docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })), - self.allTasks('requester'), - ]) - .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId })); - }, + function extended() { + return getExtended(); + } - contactsBySubjectId: subjectIds => { - const keys = subjectIds.map(key => ['shortcode', key]); - return db.query('medic-client/contacts_by_reference', { keys, include_docs: true }) - .then(results => { - const shortcodeIds = results.rows.map(result => result.doc._id); - const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id)); + extended.define = function define() { + return extender.define.apply(extender, arguments); + }; - return [...shortcodeIds, ...idsThatArentShortcodes]; - }); - }, + return extended; + } - stateChangeCallback: docUpdateClosure(db), + if (true) { + if ( true && module.exports) { + module.exports = defineExtended(__webpack_require__(/*! extender */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js")); - commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => { - const userContactId = userContactDoc && userContactDoc._id; - const userSettingsId = userSettingsDoc && userSettingsDoc._id; - const _id = `target~${docTag}~${userContactId}~${userSettingsId}`; - const createNew = () => ({ - _id, - type: 'target', - user: userSettingsId, - owner: userContactId, - reporting_period: docTag, - }); + } + } else {} - const today = moment().startOf('day').valueOf(); - return db.get(_id) - .catch(createNew) - .then(existingDoc => { - if (existingDoc.updated_date === today && !force) { - return false; - } +}).call(this); - existingDoc.targets = targets; - existingDoc.updated_date = today; - return db.put(existingDoc); - }); - }, - commitTaskDocs: taskDocs => { - if (!taskDocs || taskDocs.length === 0) { - return Promise.resolve([]); - } - console.debug(`Committing ${taskDocs.length} task document updates`); - return db.bulkDocs(taskDocs) - .catch(err => console.error('Error committing task documents', err)); - }, - existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })), - tasksByRelation: (contactIds, prefix) => { - const keys = contactIds.map(contactId => `${prefix}-${contactId}`); - return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true })); - }, - taskDataFor: (contactIds, userSettingsDoc) => { - if (!contactIds || contactIds.length === 0) { - return Promise.resolve({}); - } - return docsOf(db.allDocs({ keys: contactIds, include_docs: true })) - .then(contactDocs => { - const subjectIds = contactDocs.reduce((agg, contactDoc) => { - registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId)); - return agg; - }, new Set(contactIds)); - const keys = Array.from(subjectIds); - return Promise.all([ - docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })), - self.tasksByRelation(contactIds, 'requester'), - ]) - .then(([reportDocs, taskDocs]) => { - // tighten the connection between reports and contacts - // a report will only be allowed to generate tasks for a single contact! - reportDocs = reportDocs.filter(report => { - const subjectId = registrationUtils.getSubjectId(report); - return subjectIds.has(subjectId); - }); +/***/ }), - return { - userSettingsId: userSettingsDoc && userSettingsDoc._id, - contactDocs, - reportDocs, - taskDocs, - }; - }); - }); - }, - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js ***! + \***********************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - return self; -}; +(function () { + /*jshint strict:false*/ -medicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID; -const docUpdateClosure = db => { - // previousResult helps avoid conflict errors if this functions is used asynchronously - let previousResult = Promise.resolve(); - return (baseDoc, assigned) => { - Object.assign(baseDoc, assigned); + /** + * + * @projectName extender + * @github http://github.com/doug-martin/extender + * @header + * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender) + * # Extender + * + * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type. + * + * ## Why Is Extender Different? + * + * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner. + * + * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API. + * + * + * ## Installation + * + * ``` + * npm install extender + * ``` + * + * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js)) + * + * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/). + * + * ### Requirejs + * + * To use with requirejs place the `extend` source in the root scripts directory + * + * ```javascript + * + * define(["extender"], function(extender){ + * }); + * + * ``` + * + * + * ## Usage + * + * **`extender.define(tester, decorations)`** + * + * To create your own extender call the `extender.define` function. + * + * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations` + * + * ```javascript + * function isString(obj) { + * return !isUndefinedOrNull(obj) && (typeof obj === "string" || obj instanceof String); + * } + * + * + * var myExtender = extender.define(isString, { + * multiply: function (str, times) { + * var ret = str; + * for (var i = 1; i < times; i++) { + * ret += str; + * } + * return ret; + * }, + * toArray: function (str, delim) { + * delim = delim || ""; + * return str.split(delim); + * } + * }); + * + * myExtender("hello").multiply(2).value(); //hellohello + * + * ``` + * + * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods. + * + * ```javascript + * + * function isUndefined(obj) { + * var undef; + * return obj === undef; + * } + * + * function isUndefinedOrNull(obj) { + * var undef; + * return obj === undef || obj === null; + * } + * + * function isArray(obj) { + * return Object.prototype.toString.call(obj) === "[object Array]"; + * } + * + * function isBoolean(obj) { + * var undef, type = typeof obj; + * return !isUndefinedOrNull(obj) && type === "boolean" || type === "Boolean"; + * } + * + * function isString(obj) { + * return !isUndefinedOrNull(obj) && (typeof obj === "string" || obj instanceof String); + * } + * + * var myExtender = extender.define({ + * isUndefined : isUndefined, + * isUndefinedOrNull : isUndefinedOrNull, + * isArray : isArray, + * isBoolean : isBoolean, + * isString : isString + * }); + * + * ``` + * + * To use + * + * ``` + * var undef; + * myExtender("hello").isUndefined().value(); //false + * myExtender(undef).isUndefined().value(); //true + * ``` + * + * You can also chain extenders so that they accept multiple types and decorates accordingly. + * + * ```javascript + * myExtender + * .define(isArray, { + * pluck: function (arr, m) { + * var ret = []; + * for (var i = 0, l = arr.length; i < l; i++) { + * ret.push(arr[i][m]); + * } + * return ret; + * } + * }) + * .define(isBoolean, { + * invert: function (val) { + * return !val; + * } + * }); + * + * myExtender([{a: "a"},{a: "b"},{a: "c"}]).pluck("a").value(); //["a", "b", "c"] + * myExtender("I love javascript!").toArray(/\s+/).pluck("0"); //["I", "l", "j"] + * + * ``` + * + * Notice that we reuse the same extender as defined above. + * + * **Return Values** + * + * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned. + * + * **Default decoration methods** + * + * By default every value passed into an extender is decorated with the following methods. + * + * * `value` : The value this extender represents. + * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue` + * * `neq(oterValue)` : Tests strict inequality of the currently represented value. + * * `print` : logs the current value to the console. + * + * **Extender initialization** + * + * When creating an extender you can also specify a constructor which will be invoked with the current value. + * + * ```javascript + * myExtender.define(isString, { + * constructor : function(val){ + * //set our value to the string trimmed + * this._value = val.trimRight().trimLeft(); + * } + * }); + * ``` + * + * **`noWrap`** + * + * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`. + * + * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense. + * + * ``` + * + * var myValidator = extender.define({ + * //chainable validation methods + * //... + * //end chainable validation methods + * + * noWrap : { + * validator : function(){ + * //return your validator + * } + * } + * }); + * + * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value() + * + * + * ``` + * **`extender.extend(extendr)`** + * + * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders. + * + * Suppose you have the following two extenders. + * + * ```javascript + * var myExtender = extender + * .define({ + * isFunction: is.function, + * isNumber: is.number, + * isString: is.string, + * isDate: is.date, + * isArray: is.array, + * isBoolean: is.boolean, + * isUndefined: is.undefined, + * isDefined: is.defined, + * isUndefinedOrNull: is.undefinedOrNull, + * isNull: is.null, + * isArguments: is.arguments, + * isInstanceOf: is.instanceOf, + * isRegExp: is.regExp + * }); + * var myExtender2 = extender.define(is.array, { + * pluck: function (arr, m) { + * var ret = []; + * for (var i = 0, l = arr.length; i < l; i++) { + * ret.push(arr[i][m]); + * } + * return ret; + * }, + * + * noWrap: { + * pluckPlain: function (arr, m) { + * var ret = []; + * for (var i = 0, l = arr.length; i < l; i++) { + * ret.push(arr[i][m]); + * } + * return ret; + * } + * } + * }); + * + * + * ``` + * + * And you do not want to alter either of them but instead what to create a third that is the union of the two. + * + * + * ```javascript + * var composed = extender.extend(myExtender).extend(myExtender2); + * ``` + * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`. + * + * ```javascript + * var extended = composed([ + * {a: "a"}, + * {a: "b"}, + * {a: "c"} + * ]); + * extended.isArray().value(); //true + * extended.pluck("a").value(); // ["a", "b", "c"]); + * + * ``` + * + * **Note** `myExtender` and `myExtender2` will **NOT** be altered. + * + * **`extender.expose(methods)`** + * + * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly. + * + * ``` + * var isMethods = { + * isFunction: is.function, + * isNumber: is.number, + * isString: is.string, + * isDate: is.date, + * isArray: is.array, + * isBoolean: is.boolean, + * isUndefined: is.undefined, + * isDefined: is.defined, + * isUndefinedOrNull: is.undefinedOrNull, + * isNull: is.null, + * isArguments: is.arguments, + * isInstanceOf: is.instanceOf, + * isRegExp: is.regExp + * }; + * + * var myExtender = extender.define(isMethods).expose(isMethods); + * + * myExtender.isArray([]); //true + * myExtender([]).isArray([]).value(); //true + * + * ``` + * + * + * **Using `instanceof`** + * + * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator. + * + * ```javascript + * var str = myExtender("hello"); + * + * str instanceof myExtender; //true + * ``` + * + * ## Examples + * + * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples) + */ + function defineExtender(declare) { - previousResult = previousResult - .then(() => db.put(baseDoc)) - .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; }) - .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`)) - .then(() => { - // unsure of how browsers handle long promise chains, so break the chain when possible - previousResult = Promise.resolve(); - }); - return previousResult; - }; -}; + var slice = Array.prototype.slice, undef; -module.exports = medicPouchProvider; + function indexOf(arr, item) { + if (arr && arr.length) { + for (var i = 0, l = arr.length; i < l; i++) { + if (arr[i] === item) { + return i; + } + } + } + return -1; + } + function isArray(obj) { + return Object.prototype.toString.call(obj) === "[object Array]"; + } -/***/ }), + var merge = (function merger() { + function _merge(target, source, exclude) { + var name, s; + for (name in source) { + if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js": -/*!************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js ***! - \************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return function merge(obj) { + if (!obj) { + obj = {}; + } + var l = arguments.length; + var exclude = arguments[arguments.length - 1]; + if (isArray(exclude)) { + l--; + } else { + exclude = []; + } + for (var i = 1; i < l; i++) { + _merge(obj, arguments[i], exclude); + } + return obj; // Object + }; + }()); -/** - * @module wireup - * - * Wireup a data provider to the rules-engine - */ -const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); + function extender(supers) { + supers = supers || []; + var Base = declare({ + instance: { + constructor: function (value) { + this._value = value; + }, -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); -const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js"); -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js"); -const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js"); -const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); + value: function () { + return this._value; + }, -let wireupOptions; + eq: function eq(val) { + return this["__extender__"](this._value === val); + }, -module.exports = { - /** - * @param {Object} provider A data provider - * @param {Object} settings Settings for the behavior of the provider - * @param {Object} settings.rules Rules code from settings doc - * @param {Object[]} settings.taskSchedules Task schedules from settings doc - * @param {Object[]} settings.targets Target definitions from settings doc - * @param {Boolean} settings.enableTasks Flag to enable tasks - * @param {Boolean} settings.enableTargets Flag to enable targets - * @param {number} settings.monthStartDate reporting interval start date - * @param {Object} userDoc User's hydrated contact document - */ - initialize: (provider, settings) => { - const isEnabled = rulesEmitter.initialize(settings); - if (!isEnabled) { - return Promise.resolve(); - } + neq: function neq(other) { + return this["__extender__"](this._value !== other); + }, + print: function () { + console.log(this._value); + return this; + } + } + }), defined = []; - const { enableTasks=true, enableTargets=true } = settings; - wireupOptions = { enableTasks, enableTargets }; + function addMethod(proto, name, func) { + if ("function" !== typeof func) { + throw new TypeError("when extending type you must provide a function"); + } + var extendedMethod; + if (name === "constructor") { + extendedMethod = function () { + this._super(arguments); + func.apply(this, arguments); + }; + } else { + extendedMethod = function extendedMethod() { + var args = slice.call(arguments); + args.unshift(this._value); + var ret = func.apply(this, args); + return ret !== undef ? this["__extender__"](ret) : this; + }; + } + proto[name] = extendedMethod; + } - return provider - .existingRulesStateStore() - .then(existingStateDoc => { - if (!rulesEmitter.isLatestNoolsSchema()) { - throw Error('Rules Engine: Updates to the nools schema are required'); - } + function addNoWrapMethod(proto, name, func) { + if ("function" !== typeof func) { + throw new TypeError("when extending type you must provide a function"); + } + var extendedMethod; + if (name === "constructor") { + extendedMethod = function () { + this._super(arguments); + func.apply(this, arguments); + }; + } else { + extendedMethod = function extendedMethod() { + var args = slice.call(arguments); + args.unshift(this._value); + return func.apply(this, args); + }; + } + proto[name] = extendedMethod; + } - const contactClosure = updatedState => provider.stateChangeCallback( - existingStateDoc, - { rulesStateStore: updatedState } - ); - const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure); - return handleIntervalTurnover(provider, settings).then(() => { - if (!needsBuilding) { - return; - } + function decorateProto(proto, decoration, nowrap) { + for (var i in decoration) { + if (decoration.hasOwnProperty(i)) { + if (i !== "getters" && i !== "setters") { + if (i === "noWrap") { + decorateProto(proto, decoration[i], true); + } else if (nowrap) { + addNoWrapMethod(proto, i, decoration[i]); + } else { + addMethod(proto, i, decoration[i]); + } + } else { + proto[i] = decoration[i]; + } + } + } + } - rulesStateStore.build(settings, contactClosure); - }); - }); - }, + function _extender(obj) { + var ret = obj, i, l; + if (!(obj instanceof Base)) { + var OurBase = Base; + for (i = 0, l = defined.length; i < l; i++) { + var definer = defined[i]; + if (definer[0](obj)) { + OurBase = OurBase.extend({instance: definer[1]}); + } + } + ret = new OurBase(obj); + ret["__extender__"] = _extender; + } + return ret; + } - /** - * Refreshes the rules emissions for all contacts - * Fetches all tasks in non-terminal state owned by the contacts - * Updates the temporal states of the task documents - * Commits those changes (async) - * - * @param {Object} provider A data provider - * @param {string[]} contactIds An array of contact ids. If undefined, all task documents - * @returns {Promise} All the fresh task docs owned by contacts - */ - fetchTasksFor: (provider, contactIds) => { - if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) { - return disabledResponse(); - } + function always() { + return true; + } - return enqueue(() => { - const calculationTimestamp = Date.now(); - return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds) - .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner')) - .then(tasksToDisplay => { - const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp); - provider.commitTaskDocs(docsToCommit); - return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready); - }); - }); - }, + function define(tester, decorate) { + if (arguments.length) { + if (typeof tester === "object") { + decorate = tester; + tester = always; + } + decorate = decorate || {}; + var proto = {}; + decorateProto(proto, decorate); + //handle browsers like which skip over the constructor while looping + if (!proto.hasOwnProperty("constructor")) { + if (decorate.hasOwnProperty("constructor")) { + addMethod(proto, "constructor", decorate.constructor); + } else { + proto.constructor = function () { + this._super(arguments); + }; + } + } + defined.push([tester, proto]); + } + return _extender; + } - /** - * Refreshes the rules emissions for all contacts - * - * @param {Object} provider A data provider - * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target - * scores - * @param {Integer} filterInterval.start Start timestamp of interval - * @param {Integer} filterInterval.end End timestamp of interval - * @returns {Promise} The fresh aggregate target doc - */ - fetchTargets: (provider, filterInterval) => { - if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) { - return disabledResponse(); - } + function extend(supr) { + if (supr && supr.hasOwnProperty("__defined__")) { + _extender["__defined__"] = defined = defined.concat(supr["__defined__"]); + } + merge(_extender, supr, ["define", "extend", "expose", "__defined__"]); + return _extender; + } - const calculationTimestamp = Date.now(); - const targetEmissionFilter = filterInterval && (emission => { - // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive - return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]'); - }); + _extender.define = define; + _extender.extend = extend; + _extender.expose = function expose() { + var methods; + for (var i = 0, l = arguments.length; i < l; i++) { + methods = arguments[i]; + if (typeof methods === "object") { + merge(_extender, methods, ["define", "extend", "expose", "__defined__"]); + } + } + return _extender; + }; + _extender["__defined__"] = defined; - return enqueue(() => { - return refreshRulesEmissionForContacts(provider, calculationTimestamp) - .then(() => { - const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter); - return storeTargetsDoc(provider, targets, filterInterval).then(() => targets); - }); - }); - }, - /** - * Indicate that the rules emissions associated with a given subjectId are dirty - * - * @param {Object} provider A data provider - * @param {string[]} subjectIds An array of subject ids - * - * @returns {Promise} To complete the transaction marking the subjectIds as dirty - */ - updateEmissionsFor: (provider, subjectIds) => { - if (!subjectIds) { - subjectIds = []; - } + return _extender; + } - if (subjectIds && !Array.isArray(subjectIds)) { - subjectIds = [subjectIds]; - } + return { + define: function () { + return extender().define.apply(extender, arguments); + }, - // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required - return provider.contactsBySubjectId(subjectIds) - .then(contactIds => rulesStateStore.markDirty(contactIds)); - }, -}; + extend: function (supr) { + return extender().define().extend(supr); + } + }; -let refreshQueue = Promise.resolve(); -const enqueue = callback => { - const listeners = []; - const eventQueue = []; - const emit = evtName => { - // we have to emit `queued` immediately, but there are no listeners listening at this point - // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they - // have events in eventQueue, and call their callback immediately for each matching queued event. - if (!listeners[evtName]) { - return eventQueue.push(evtName); } - listeners[evtName].forEach(callback => callback()); - }; - - emit('queued'); - refreshQueue = refreshQueue.then(() => { - emit('running'); - return callback(); - }); - - refreshQueue.on = (evtName, callback) => { - listeners[evtName] = listeners[evtName] || []; - listeners[evtName].push(callback); - eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback()); - return refreshQueue; - }; - - return refreshQueue; -}; - -const disabledResponse = () => { - const p = Promise.resolve([]); - p.on = () => p; - return p; -}; -const refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => { - const refreshAndSave = (freshData, updatedContactIds) => ( - refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions) - .then(refreshed => Promise.all([ - rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions), - provider.commitTaskDocs(refreshed.updatedTaskDocs), - ])) - ); + if (true) { + if ( true && module.exports) { + module.exports = defineExtender(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")); - const refreshForAllContacts = (calculationTimestamp) => ( - provider.allTaskData(rulesStateStore.currentUserSettings()) - .then(freshData => ( - refreshAndSave(freshData) - .then(() => { - const contactIds = freshData.contactDocs.map(doc => doc._id); + } + } else {} - const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => { - registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId)); - return agg; - }, new Set()); +}).call(this); - const headlessSubjectIds = freshData.reportDocs - .map(doc => registrationUtils.getSubjectId(doc)) - .filter(subjectId => !subjectIds.has(subjectId)); +/***/ }), - rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]); - }) - )) - ); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - const refreshForKnownContacts = (calculationTimestamp, contactIds) => { - const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId)); - return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings()) - .then(freshData => refreshAndSave(freshData, dirtyContactIds)) - .then(() => { - rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds); - }); - }; +module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js"); - return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => { - if (contactIds) { - return refreshForKnownContacts(calculationTimestamp, contactIds); - } +/***/ }), - // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in - // reports/tasks) - if (!rulesStateStore.hasAllContacts()) { - return refreshForAllContacts(calculationTimestamp); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js ***! + \*****************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - // Once the contact state store has all contacts, trust it and only refresh those marked dirty - return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds()); - }); -}; +(function () { + "use strict"; -const storeTargetsDoc = (provider, targets, filterInterval, force = false) => { - const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest'; - const minifyTarget = target => ({ id: target.id, value: target.value }); + function defineFunction(extended, is, args) { - return provider.commitTargetDoc( - targets.map(minifyTarget), - rulesStateStore.currentUserContact(), - rulesStateStore.currentUserSettings(), - targetDocTag, - force - ); -}; + var isArray = is.isArray, + isObject = is.isObject, + isString = is.isString, + isFunction = is.isFunction, + argsToArray = args.argsToArray; -// Because we only save the `target` document once per day (when we calculate targets for the first time), -// we're losing all updates to targets that happened in the last day of the reporting period. -// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding -// reporting interval (that includes the date when the state was calculated). -// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`, -// which means that they would all be excluded from the emission filter (being outside the past reporting interval). -// https://github.com/medic/cht-core/issues/6209 -const handleIntervalTurnover = (provider, { monthStartDate }) => { - if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) { - return Promise.resolve(); - } + function spreadArgs(f, args, scope) { + var ret; + switch ((args || []).length) { + case 0: + ret = f.call(scope); + break; + case 1: + ret = f.call(scope, args[0]); + break; + case 2: + ret = f.call(scope, args[0], args[1]); + break; + case 3: + ret = f.call(scope, args[0], args[1], args[2]); + break; + default: + ret = f.apply(scope, args); + } + return ret; + } - const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt(); - if (!stateCalculatedAt) { - return Promise.resolve(); - } + function hitch(scope, method, args) { + args = argsToArray(arguments, 2); + if ((isString(method) && !(method in scope))) { + throw new Error(method + " property not defined in scope"); + } else if (!isString(method) && !isFunction(method)) { + throw new Error(method + " is not a function"); + } + if (isString(method)) { + return function () { + var func = scope[method]; + if (isFunction(func)) { + return spreadArgs(func, args.concat(argsToArray(arguments)), scope); + } else { + return func; + } + }; + } else { + if (args.length) { + return function () { + return spreadArgs(method, args.concat(argsToArray(arguments)), scope); + }; + } else { - const currentInterval = calendarInterval.getCurrent(monthStartDate); - // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive - if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) { - return Promise.resolve(); - } + return function () { + return spreadArgs(method, arguments, scope); + }; + } + } + } - const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt); - const targetEmissionFilter = (emission => { - // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive - return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]'); - }); - const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter); - return storeTargetsDoc(provider, targets, filterInterval, true); -}; + function applyFirst(method, args) { + args = argsToArray(arguments, 1); + if (!isString(method) && !isFunction(method)) { + throw new Error(method + " must be the name of a property or function to execute"); + } + if (isString(method)) { + return function () { + var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift(); + var func = scope[method]; + if (isFunction(func)) { + scopeArgs = args.concat(scopeArgs); + return spreadArgs(func, scopeArgs, scope); + } else { + return func; + } + }; + } else { + return function () { + var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift(); + scopeArgs = args.concat(scopeArgs); + return spreadArgs(method, scopeArgs, scope); + }; + } + } -/***/ }), + function hitchIgnore(scope, method, args) { + args = argsToArray(arguments, 2); + if ((isString(method) && !(method in scope))) { + throw new Error(method + " property not defined in scope"); + } else if (!isString(method) && !isFunction(method)) { + throw new Error(method + " is not a function"); + } + if (isString(method)) { + return function () { + var func = scope[method]; + if (isFunction(func)) { + return spreadArgs(func, args, scope); + } else { + return func; + } + }; + } else { + return function () { + return spreadArgs(method, args, scope); + }; + } + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/** - * @module refresh-rules-emissions - * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks - * Creates or updates one task document per unique emission id - * Cancels task documents in non-terminal states if they were not emitted - * - * @requires rules-emitter to be initialized - */ + function hitchAll(scope) { + var funcs = argsToArray(arguments, 1); + if (!isObject(scope) && !isFunction(scope)) { + throw new TypeError("scope must be an object"); + } + if (funcs.length === 1 && isArray(funcs[0])) { + funcs = funcs[0]; + } + if (!funcs.length) { + funcs = []; + for (var k in scope) { + if (scope.hasOwnProperty(k) && isFunction(scope[k])) { + funcs.push(k); + } + } + } + for (var i = 0, l = funcs.length; i < l; i++) { + scope[funcs[i]] = hitch(scope, scope[funcs[i]]); + } + return scope; + } -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js"); -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); -const transformTaskEmissionToDoc = __webpack_require__(/*! ./transform-task-emission-to-doc */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js"); -/** - * @param {Object[]} freshData.contactDocs A set of contact documents - * @param {Object[]} freshData.reportDocs All of the contacts' reports - * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact) - * @param {Object[]} freshData.userSettingsId The id of the user's settings document - * - * @param {int} calculationTimestamp Timestamp for the round of rules calculations - * - * @param {Object=} [options] Options for the behavior when refreshing rules - * @param {Boolean} [options.enableTasks=true] Flag to enable tasks - * @param {Boolean} [options.enableTargets=true] Flag to enable targets - * - * @returns {Object} result - * @returns {Object[]} result.targetEmissions Array of raw target emissions - * @returns {Object[]} result.updatedTaskDocs Array of updated task documents - */ -module.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => { - const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData; - return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs) - .then(emissions => Promise.all([ - enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [], - enableTargets ? emissions.targets : [], - ])) - .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions })); -}; + function partial(method, args) { + args = argsToArray(arguments, 1); + if (!isString(method) && !isFunction(method)) { + throw new Error(method + " must be the name of a property or function to execute"); + } + if (isString(method)) { + return function () { + var func = this[method]; + if (isFunction(func)) { + var scopeArgs = args.concat(argsToArray(arguments)); + return spreadArgs(func, scopeArgs, this); + } else { + return func; + } + }; + } else { + return function () { + var scopeArgs = args.concat(argsToArray(arguments)); + return spreadArgs(method, scopeArgs, this); + }; + } + } -const getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => { - const { taskDocs = [], userSettingsId } = freshData; - const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs( - taskDocs, - calculationTimestamp - ); + function curryFunc(f, execute) { + return function () { + var args = argsToArray(arguments); + return execute ? spreadArgs(f, arguments, this) : function () { + return spreadArgs(f, args.concat(argsToArray(arguments)), this); + }; + }; + } - const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp)); - const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp) - .map(taskEmission => { - const existingDoc = emissionIdToLatestDocMap[taskEmission._id]; - return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc); - }); - const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc); - const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp); - const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp); - const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc); - return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs]; -}; + function curry(depth, cb, scope) { + var f; + if (scope) { + f = hitch(scope, cb); + } else { + f = cb; + } + if (depth) { + var len = depth - 1; + for (var i = len; i >= 0; i--) { + f = curryFunc(f, i === len); + } + } + return f; + } -/** - * Examine the existing task documents which were previously emitted by the same contact - * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive - */ -const getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => { - const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state)); - const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id)); + return extended + .define(isObject, { + bind: hitch, + bindAll: hitchAll, + bindIgnore: hitchIgnore, + curry: function (scope, depth, fn) { + return curry(depth, fn, scope); + } + }) + .define(isFunction, { + bind: function (fn, obj) { + return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this); + }, + bindIgnore: function (fn, obj) { + return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this); + }, + partial: partial, + applyFirst: applyFirst, + curry: function (fn, num, scope) { + return curry(num, fn, scope); + }, + noWrap: { + f: function () { + return this.value(); + } + } + }) + .define(isString, { + bind: function (str, scope) { + return hitch(scope, str); + }, + bindIgnore: function (str, scope) { + return hitchIgnore(scope, str); + }, + partial: partial, + applyFirst: applyFirst, + curry: function (fn, depth, scope) { + return curry(depth, fn, scope); + } + }) + .expose({ + bind: hitch, + bindAll: hitchAll, + bindIgnore: hitchIgnore, + partial: partial, + applyFirst: applyFirst, + curry: curry + }); - return existingNonTerminalTaskDocs - .filter(doc => !currentEmissionIds.has(doc.emission._id)) - .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt)); -}; + } -/** - * All duplicate task docs that are not in a terminal state are "Cancelled" with a "duplicate" reason - * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB - * @param {number} calculatedAt - Timestamp for the round of rules calculations - * @returns {Array} - task docs with updated state - */ -const getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => { - return duplicatedTaskDocs - .filter(doc => !TaskStates.isTerminal(doc.state)) - .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate')); -}; + if (true) { + if ( true && module.exports) { + module.exports = defineFunction(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); -/* -It is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner. -We pick the "most ready" emission. -*/ -const disambiguateEmissions = (taskEmissions, forTime) => { - const winners = taskEmissions.reduce((agg, emission) => { - if (!agg[emission._id]) { - agg[emission._id] = emission; - } else { - const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled; - const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled; - if (TaskStates.isMoreReadyThan(incomingState, currentState)) { - agg[emission._id] = emission; - } - } - return agg; - }, {}); + } + } else {} - return Object.keys(winners).map(key => winners[key]); // Object.values() -}; +}).call(this); -/** - * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in - * on multiple devices). When this happens, we pick the "most ready" most recent task. However, tasks that are authored - * in the future are discarded. - * @param {Array} taskDocs - An array of already exiting task documents - * @param {number} forTime - current calculation timestamp - * @returns {Object} result - * @returns {Object} result.winners - A map of emission id to task pairs - * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled - */ -const disambiguateTaskDocs = (taskDocs, forTime) => { - const duplicates = []; - const winners = {}; - const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime); - Object.keys(taskDocsByEmissionId).forEach(emissionId => { - taskDocsByEmissionId[emissionId].forEach(taskDoc => { - if (!winners[emissionId]) { - winners[emissionId] = taskDoc; - return; - } - const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state); - if ( - // if taskDoc is more ready - stateComparison < 0 || - // or taskDoc is more recent, when having the same state - (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn) - ) { - duplicates.push(winners[emissionId]); - winners[emissionId] = taskDoc; - } else { - duplicates.push(taskDoc); - } - }); - }); - return { winners, duplicates }; -}; -const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { - const tasksByEmission = {}; - taskDocs - // mitigate the fallout of a user who rewinds their system-clock after creating task docs - .filter(doc => doc.authoredOn <= maxTimestamp) - .forEach(doc => { - const emissionId = doc.emission._id; - if (!tasksByEmission[emissionId]) { - tasksByEmission[emissionId] = []; - } - tasksByEmission[emissionId].push(doc); - }); - return tasksByEmission; -}; /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js": -/*!**********************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js ***! - \**********************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/** - * @module rules-emitter - * Encapsulates interactions with the nools library - * Handles marshaling of documents into nools facts - * Promisifies the execution of partner "rules" code - * Ensures memory allocated by nools is freed after each run - */ -const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js"); -const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js ***! + \**************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { -let flow; +(function () { + "use strict"; -/** -* Sets the rules emitter to an uninitialized state. -*/ -const shutdown = () => { - nools.deleteFlows(); - flow = undefined; -}; + function defineHt(_) { -module.exports = { - /** - * Initializes the rules emitter - * - * @param {Object} settings Settings for the behavior of the rules emitter - * @param {Object} settings.rules Rules code from settings doc - * @param {Object[]} settings.taskSchedules Task schedules from settings doc - * @param {Object} settings.contact The logged in user's contact document - * @returns {Boolean} Success - */ - initialize: (settings) => { - if (flow) { - throw Error('Attempted to initialize the rules emitter multiple times.'); - } - if (!settings.rules) { - return false; - } + var hashFunction = function (key) { + if (typeof key === "string") { + return key; + } else if (typeof key === "object") { + return key.hashCode ? key.hashCode() : "" + key; + } else { + return "" + key; + } + }; - shutdown(); + var Bucket = _.declare({ - try { - const settingsDoc = { tasks: { schedules: settings.taskSchedules } }; - const nootilsInstance = nootils(settingsDoc); - flow = nools.compile(settings.rules, { - name: 'medic', - scope: { - Utils: nootilsInstance, - user: settings.contact, - }, - }); - } catch (err) { - shutdown(); - throw err; - } + instance: { - return !!flow; - }, + constructor: function () { + this.__entries = []; + this.__keys = []; + this.__values = []; + }, - /** - * When upgrading to version 3.8, partners are required to make schema changes in their partner code - * TODO: Add link to documentation - * - * @returns True if the schema changes are in place - */ - isLatestNoolsSchema: () => { - if (!flow) { - throw Error('task emitter is not enabled -- cannot determine schema version'); - } + pushValue: function (key, value) { + this.__keys.push(key); + this.__values.push(value); + this.__entries.push({key: key, value: value}); + return value; + }, - const Task = flow.getDefined('task'); - const Target = flow.getDefined('target'); - const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr); - return hasProperty(Task.prototype, 'readyStart') && - hasProperty(Task.prototype, 'readyEnd') && - hasProperty(Target.prototype, 'contact'); - }, + remove: function (key) { + var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values; + var i = map.length - 1; + for (; i >= 0; i--) { + if (!!(val = map[i]) && val.key === key) { + map.splice(i, 1); + keys.splice(i, 1); + vals.splice(i, 1); + return val.value; + } + } + return ret; + }, - /** - * Runs the partner's rules code for a set of documents and returns all emissions from nools - * - * @param {Object[]} contactDocs A set of contact documents - * @param {Object[]} reportDocs All of the contacts' reports - * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact) - * - * @returns {Promise} emissions The raw emissions from nools - * @returns {Object[]} emissions.tasks Array of task emissions - * @returns {Object[]} emissions.targets Array of target emissions - */ - getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => { - if (!flow) { - throw Error('task emitter is not enabled -- cannot get emissions'); - } + "set": function (key, value) { + var ret = null, map = this.__entries, vals = this.__values; + var i = map.length - 1; + for (; i >= 0; i--) { + var val = map[i]; + if (val && key === val.key) { + vals[i] = value; + val.value = value; + ret = value; + break; + } + } + if (!ret) { + map.push({key: key, value: value}); + } + return ret; + }, - if (!Array.isArray(contactDocs)) { - throw Error('invalid argument: contactDocs is expected to be an array'); - } + find: function (key) { + var ret = null, map = this.__entries, val; + var i = map.length - 1; + for (; i >= 0; i--) { + val = map[i]; + if (val && key === val.key) { + ret = val.value; + break; + } + } + return ret; + }, - if (!Array.isArray(reportDocs)) { - throw Error('invalid argument: reportDocs is expected to be an array'); - } + getEntrySet: function () { + return this.__entries; + }, - if (!Array.isArray(taskDocs)) { - throw Error('invalid argument: taskDocs is expected to be an array'); - } + getKeys: function () { + return this.__keys; + }, - const session = startSession(); - try { - const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs); - facts.forEach(session.assert); - } catch (err) { - session.dispose(); - throw err; - } + getValues: function (arr) { + return this.__values; + } + } + }); - return session.match(); - }, + return _.declare({ - /** - * @returns True if the rules emitter is initialized and ready for use - */ - isEnabled: () => !!flow, + instance: { - shutdown, -}; + constructor: function () { + this.__map = {}; + }, -const startSession = function() { - if (!flow) { - throw Error('Failed to start task session. Not initialized'); - } + entrySet: function () { + var ret = [], map = this.__map; + for (var i in map) { + if (map.hasOwnProperty(i)) { + ret = ret.concat(map[i].getEntrySet()); + } + } + return ret; + }, - const session = flow.getSession(); - const tasks = []; - const targets = []; - session.on('task', task => tasks.push(task)); - session.on('target', target => targets.push(target)); + put: function (key, value) { + var hash = hashFunction(key); + var bucket = null; + if (!(bucket = this.__map[hash])) { + bucket = (this.__map[hash] = new Bucket()); + } + bucket.pushValue(key, value); + return value; + }, - return { - assert: session.assert.bind(session), - dispose: session.dispose.bind(session), + remove: function (key) { + var hash = hashFunction(key), ret = null; + var bucket = this.__map[hash]; + if (bucket) { + ret = bucket.remove(key); + } + return ret; + }, - // session.match can return a thenable but not a promise. so wrap it in a real promise - match: () => new Promise((resolve, reject) => { - session.match(err => { - session.dispose(); - if (err) { - return reject(err); - } + "get": function (key) { + var hash = hashFunction(key), ret = null, bucket; + if (!!(bucket = this.__map[hash])) { + ret = bucket.find(key); + } + return ret; + }, - resolve({ tasks, targets }); - }); - }), - }; -}; + "set": function (key, value) { + var hash = hashFunction(key), ret = null, bucket = null, map = this.__map; + if (!!(bucket = map[hash])) { + ret = bucket.set(key, value); + } else { + ret = (map[hash] = new Bucket()).pushValue(key, value); + } + return ret; + }, -const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { - const Contact = flow.getDefined('contact'); + contains: function (key) { + var hash = hashFunction(key), ret = false, bucket = null; + if (!!(bucket = this.__map[hash])) { + ret = !!(bucket.find(key)); + } + return ret; + }, - const factByContactId = contactDocs.reduce((agg, contact) => { - agg[contact._id] = new Contact({ contact, reports: [], tasks: [] }); - return agg; - }, {}); + concat: function (hashTable) { + if (hashTable instanceof this._static) { + var ret = new this._static(); + var otherEntrySet = hashTable.entrySet().concat(this.entrySet()); + for (var i = otherEntrySet.length - 1; i >= 0; i--) { + var e = otherEntrySet[i]; + ret.put(e.key, e.value); + } + return ret; + } else { + throw new TypeError("When joining hashtables the joining arg must be a HashTable"); + } + }, - const factBySubjectId = contactDocs.reduce((agg, contactDoc) => { - const subjectIds = registrationUtils.getSubjectIds(contactDoc); - for (const subjectId of subjectIds) { - if (!agg[subjectId]) { - agg[subjectId] = factByContactId[contactDoc._id]; - } - } - return agg; - }, {}); + filter: function (cb, scope) { + var es = this.entrySet(), ret = new this._static(); + es = _.filter(es, cb, scope); + for (var i = es.length - 1; i >= 0; i--) { + var e = es[i]; + ret.put(e.key, e.value); + } + return ret; + }, - const addHeadlessContact = (contactId) => { - const contact = contactId ? { _id: contactId } : undefined; - const newFact = new Contact({ contact, reports: [], tasks: [] }); - factByContactId[contactId] = factBySubjectId[contactId] = newFact; - return newFact; - }; + forEach: function (cb, scope) { + var es = this.entrySet(); + _.forEach(es, cb, scope); + }, - for (const report of reportDocs) { - const subjectIdInReport = registrationUtils.getSubjectId(report); - const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport); - factOfPatient.reports.push(report); - } + every: function (cb, scope) { + var es = this.entrySet(); + return _.every(es, cb, scope); + }, - if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) { - for (const task of taskDocs) { - const sourceId = task.requester; - const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId); - factOfPatient.tasks.push(task); - } - } + map: function (cb, scope) { + var es = this.entrySet(); + return _.map(es, cb, scope); + }, + some: function (cb, scope) { + var es = this.entrySet(); + return _.some(es, cb, scope); + }, - return Object.keys(factByContactId).map(key => { - factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date); - return factByContactId[key]; - }); // Object.values(factByContactId) -}; + reduce: function (cb, scope) { + var es = this.entrySet(); + return _.reduce(es, cb, scope); + }, + reduceRight: function (cb, scope) { + var es = this.entrySet(); + return _.reduceRight(es, cb, scope); + }, -/***/ }), + clear: function () { + this.__map = {}; + }, -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js": -/*!**************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js ***! - \**************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + keys: function () { + var ret = [], map = this.__map; + for (var i in map) { + //if (map.hasOwnProperty(i)) { + ret = ret.concat(map[i].getKeys()); + //} + } + return ret; + }, -/** - * @module rules-state-store - * In-memory datastore containing - * 1. Details on the state of each contact's rules calculations - * 2. Target emissions @see target-state - */ -const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); -const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js"); + values: function () { + var ret = [], map = this.__map; + for (var i in map) { + //if (map.hasOwnProperty(i)) { + ret = ret.concat(map[i].getValues()); + //} + } + return ret; + }, -const EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000; -let state; -let currentUserContact; -let currentUserSettings; -let onStateChange; + isEmpty: function () { + return this.keys().length === 0; + } + } -const self = { - /** - * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state. - * - * @param {Object} existingState State object previously passed to the stateChangeCallback - * @param {Object} settings Settings for the behavior of the rules store - * @param {Object} settings.contact User's hydrated contact document - * @param {Object} settings.user User's user-settings document - * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes. - * Receives the updated state as the only parameter. - * @returns {Boolean} that represents whether or not the state needs to be rebuilt - */ - load: (existingState, settings, stateChangeCallback) => { - if (state) { - throw Error('Attempted to initialize the rules-state-store multiple times.'); - } + }); - state = existingState; - currentUserContact = settings.contact; - currentUserSettings = settings.user; - setOnChangeState(stateChangeCallback); - const rulesConfigHash = hashRulesConfig(settings); - if (state && state.rulesConfigHash !== rulesConfigHash) { - state.stale = true; } - return !state || state.stale; - }, + if (true) { + if ( true && module.exports) { + module.exports = defineHt(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")().register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")).register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")).register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js"))); - /** - * Initializes an empty rules-state-store. - * - * @param {Object} settings Settings for the behavior of the rules store - * @param {Object} settings.contact User's hydrated contact document - * @param {Object} settings.user User's user-settings document - * @param {number} settings.monthStartDate reporting interval start date - * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes. - * Receives the updated state as the only parameter. - */ - build: (settings, stateChangeCallback) => { - if (state && !state.stale) { - throw Error('Attempted to initialize the rules-state-store multiple times.'); - } + } + } else {} - state = { - rulesConfigHash: hashRulesConfig(settings), - contactState: {}, - targetState: targetState.createEmptyState(settings.targets), - monthStartDate: settings.monthStartDate, - }; - currentUserContact = settings.contact; - currentUserSettings = settings.user; +}).call(this); - setOnChangeState(stateChangeCallback); - return onStateChange(state); - }, - /** - * "Dirty" indicates that the contact's task documents are not up to date. They should be refreshed before being used. - * - * The dirty state can be due to: - * 1. The time of a contact's most recent task calculation is unknown - * 2. The contact's most recent task calculation expires - * 3. The contact is explicitly marked as dirty - * 4. Configurations impacting rules calculations have changed - * - * @param {string} contactId The id of the contact to test for dirtiness - * @returns {Boolean} True if dirty - */ - isDirty: contactId => { - if (!state.contactState[contactId]) { - return true; - } - const now = Date.now(); - const { calculatedAt, expireAt, isDirty } = state.contactState[contactId]; - return !expireAt || - isDirty || - calculatedAt > now || /* system clock changed */ - expireAt < now; /* isExpired */ - }, - /** - * Determines if either the settings document or user's hydrated contact document have changed in a way which - * will impact the result of rules calculations. - * If they have changed in a meaningful way, the calculation state of all contacts is reset - * - * @param {Object} settings Settings for the behavior of the rules store - * @returns {Boolean} True if the state of all contacts has been reset - */ - rulesConfigChange: (settings) => { - const rulesConfigHash = hashRulesConfig(settings); - if (state.rulesConfigHash !== rulesConfigHash) { - state = { - rulesConfigHash, - contactState: {}, - targetState: targetState.createEmptyState(settings.targets), - monthStartDate: settings.monthStartDate, - }; - currentUserContact = settings.contact; - currentUserSettings = settings.user; - onStateChange(state); - return true; - } - return false; - }, - /** - * @param {int} calculatedAt Timestamp of the calculation - * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated - */ - markFresh: (calculatedAt, contactIds) => { - if (!Array.isArray(contactIds)) { - contactIds = [contactIds]; - } - contactIds = contactIds.filter(id => id); - if (contactIds.length === 0) { - return; - } +/***/ }), - const reportingInterval = calendarInterval.getCurrent(state.monthStartDate); - const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js ***! + \*********************************************************************************************/ +/***/ ((module) => { - for (const contactId of contactIds) { - state.contactState[contactId] = { - calculatedAt, - expireAt: Math.min(reportingInterval.end, defaultExpiry), - }; - } +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ - return onStateChange(state); - }, +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} - /** - * @param {string[]} contactIds Array of contact ids to be marked as dirty - */ - markDirty: contactIds => { - if (!Array.isArray(contactIds)) { - contactIds = [contactIds]; - } - contactIds = contactIds.filter(id => id); +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} - if (contactIds.length === 0) { - return; - } +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} - for (const contactId of contactIds) { - if (!state.contactState[contactId]) { - state.contactState[contactId] = {}; - } - state.contactState[contactId].isDirty = true; - } +/***/ }), - return onStateChange(state); - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js ***! + \***********************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - /** - * @returns {string[]} The id of all contacts tracked by the store - */ - getContactIds: () => Object.keys(state.contactState), +(function () { + "use strict"; - /** - * The rules system supports the concept of "headless" reports and "headless" task documents. In these scenarios, - * a report exists on a user's device while the associated contact document of that report is not on the device. - * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the - * needs_signoff attribute but not the associated patient. - * - * In these cases, getting a list of "all the contacts with rules" requires us to look not just through contact - * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which - * indicates if the contact ids in the store can serve as a trustworthy authority. - * - * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with - * rules - */ - markAllFresh: (calculatedAt, contactIds) => { - state.allContactIds = true; - return self.markFresh(calculatedAt, contactIds); - }, + function defineIsa(extended) { - /** - * @returns True if markAllFresh has been called on the current store state. - */ - hasAllContacts: () => !!state.allContactIds, + var pSlice = Array.prototype.slice; - /** - * @returns {string} User contact document - */ - currentUserContact: () => currentUserContact, + var hasOwn = Object.prototype.hasOwnProperty; + var toStr = Object.prototype.toString; - /** - * @returns {string} User settings document - */ - currentUserSettings: () => currentUserSettings, + function argsToArray(args, slice) { + var i = -1, j = 0, l = args.length, ret = []; + slice = slice || 0; + i += slice; + while (++i < l) { + ret[j++] = args[i]; + } + return ret; + } - /** - * @returns {number} The timestamp when the current loaded state was last updated - */ - stateLastUpdatedAt: () => state.calculatedAt, + function keys(obj) { + var ret = []; + for (var i in obj) { + if (hasOwn.call(obj, i)) { + ret.push(i); + } + } + return ret; + } - /** - * @returns {number} current monthStartDate - */ - getMonthStartDate: () => state.monthStartDate, + //taken from node js assert.js + //https://github.com/joyent/node/blob/master/lib/assert.js + function deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; - /** - * @returns {boolean} whether or not the state is loaded - */ - isLoaded: () => !!state, + } else if (typeof Buffer !== "undefined" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { + if (actual.length !== expected.length) { + return false; + } + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) { + return false; + } + } + return true; - /** - * Store a set of target emissions which were emitted by refreshing a set of contacts - * - * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed. - * If undefined, all contacts are updated. - * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter). - */ - storeTargetEmissions: (contactIds, targetEmissions) => { - const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions); - if (isUpdated) { - return onStateChange(state); - } - }, + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (isDate(actual) && isDate(expected)) { + return actual.getTime() === expected.getTime(); - /** - * Aggregates the stored target emissions into target models - * - * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should - * be aggregated - * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf()) - * - * @returns {Object[]} result - * @returns {string} result[n].* All attributes of the target as defined in the settings doc - * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter - * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the - * latest emission with truthy "pass" - * @returns {Integer} result[n].percent The percentage of pass/total - */ - aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions( - state.targetState, - targetEmissionFilter - ), + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (isRegExp(actual) && isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; - /** - * Returns a list of UUIDs of tracked contacts that are marked as dirty - * @returns {Array} list of dirty contacts UUIDs - */ - getDirtyContacts: () => self.getContactIds().filter(self.isDirty), -}; + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (isString(actual) && isString(expected) && actual !== expected) { + return false; + } else if (typeof actual !== 'object' && typeof expected !== 'object') { + return actual === expected; -const hashRulesConfig = (settings) => { - const asString = JSON.stringify(settings); - return md5(asString); -}; + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } + } -const setOnChangeState = (stateChangeCallback) => { - onStateChange = (state) => { - state.calculatedAt = new Date().getTime(); - if (stateChangeCallback && typeof stateChangeCallback === 'function') { - return stateChangeCallback(state); - } - }; -}; + function objEquiv(a, b) { + var key; + if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { + return false; + } + // an identical 'prototype' property. + if (a.prototype !== b.prototype) { + return false; + } + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return deepEqual(a, b); + } + try { + var ka = keys(a), + kb = keys(b), + i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) { + return false; + } + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) { + return false; + } + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!deepEqual(a[key], b[key])) { + return false; + } + } + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + return true; + } -// ensure all exported functions are only ever called after initialization -module.exports = Object.keys(self).reduce((agg, key) => { - agg[key] = (...args) => { - if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) { - throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`); - } - return self[key](...args); - }; - return agg; -}, {}); + var isFunction = function (obj) { + return toStr.call(obj) === '[object Function]'; + }; + //ie hack + if ("undefined" !== typeof window && !isFunction(window.alert)) { + (function (alert) { + isFunction = function (obj) { + return toStr.call(obj) === '[object Function]' || obj === alert; + }; + }(window.alert)); + } -/***/ }), + function isObject(obj) { + var undef; + return obj !== null && typeof obj === "object"; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js ***! - \*********************************************************************************/ -/***/ ((module) => { + function isHash(obj) { + var ret = isObject(obj); + return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval; + } -/** - * @module target-state - * - * Stores raw target-emissions in a minified, efficient, deterministic structure - * Handles removal of "cancelled" target emissions - * Aggregates target emissions into targets - */ + function isEmpty(object) { + if (isArguments(object)) { + return object.length === 0; + } else if (isObject(object)) { + return keys(object).length === 0; + } else if (isString(object) || isArray(object)) { + return object.length === 0; + } + return true; + } -/** @summary state - * Functions in this module all accept a "state" parameter or return a "state" object. - * This state has the following structure: - * - * @example - * { - * target.id: { - * id: 'target_id', - * type: 'count', - * goal: 0, - * .. - * - * emissions: { - * emission.id: { - * requestor.id: { - * pass: boolean, - * date: timestamp, - * order: timestamp, - * }, - * .. - * }, - * .. - * } - * }, - * .. - * } - */ + function isBoolean(obj) { + return obj === true || obj === false || toStr.call(obj) === "[object Boolean]"; + } -module.exports = { - /** - * Builds an empty target-state. - * - * @param {Object[]} targets An array of target definitions - */ - createEmptyState: (targets=[]) => { - return targets - .reduce((agg, definition) => { - agg[definition.id] = Object.assign({}, definition, { emissions: {} }); - return agg; - }, {}); - }, + function isUndefined(obj) { + return typeof obj === 'undefined'; + } - storeTargetEmissions: (state, contactIds, targetEmissions) => { - let isUpdated = false; - if (!Array.isArray(targetEmissions)) { - throw Error('targetEmissions argument must be an array'); - } + function isDefined(obj) { + return !isUndefined(obj); + } - // Remove all emissions that were previously emitted by the contact ("cancelled emissions") - if (!contactIds) { - for (const targetId of Object.keys(state)) { - state[targetId].emissions = {}; - } - } else { - for (const contactId of contactIds) { - for (const targetId of Object.keys(state)) { - for (const emissionId of Object.keys(state[targetId].emissions)) { - const emission = state[targetId].emissions[emissionId]; - if (emission[contactId]) { - delete emission[contactId]; - isUpdated = true; - } - } + function isUndefinedOrNull(obj) { + return isUndefined(obj) || isNull(obj); } - } - } - // Merge the emission data into state - for (const emission of targetEmissions) { - const target = state[emission.type]; - const requestor = emission.contact && emission.contact._id; - if (target && requestor && !emission.deleted) { - const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {}; - targetRequestors[requestor] = { - pass: !!emission.pass, - groupBy: emission.groupBy, - date: emission.date, - order: emission.contact.reported_date || -1, - }; - isUpdated = true; - } - } + function isNull(obj) { + return obj === null; + } - return isUpdated; - }, - aggregateStoredTargetEmissions: (state, targetEmissionFilter) => { - const pick = (obj, attrs) => attrs - .reduce((agg, attr) => { - if (Object.hasOwnProperty.call(obj, attr)) { - agg[attr] = obj[attr]; + var isArguments = function _isArguments(object) { + return toStr.call(object) === '[object Arguments]'; + }; + + if (!isArguments(arguments)) { + isArguments = function _isArguments(obj) { + return !!(obj && hasOwn.call(obj, "callee")); + }; } - return agg; - }, {}); - const scoreTarget = target => { - const emissionIds = Object.keys(target.emissions); - const relevantEmissions = emissionIds - // emissions passing the "targetEmissionFilter" - .map(emissionId => { - const requestorIds = Object.keys(target.emissions[emissionId]); - const filteredInstanceIds = requestorIds.filter(requestorId => { - return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]); - }); - return pick(target.emissions[emissionId], filteredInstanceIds); - }) - // if there are multiple emissions with the same id emitted by different contacts, disambiguate them - .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor)) - .filter(emission => emission); + function isInstanceOf(obj, clazz) { + if (isFunction(clazz)) { + return obj instanceof clazz; + } else { + return false; + } + } - const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte; - if (!passingThreshold) { - return { - pass: relevantEmissions.filter(emission => emission.pass).length, - total: relevantEmissions.length, - }; - } + function isRegExp(obj) { + return toStr.call(obj) === '[object RegExp]'; + } - const countEmissionsByGroup = relevantEmissions - .filter(emission => emission.groupBy) - .reduce((agg, curr) => { - if (!agg[curr.groupBy]) { - agg[curr.groupBy] = 0; - } + var isArray = Array.isArray || function isArray(obj) { + return toStr.call(obj) === "[object Array]"; + }; - agg[curr.groupBy]++; - return agg; - }, {}); + function isDate(obj) { + return toStr.call(obj) === '[object Date]'; + } - const groups = Object.keys(countEmissionsByGroup); - return { - pass: groups.filter(group => countEmissionsByGroup[group] >= passingThreshold).length, - total: groups.length, - }; - }; + function isString(obj) { + return toStr.call(obj) === '[object String]'; + } - const aggregateTarget = target => { - const aggregated = pick( - target, - ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible'] - ); - aggregated.value = scoreTarget(target); + function isNumber(obj) { + return toStr.call(obj) === '[object Number]'; + } - if (aggregated.type === 'percent') { - aggregated.value.percent = aggregated.value.total ? - Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0; - } + function isTrue(obj) { + return obj === true; + } - return aggregated; - }; + function isFalse(obj) { + return obj === false; + } - const emissionOfLatestRequestor = emissionsByRequestor => { - return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => { - const current = emissionsByRequestor[requestorId]; - if (!previousValue || !previousValue.order || current.order > previousValue.order) { - return current; + function isNotNull(obj) { + return !isNull(obj); } - return previousValue; - }, undefined); - }; - return Object.keys(state).map(targetId => aggregateTarget(state[targetId])); - }, -}; + function isEq(obj, obj2) { + /*jshint eqeqeq:false*/ + return obj == obj2; + } + function isNeq(obj, obj2) { + /*jshint eqeqeq:false*/ + return obj != obj2; + } -/***/ }), + function isSeq(obj, obj2) { + return obj === obj2; + } -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js": -/*!********************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js ***! - \********************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + function isSneq(obj, obj2) { + return obj !== obj2; + } -/** - * @module task-states - * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine - */ + function isIn(obj, arr) { + if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) { + return arr.indexOf(obj) > -1; + } else if (isArray(arr)) { + for (var i = 0, l = arr.length; i < l; i++) { + if (isEq(obj, arr[i])) { + return true; + } + } + } + return false; + } -const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); + function isNotIn(obj, arr) { + return !isIn(obj, arr); + } -/** - * Problems: - * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading - * to this rules-engine. - * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged. - * The two scenarios above are important for maintaining the client-side performance of the app. - * - * Therefore, we only consider task emissions "timely" if they end within a fixed time period. - * However, if this window is too short then users who don't login frequently may fail to create a task document at all. - * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are - * recorded as docs. - */ -const TIMELY_WHEN_NEWER_THAN_DAYS = 60; + function isLt(obj, obj2) { + return obj < obj2; + } -// This must be a comparable string format to avoid a bunch of parsing. For example, "2000-01-01" < "2010-11-31" -const formatString = 'YYYY-MM-DD'; + function isLte(obj, obj2) { + return obj <= obj2; + } -const States = { - /** - * Task has been calculated but it is scheduled in the future - */ - Draft: 'Draft', + function isGt(obj, obj2) { + return obj > obj2; + } - /** - * Task is currently showing to the user - */ - Ready: 'Ready', + function isGte(obj, obj2) { + return obj >= obj2; + } - /** - * Task was not emitted when refreshing the contact - * Task resulted from invalid emissions - */ - Cancelled: 'Cancelled', + function isLike(obj, reg) { + if (isString(reg)) { + return ("" + obj).match(reg) !== null; + } else if (isRegExp(reg)) { + return reg.test(obj); + } + return false; + } - /** - * Task was emitted with { resolved: true } - */ - Completed: 'Completed', + function isNotLike(obj, reg) { + return !isLike(obj, reg); + } - /** - * Task was never terminated and is now outside the allowed time window - */ - Failed: 'Failed', -}; + function contains(arr, obj) { + return isIn(obj, arr); + } -const getDisplayWindow = (taskEmission) => { - const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate; - if (hasExistingDisplayWindow) { - return { - dueDate: taskEmission.dueDate, - startDate: taskEmission.startDate, - endDate: taskEmission.endDate, - }; - } + function notContains(arr, obj) { + return !isIn(obj, arr); + } - const dueDate = moment(taskEmission.date); - if (!dueDate.isValid()) { - return { dueDate: NaN, startDate: NaN, endDate: NaN }; - } + function containsAt(arr, obj, index) { + if (isArray(arr) && arr.length > index) { + return isEq(arr[index], obj); + } + return false; + } - return { - dueDate: dueDate.format(formatString), - startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString), - endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString), - }; -}; + function notContainsAt(arr, obj, index) { + if (isArray(arr)) { + return !isEq(arr[index], obj); + } + return false; + } -const mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled]; -const orderOf = state => { - const order = mostReadyOrder.indexOf(state); - return order >= 0 ? order : mostReadyOrder.length; -}; + function has(obj, prop) { + return hasOwn.call(obj, prop); + } -module.exports = { - isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state), + function notHas(obj, prop) { + return !has(obj, prop); + } - isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB), + function length(obj, l) { + if (has(obj, "length")) { + return obj.length === l; + } + return false; + } - compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB), + function notLength(obj, l) { + if (has(obj, "length")) { + return obj.length !== l; + } + return false; + } - calculateState: (taskEmission, timestamp) => { - if (!taskEmission) { - return false; - } + var isa = { + isFunction: isFunction, + isObject: isObject, + isEmpty: isEmpty, + isHash: isHash, + isNumber: isNumber, + isString: isString, + isDate: isDate, + isArray: isArray, + isBoolean: isBoolean, + isUndefined: isUndefined, + isDefined: isDefined, + isUndefinedOrNull: isUndefinedOrNull, + isNull: isNull, + isArguments: isArguments, + instanceOf: isInstanceOf, + isRegExp: isRegExp, + deepEqual: deepEqual, + isTrue: isTrue, + isFalse: isFalse, + isNotNull: isNotNull, + isEq: isEq, + isNeq: isNeq, + isSeq: isSeq, + isSneq: isSneq, + isIn: isIn, + isNotIn: isNotIn, + isLt: isLt, + isLte: isLte, + isGt: isGt, + isGte: isGte, + isLike: isLike, + isNotLike: isNotLike, + contains: contains, + notContains: notContains, + has: has, + notHas: notHas, + isLength: length, + isNotLength: notLength, + containsAt: containsAt, + notContainsAt: notContainsAt + }; - if (taskEmission.resolved) { - return States.Completed; - } + var tester = { + constructor: function () { + this._testers = []; + }, - if (taskEmission.deleted) { - return States.Cancelled; - } + noWrap: { + tester: function () { + var testers = this._testers; + return function tester(value) { + var isa = false; + for (var i = 0, l = testers.length; i < l && !isa; i++) { + isa = testers[i](value); + } + return isa; + }; + } + } + }; - // invalid data yields falsey - if (!taskEmission.date && !taskEmission.dueDate) { - return false; - } + var switcher = { + constructor: function () { + this._cases = []; + this.__default = null; + }, - const { startDate, endDate } = getDisplayWindow(taskEmission); - if (!startDate || !endDate || startDate > endDate || endDate < startDate) { - return false; - } + def: function (val, fn) { + this.__default = fn; + }, - const timestampAsDate = moment(timestamp).format(formatString); - if (startDate > timestampAsDate) { - return States.Draft; - } + noWrap: { + switcher: function () { + var testers = this._cases, __default = this.__default; + return function tester() { + var handled = false, args = argsToArray(arguments), caseRet; + for (var i = 0, l = testers.length; i < l && !handled; i++) { + caseRet = testers[i](args); + if (caseRet.length > 1) { + if (caseRet[1] || caseRet[0]) { + return caseRet[1]; + } + } + } + if (!handled && __default) { + return __default.apply(this, args); + } + }; + } + } + }; - if (endDate < timestampAsDate) { - return States.Failed; - } + function addToTester(func) { + tester[func] = function isaTester() { + this._testers.push(isa[func]); + }; + } - return States.Ready; - }, + function addToSwitcher(func) { + switcher[func] = function isaTester() { + var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true; + if (args.length <= isFunc.length - 1) { + throw new TypeError("A handler must be defined when calling using switch"); + } else { + handler = args.pop(); + if (isBoolean(handler)) { + doBreak = handler; + handler = args.pop(); + } + } + if (!isFunction(handler)) { + throw new TypeError("handler must be defined"); + } + this._cases.push(function (testArgs) { + if (isFunc.apply(isa, testArgs.concat(args))) { + return [doBreak, handler.apply(this, testArgs)]; + } + return [false]; + }); + }; + } - getDisplayWindow, + for (var i in isa) { + if (hasOwn.call(isa, i)) { + addToSwitcher(i); + addToTester(i); + } + } - isTimely: (taskEmission, timestamp) => { - const { endDate } = getDisplayWindow(taskEmission); - return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString); - }, + var is = extended.define(isa).expose(isa); + is.tester = extended.define(tester); + is.switcher = extended.define(switcher); + return is; - setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => { - if (!taskDoc) { - return; } - if (!updatedState) { - taskDoc.state = States.Cancelled; - taskDoc.stateReason = 'invalid'; - } else { - taskDoc.state = updatedState; - if (reason) { - taskDoc.stateReason = reason; - } - } + if (true) { + if ( true && module.exports) { + module.exports = defineIsa(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")); - const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || []; - const mostRecentState = stateHistory[stateHistory.length - 1]; - if (!mostRecentState || taskDoc.state !== mostRecentState.state) { - const stateChange = { state: taskDoc.state, timestamp }; - stateHistory.push(stateChange); - } + } + } else {} - return taskDoc; - }, -}; +}).call(this); -Object.assign(module.exports, States); /***/ }), -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js ***! - \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js ***! + \*****************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { -/** - * @module transform-task-emission-to-doc - * Transforms a task emission into the schema used by task documents - * Minifies all unneeded data from the emission - * Merges emission data into an existing document, or creates a new task document (as appropriate) - */ +(function () { + "use strict"; -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); + function defineLeafy(_) { -/** - * @param {Object} taskEmission A task emission from the rules engine - * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated - * @param {Object} existingDoc The most recent taskDocument with the same emission id + function compare(a, b) { + var ret = 0; + if (a > b) { + return 1; + } else if (a < b) { + return -1; + } else if (!b) { + return 1; + } + return ret; + } - * @returns {Object} result - * @returns {Object} result.taskDoc The result of the transformation - * @returns {Boolean} result.isUpdated True if the document is new or has been altered - */ -module.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => { - const emittedState = TaskStates.calculateState(taskEmission, calculatedAt); - const baseFromExistingDoc = !!existingDoc && - (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState); + var multiply = _.multiply; - // reduce document churn - don't tweak data on existing docs in terminal states - const baselineStateOfExistingDoc = baseFromExistingDoc && - !TaskStates.isTerminal(existingDoc.state) && - JSON.stringify(existingDoc); - const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt); - taskDoc.user = userSettingsId; - taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id; - taskDoc.owner = taskEmission.contact && taskEmission.contact._id; - minifyEmission(taskDoc, taskEmission); - TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt); + var Tree = _.declare({ - const isUpdated = (() => { - if (!baseFromExistingDoc) { - // do not create new documents where the initial state is cancelled (invalid emission) - return taskDoc.state !== TaskStates.Cancelled; - } + instance: { - return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc; - })(); + /** + * Prints a node + * @param node node to print + * @param level the current level the node is at, Used for formatting + */ + __printNode: function (node, level) { + //console.log(level); + var str = []; + if (_.isUndefinedOrNull(node)) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push(node.data + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + }, - return { - isUpdated, - taskDoc, - }; -}; + constructor: function (options) { + options = options || {}; + this.compare = options.compare || compare; + this.__root = null; + }, -const minifyEmission = (taskDoc, emission) => { - const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ] - .reduce((agg, attr) => { - if (Object.hasOwnProperty.call(emission, attr)) { - agg[attr] = emission[attr]; - } - return agg; - }, {}); + insert: function () { + throw new Error("Not Implemented"); + }, - /* - The declarative configuration "contactLabel" results in a task emission with a contact with only a name attribute. - For backward compatibility, contacts which don't provide an id should not be minified and rehydrated. - */ - if (emission.contact) { - minified.contact = { name: emission.contact.name }; - } + remove: function () { + throw new Error("Not Implemented"); + }, - if (emission.date || emission.dueDate) { - const timeWindow = TaskStates.getDisplayWindow(emission); - Object.assign(minified, timeWindow); - } - minified.actions && minified.actions - .filter(action => action && action.content) - .forEach(action => { - if (!minified.forId) { - minified.forId = action.content.contact && action.content.contact._id; - } - delete action.content.contact; - }); + clear: function () { + this.__root = null; + }, - taskDoc.emission = minified; - return taskDoc; -}; + isEmpty: function () { + return !(this.__root); + }, -const newTaskDoc = (emission, userSettingsId, calculatedAt) => ({ - _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`, - type: 'task', - authoredOn: calculatedAt, - stateHistory: [], -}); + traverseWithCondition: function (node, order, callback) { + var cont = true; + if (node) { + order = order || Tree.PRE_ORDER; + if (order === Tree.PRE_ORDER) { + cont = callback(node.data); + if (cont) { + cont = this.traverseWithCondition(node.left, order, callback); + if (cont) { + cont = this.traverseWithCondition(node.right, order, callback); + } + } + } else if (order === Tree.IN_ORDER) { + cont = this.traverseWithCondition(node.left, order, callback); + if (cont) { + cont = callback(node.data); + if (cont) { + cont = this.traverseWithCondition(node.right, order, callback); + } + } + } else if (order === Tree.POST_ORDER) { + cont = this.traverseWithCondition(node.left, order, callback); + if (cont) { + if (cont) { + cont = this.traverseWithCondition(node.right, order, callback); + } + if (cont) { + cont = callback(node.data); + } + } + } else if (order === Tree.REVERSE_ORDER) { + cont = this.traverseWithCondition(node.right, order, callback); + if (cont) { + cont = callback(node.data); + if (cont) { + cont = this.traverseWithCondition(node.left, order, callback); + } + } + } + } + return cont; + }, -/***/ }), + traverse: function (node, order, callback) { + if (node) { + order = order || Tree.PRE_ORDER; + if (order === Tree.PRE_ORDER) { + callback(node.data); + this.traverse(node.left, order, callback); + this.traverse(node.right, order, callback); + } else if (order === Tree.IN_ORDER) { + this.traverse(node.left, order, callback); + callback(node.data); + this.traverse(node.right, order, callback); + } else if (order === Tree.POST_ORDER) { + this.traverse(node.left, order, callback); + this.traverse(node.right, order, callback); + callback(node.data); + } else if (order === Tree.REVERSE_ORDER) { + this.traverse(node.right, order, callback); + callback(node.data); + this.traverse(node.left, order, callback); -/***/ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + } + } + }, -/** - * @module update-temporal-states - * As time elapses, documents change state because the timing window has been reached. - * Eg. Documents with state Draft move to state Ready just because it is now after midnight - */ -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js"); + forEach: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + order = order || Tree.IN_ORDER; + scope = scope || this; + this.traverse(this.__root, order, function (node) { + cb.call(scope, node, this); + }); + }, -/** - * @param {Object[]} taskDocs A list of task documents to evaluate - * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents - */ -module.exports = (taskDocs, timestamp = Date.now()) => { - const docsToCommit = []; - for (const taskDoc of taskDocs) { - let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp); - if (taskDoc.authoredOn > timestamp) { - updatedState = TaskStates.Cancelled; - } + map: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } - if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) { - TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp); - docsToCommit.push(taskDoc); - } - } + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret = new this._static(); + this.traverse(this.__root, order, function (node) { + ret.insert(cb.call(scope, node, this)); + }); + return ret; + }, - return docsToCommit; -}; + filter: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret = new this._static(); + this.traverse(this.__root, order, function (node) { + if (cb.call(scope, node, this)) { + ret.insert(node); + } + }); + return ret; + }, -/***/ }), + reduce: function (fun, accumulator, order) { + var arr = this.toArray(order); + var args = [arr, fun]; + if (!_.isUndefinedOrNull(accumulator)) { + args.push(accumulator); + } + return _.reduce.apply(_, args); + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + reduceRight: function (fun, accumulator, order) { + var arr = this.toArray(order); + var args = [arr, fun]; + if (!_.isUndefinedOrNull(accumulator)) { + args.push(accumulator); + } + return _.reduceRight.apply(_, args); + }, -//! moment.js locale configuration -//! locale : Afrikaans [af] -//! author : Werner Mollentze : https://github.com/wernerm + every: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret = false; + this.traverseWithCondition(this.__root, order, function (node) { + ret = cb.call(scope, node, this); + return ret; + }); + return ret; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + some: function (cb, scope, order) { + if (typeof cb !== "function") { + throw new TypeError(); + } - //! moment.js locale configuration + order = order || Tree.IN_ORDER; + scope = scope || this; + var ret; + this.traverseWithCondition(this.__root, order, function (node) { + ret = cb.call(scope, node, this); + return !ret; + }); + return ret; + }, - var af = moment.defineLocale('af', { - months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split( - '_' - ), - weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM: function (input) { - return /^nm$/i.test(input); - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Vandag om] LT', - nextDay: '[Môre om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[Gister om] LT', - lastWeek: '[Laas] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'oor %s', - past: '%s gelede', - s: "'n paar sekondes", - ss: '%d sekondes', - m: "'n minuut", - mm: '%d minute', - h: "'n uur", - hh: '%d ure', - d: "'n dag", - dd: '%d dae', - M: "'n maand", - MM: '%d maande', - y: "'n jaar", - yy: '%d jaar', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week: { - dow: 1, // Maandag is die eerste dag van die week. - doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - }, - }); + toArray: function (order) { + order = order || Tree.IN_ORDER; + var arr = []; + this.traverse(this.__root, order, function (node) { + arr.push(node); + }); + return arr; + }, - return af; + contains: function (value) { + var ret = false; + var root = this.__root; + while (root !== null) { + var cmp = this.compare(value, root.data); + if (cmp) { + root = root[(cmp === -1) ? "left" : "right"]; + } else { + ret = true; + root = null; + } + } + return ret; + }, -}))); + find: function (value) { + var ret; + var root = this.__root; + while (root) { + var cmp = this.compare(value, root.data); + if (cmp) { + root = root[(cmp === -1) ? "left" : "right"]; + } else { + ret = root.data; + break; + } + } + return ret; + }, + findLessThan: function (value, exclusive) { + //find a better way!!!! + var ret = [], compare = this.compare; + this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) { + var cmp = compare(value, v); + if ((!exclusive && cmp === 0) || cmp === 1) { + ret.push(v); + return true; + } else { + return false; + } + }); + return ret; + }, -/***/ }), + findGreaterThan: function (value, exclusive) { + //find a better way!!!! + var ret = [], compare = this.compare; + this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) { + var cmp = compare(value, v); + if ((!exclusive && cmp === 0) || cmp === -1) { + ret.push(v); + return true; + } else { + return false; + } + }); + return ret; + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + print: function () { + this.__printNode(this.__root, 0); + } + }, -//! moment.js locale configuration -//! locale : Arabic (Algeria) [ar-dz] -//! author : Amine Roukh: https://github.com/Amine27 -//! author : Abdel Said: https://github.com/abdelsaid -//! author : Ahmed Elkhatib -//! author : forabi https://github.com/forabi -//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem + "static": { + PRE_ORDER: "pre_order", + IN_ORDER: "in_order", + POST_ORDER: "post_order", + REVERSE_ORDER: "reverse_order" + } + }); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + var AVLTree = (function () { + var abs = Math.abs; - //! moment.js locale configuration - var pluralForm = function (n) { - return n === 0 - ? 0 - : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; - }, - plurals = { - s: [ - 'أقل من ثانية', - 'ثانية واحدة', - ['ثانيتان', 'ثانيتين'], - '%d ثوان', - '%d ثانية', - '%d ثانية', - ], - m: [ - 'أقل من دقيقة', - 'دقيقة واحدة', - ['دقيقتان', 'دقيقتين'], - '%d دقائق', - '%d دقيقة', - '%d دقيقة', - ], - h: [ - 'أقل من ساعة', - 'ساعة واحدة', - ['ساعتان', 'ساعتين'], - '%d ساعات', - '%d ساعة', - '%d ساعة', - ], - d: [ - 'أقل من يوم', - 'يوم واحد', - ['يومان', 'يومين'], - '%d أيام', - '%d يومًا', - '%d يوم', - ], - M: [ - 'أقل من شهر', - 'شهر واحد', - ['شهران', 'شهرين'], - '%d أشهر', - '%d شهرا', - '%d شهر', - ], - y: [ - 'أقل من عام', - 'عام واحد', - ['عامان', 'عامين'], - '%d أعوام', - '%d عامًا', - '%d عام', - ], - }, - pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); + var makeNode = function (data) { + return { + data: data, + balance: 0, + left: null, + right: null + }; }; - }, - months = [ - 'جانفي', - 'فيفري', - 'مارس', - 'أفريل', - 'ماي', - 'جوان', - 'جويلية', - 'أوت', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', - ]; - var arDz = moment.defineLocale('ar-dz', { - months: months, - monthsShort: months, - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/\u200FM/\u200FYYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar: { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'بعد %s', - past: 'منذ %s', - s: pluralize('s'), - ss: pluralize('s'), - m: pluralize('m'), - mm: pluralize('m'), - h: pluralize('h'), - hh: pluralize('h'), - d: pluralize('d'), - dd: pluralize('d'), - M: pluralize('M'), - MM: pluralize('M'), - y: pluralize('y'), - yy: pluralize('y'), - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + var rotateSingle = function (root, dir, otherDir) { + var save = root[otherDir]; + root[otherDir] = save[dir]; + save[dir] = root; + return save; + }; - return arDz; -}))); + var rotateDouble = function (root, dir, otherDir) { + root[otherDir] = rotateSingle(root[otherDir], otherDir, dir); + return rotateSingle(root, dir, otherDir); + }; + var adjustBalance = function (root, dir, bal) { + var otherDir = dir === "left" ? "right" : "left"; + var n = root[dir], nn = n[otherDir]; + if (nn.balance === 0) { + root.balance = n.balance = 0; + } else if (nn.balance === bal) { + root.balance = -bal; + n.balance = 0; + } else { /* nn.balance == -bal */ + root.balance = 0; + n.balance = bal; + } + nn.balance = 0; + }; -/***/ }), + var insertAdjustBalance = function (root, dir) { + var otherDir = dir === "left" ? "right" : "left"; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + var n = root[dir]; + var bal = dir === "right" ? -1 : +1; -//! moment.js locale configuration -//! locale : Arabic (Kuwait) [ar-kw] -//! author : Nusret Parlak: https://github.com/nusretparlak + if (n.balance === bal) { + root.balance = n.balance = 0; + root = rotateSingle(root, otherDir, dir); + } else { + adjustBalance(root, dir, bal); + root = rotateDouble(root, otherDir, dir); + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + return root; - //! moment.js locale configuration + }; - var arKw = moment.defineLocale('ar-kw', { - months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); + var removeAdjustBalance = function (root, dir, done) { + var otherDir = dir === "left" ? "right" : "left"; + var n = root[otherDir]; + var bal = dir === "right" ? -1 : 1; + if (n.balance === -bal) { + root.balance = n.balance = 0; + root = rotateSingle(root, dir, otherDir); + } else if (n.balance === bal) { + adjustBalance(root, otherDir, -bal); + root = rotateDouble(root, dir, otherDir); + } else { /* n.balance == 0 */ + root.balance = -bal; + n.balance = bal; + root = rotateSingle(root, dir, otherDir); + done.done = true; + } + return root; + }; + + function insert(tree, data, cmp) { + /* Empty tree case */ + var root = tree.__root; + if (root === null || root === undefined) { + tree.__root = makeNode(data); + } else { + var it = root, upd = [], up = [], top = 0, dir; + while (true) { + dir = upd[top] = cmp(data, it.data) === -1 ? "left" : "right"; + up[top++] = it; + if (!it[dir]) { + it[dir] = makeNode(data); + break; + } + it = it[dir]; + } + if (!it[dir]) { + return null; + } + while (--top >= 0) { + up[top].balance += upd[top] === "right" ? -1 : 1; + if (up[top].balance === 0) { + break; + } else if (abs(up[top].balance) > 1) { + up[top] = insertAdjustBalance(up[top], upd[top]); + if (top !== 0) { + up[top - 1][upd[top - 1]] = up[top]; + } else { + tree.__root = up[0]; + } + break; + } + } + } + } + + function remove(tree, data, cmp) { + var root = tree.__root; + if (root !== null && root !== undefined) { + var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare; + while (true) { + if (!it) { + return; + } else if ((compare = cmp(data, it.data)) === 0) { + break; + } + dir = upd[top] = compare === -1 ? "left" : "right"; + up[top++] = it; + it = it[dir]; + } + var l = it.left, r = it.right; + if (!l || !r) { + dir = !l ? "right" : "left"; + if (top !== 0) { + up[top - 1][upd[top - 1]] = it[dir]; + } else { + tree.__root = it[dir]; + } + } else { + var heir = l; + upd[top] = "left"; + up[top++] = it; + while (heir.right) { + upd[top] = "right"; + up[top++] = heir; + heir = heir.right; + } + it.data = heir.data; + up[top - 1][up[top - 1] === it ? "left" : "right"] = heir.left; + } + while (--top >= 0 && !done.done) { + up[top].balance += upd[top] === "left" ? -1 : +1; + if (abs(up[top].balance) === 1) { + break; + } else if (abs(up[top].balance) > 1) { + up[top] = removeAdjustBalance(up[top], upd[top], done); + if (top !== 0) { + up[top - 1][upd[top - 1]] = up[top]; + } else { + tree.__root = up[0]; + } + } + } + } + } - return arKw; -}))); + return Tree.extend({ + instance: { + insert: function (data) { + insert(this, data, this.compare); + }, -/***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + remove: function (data) { + remove(this, data, this.compare); + }, -//! moment.js locale configuration -//! locale : Arabic (Lybia) [ar-ly] -//! author : Ali Hmer: https://github.com/kikoanis + __printNode: function (node, level) { + var str = []; + if (!node) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push(node.data + ":" + node.balance + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + } + }); + }()); - //! moment.js locale configuration + var AnderssonTree = (function () { - var symbolMap = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '0': '0', - }, - pluralForm = function (n) { - return n === 0 - ? 0 - : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; - }, - plurals = { - s: [ - 'أقل من ثانية', - 'ثانية واحدة', - ['ثانيتان', 'ثانيتين'], - '%d ثوان', - '%d ثانية', - '%d ثانية', - ], - m: [ - 'أقل من دقيقة', - 'دقيقة واحدة', - ['دقيقتان', 'دقيقتين'], - '%d دقائق', - '%d دقيقة', - '%d دقيقة', - ], - h: [ - 'أقل من ساعة', - 'ساعة واحدة', - ['ساعتان', 'ساعتين'], - '%d ساعات', - '%d ساعة', - '%d ساعة', - ], - d: [ - 'أقل من يوم', - 'يوم واحد', - ['يومان', 'يومين'], - '%d أيام', - '%d يومًا', - '%d يوم', - ], - M: [ - 'أقل من شهر', - 'شهر واحد', - ['شهران', 'شهرين'], - '%d أشهر', - '%d شهرا', - '%d شهر', - ], - y: [ - 'أقل من عام', - 'عام واحد', - ['عامان', 'عامين'], - '%d أعوام', - '%d عامًا', - '%d عام', - ], - }, - pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, - months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', - ]; + var nil = {level: 0, data: null}; - var arLy = moment.defineLocale('ar-ly', { - months: months, - monthsShort: months, - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/\u200FM/\u200FYYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; + function makeNode(data, level) { + return { + data: data, + level: level, + left: nil, + right: nil + }; } - }, - calendar: { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'بعد %s', - past: 'منذ %s', - s: pluralize('s'), - ss: pluralize('s'), - m: pluralize('m'), - mm: pluralize('m'), - h: pluralize('h'), - hh: pluralize('h'), - d: pluralize('d'), - dd: pluralize('d'), - M: pluralize('M'), - MM: pluralize('M'), - y: pluralize('y'), - yy: pluralize('y'), - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); - return arLy; + function skew(root) { + if (root.level !== 0 && root.left.level === root.level) { + var save = root.left; + root.left = save.right; + save.right = root; + root = save; + } + return root; + } -}))); + function split(root) { + if (root.level !== 0 && root.right.right.level === root.level) { + var save = root.right; + root.right = save.left; + save.left = root; + root = save; + root.level++; + } + return root; + } + function insert(root, data, compare) { + if (root === nil) { + root = makeNode(data, 1); + } + else { + var dir = compare(data, root.data) === -1 ? "left" : "right"; + root[dir] = insert(root[dir], data, compare); + root = skew(root); + root = split(root); + } + return root; + } -/***/ }), + var remove = function (root, data, compare) { + var rLeft, rRight; + if (root !== nil) { + var cmp = compare(data, root.data); + if (cmp === 0) { + rLeft = root.left, rRight = root.right; + if (rLeft !== nil && rRight !== nil) { + var heir = rLeft; + while (heir.right !== nil) { + heir = heir.right; + } + root.data = heir.data; + root.left = remove(rLeft, heir.data, compare); + } else { + root = root[rLeft === nil ? "right" : "left"]; + } + } else { + var dir = cmp === -1 ? "left" : "right"; + root[dir] = remove(root[dir], data, compare); + } + } + if (root !== nil) { + var rLevel = root.level; + var rLeftLevel = root.left.level, rRightLevel = root.right.level; + if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) { + if (rRightLevel > --root.level) { + root.right.level = root.level; + } + root = skew(root); + root = split(root); + } + } + return root; + }; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + return Tree.extend({ -//! moment.js locale configuration -//! locale : Arabic (Morocco) [ar-ma] -//! author : ElFadili Yassine : https://github.com/ElFadiliY -//! author : Abdel Said : https://github.com/abdelsaid + instance: { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + isEmpty: function () { + return this.__root === nil || this._super(arguments); + }, - //! moment.js locale configuration + insert: function (data) { + if (!this.__root) { + this.__root = nil; + } + this.__root = insert(this.__root, data, this.compare); + }, - var arMa = moment.defineLocale('ar-ma', { - months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( - '_' - ), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); + remove: function (data) { + this.__root = remove(this.__root, data, this.compare); + }, - return arMa; -}))); + traverseWithCondition: function (node) { + var cont = true; + if (node !== nil) { + return this._super(arguments); + } + return cont; + }, -/***/ }), + traverse: function (node) { + if (node !== nil) { + this._super(arguments); + } + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + contains: function () { + if (this.__root !== nil) { + return this._super(arguments); + } + return false; + }, -//! moment.js locale configuration -//! locale : Arabic (Saudi Arabia) [ar-sa] -//! author : Suhail Alkowaileet : https://github.com/xsoh + __printNode: function (node, level) { + var str = []; + if (!node || !node.data) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push(node.data + ":" + node.level + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + } - //! moment.js locale configuration + }); + }()); - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠', - }, - numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0', - }; + var BinaryTree = Tree.extend({ + instance: { + insert: function (data) { + if (!this.__root) { + this.__root = { + data: data, + parent: null, + left: null, + right: null + }; + return this.__root; + } + var compare = this.compare; + var root = this.__root; + while (root !== null) { + var cmp = compare(data, root.data); + if (cmp) { + var leaf = (cmp === -1) ? "left" : "right"; + var next = root[leaf]; + if (!next) { + return (root[leaf] = {data: data, parent: root, left: null, right: null}); + } else { + root = next; + } + } else { + return; + } + } + }, - var arSa = moment.defineLocale('ar-sa', { - months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; + remove: function (data) { + if (this.__root !== null) { + var head = {right: this.__root}, it = head; + var p, f = null; + var dir = "right"; + while (it[dir] !== null) { + p = it; + it = it[dir]; + var cmp = this.compare(data, it.data); + if (!cmp) { + f = it; + } + dir = (cmp === -1 ? "left" : "right"); + } + if (f !== null) { + f.data = it.data; + p[p.right === it ? "right" : "left"] = it[it.left === null ? "right" : "left"]; + } + this.__root = head.right; + } + + } } - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - preparse: function (string) { - return string - .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); + }); - return arSa; + var RedBlackTree = (function () { + var RED = "RED", BLACK = "BLACK"; -}))); + var isRed = function (node) { + return node !== null && node.red; + }; + var makeNode = function (data) { + return { + data: data, + red: true, + left: null, + right: null + }; + }; -/***/ }), + var insert = function (root, data, compare) { + if (!root) { + return makeNode(data); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + } else { + var cmp = compare(data, root.data); + if (cmp) { + var dir = cmp === -1 ? "left" : "right"; + var otherDir = dir === "left" ? "right" : "left"; + root[dir] = insert(root[dir], data, compare); + var node = root[dir]; -//! moment.js locale configuration -//! locale : Arabic (Tunisia) [ar-tn] -//! author : Nader Toukabri : https://github.com/naderio + if (isRed(node)) { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + var sibling = root[otherDir]; + if (isRed(sibling)) { + /* Case 1 */ + root.red = true; + node.red = false; + sibling.red = false; + } else { - //! moment.js locale configuration + if (isRed(node[dir])) { - var arTn = moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( - '_' - ), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss: '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + root = rotateSingle(root, otherDir); + } else if (isRed(node[otherDir])) { - return arTn; + root = rotateDouble(root, otherDir); + } + } -}))); + } + } + } + return root; + }; + var rotateSingle = function (root, dir) { + var otherDir = dir === "left" ? "right" : "left"; + var save = root[otherDir]; + root[otherDir] = save[dir]; + save[dir] = root; + root.red = true; + save.red = false; + return save; + }; -/***/ }), + var rotateDouble = function (root, dir) { + var otherDir = dir === "left" ? "right" : "left"; + root[otherDir] = rotateSingle(root[otherDir], otherDir); + return rotateSingle(root, dir); + }; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Arabic [ar] -//! author : Abdel Said: https://github.com/abdelsaid -//! author : Ahmed Elkhatib -//! author : forabi https://github.com/forabi + var remove = function (root, data, done, compare) { + if (!root) { + done.done = true; + } else { + var dir; + if (compare(data, root.data) === 0) { + if (!root.left || !root.right) { + var save = root[!root.left ? "right" : "left"]; + /* Case 0 */ + if (isRed(root)) { + done.done = true; + } else if (isRed(save)) { + save.red = false; + done.done = true; + } + return save; + } + else { + var heir = root.right, p; + while (heir.left !== null) { + p = heir; + heir = heir.left; + } + if (p) { + p.left = null; + } + root.data = heir.data; + data = heir.data; + } + } + dir = compare(data, root.data) === -1 ? "left" : "right"; + root[dir] = remove(root[dir], data, done, compare); + if (!done.done) { + root = removeBalance(root, dir, done); + } + } + return root; + }; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + var removeBalance = function (root, dir, done) { + var notDir = dir === "left" ? "right" : "left"; + var p = root, s = p[notDir]; + if (isRed(s)) { + root = rotateSingle(root, dir); + s = p[notDir]; + } + if (s !== null) { + if (!isRed(s.left) && !isRed(s.right)) { + if (isRed(p)) { + done.done = true; + } + p.red = 0; + s.red = 1; + } else { + var save = p.red, newRoot = ( root === p ); + p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir); + p.red = save; + p.left.red = p.right.red = 0; + if (newRoot) { + root = p; + } else { + root[dir] = p; + } + done.done = true; + } + } + return root; + }; - //! moment.js locale configuration + return Tree.extend({ + instance: { + insert: function (data) { + this.__root = insert(this.__root, data, this.compare); + this.__root.red = false; + }, + + remove: function (data) { + var done = {done: false}; + var root = remove(this.__root, data, done, this.compare); + if (root !== null) { + root.red = 0; + } + this.__root = root; + return data; + }, + + + __printNode: function (node, level) { + var str = []; + if (!node) { + str.push(multiply('\t', level)); + str.push("~"); + console.log(str.join("")); + } else { + this.__printNode(node.right, level + 1); + str.push(multiply('\t', level)); + str.push((node.red ? RED : BLACK) + ":" + node.data + "\n"); + console.log(str.join("")); + this.__printNode(node.left, level + 1); + } + } - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠', - }, - numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0', - }, - pluralForm = function (n) { - return n === 0 - ? 0 - : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; - }, - plurals = { - s: [ - 'أقل من ثانية', - 'ثانية واحدة', - ['ثانيتان', 'ثانيتين'], - '%d ثوان', - '%d ثانية', - '%d ثانية', - ], - m: [ - 'أقل من دقيقة', - 'دقيقة واحدة', - ['دقيقتان', 'دقيقتين'], - '%d دقائق', - '%d دقيقة', - '%d دقيقة', - ], - h: [ - 'أقل من ساعة', - 'ساعة واحدة', - ['ساعتان', 'ساعتين'], - '%d ساعات', - '%d ساعة', - '%d ساعة', - ], - d: [ - 'أقل من يوم', - 'يوم واحد', - ['يومان', 'يومين'], - '%d أيام', - '%d يومًا', - '%d يوم', - ], - M: [ - 'أقل من شهر', - 'شهر واحد', - ['شهران', 'شهرين'], - '%d أشهر', - '%d شهرا', - '%d شهر', - ], - y: [ - 'أقل من عام', - 'عام واحد', - ['عامان', 'عامين'], - '%d أعوام', - '%d عامًا', - '%d عام', - ], - }, - pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; } - return str.replace(/%d/i, number); - }; - }, - months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', - ]; + }); - var ar = moment.defineLocale('ar', { - months: months, - monthsShort: months, - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/\u200FM/\u200FYYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ص|م/, - isPM: function (input) { - return 'م' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar: { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'بعد %s', - past: 'منذ %s', - s: pluralize('s'), - ss: pluralize('s'), - m: pluralize('m'), - mm: pluralize('m'), - h: pluralize('h'), - hh: pluralize('h'), - d: pluralize('d'), - dd: pluralize('d'), - M: pluralize('M'), - MM: pluralize('M'), - y: pluralize('y'), - yy: pluralize('y'), - }, - preparse: function (string) { - return string - .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); + }()); - return ar; -}))); + return { + Tree: Tree, + AVLTree: AVLTree, + AnderssonTree: AnderssonTree, + BinaryTree: BinaryTree, + RedBlackTree: RedBlackTree, + IN_ORDER: Tree.IN_ORDER, + PRE_ORDER: Tree.PRE_ORDER, + POST_ORDER: Tree.POST_ORDER, + REVERSE_ORDER: Tree.REVERSE_ORDER + }; + } -/***/ }), + if (true) { + if ( true && module.exports) { + module.exports = defineLeafy(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")() + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js")) + ); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + } + } else {} -//! moment.js locale configuration -//! locale : Azerbaijani [az] -//! author : topchiyev : https://github.com/topchiyev +}).call(this); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration - var suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı', - }; - var az = moment.defineLocale('az', { - months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split( - '_' - ), - monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( - '_' - ), - weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[bugün saat] LT', - nextDay: '[sabah saat] LT', - nextWeek: '[gələn həftə] dddd [saat] LT', - lastDay: '[dünən] LT', - lastWeek: '[keçən həftə] dddd [saat] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s sonra', - past: '%s əvvəl', - s: 'birneçə saniyə', - ss: '%d saniyə', - m: 'bir dəqiqə', - mm: '%d dəqiqə', - h: 'bir saat', - hh: '%d saat', - d: 'bir gün', - dd: '%d gün', - M: 'bir ay', - MM: '%d ay', - y: 'bir il', - yy: '%d il', - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM: function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal: function (number) { - if (number === 0) { - // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = (number % 100) - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return az; -}))); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Belarusian [be] -//! author : Dmitry Demidov : https://github.com/demidov91 -//! author: Praleska: http://praleska.pro/ -//! Author : Menelion Elensúle : https://github.com/Oire - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - - //! moment.js locale configuration - - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 - ? forms[0] - : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - dd: 'дзень_дні_дзён', - MM: 'месяц_месяцы_месяцаў', - yy: 'год_гады_гадоў', - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } else { - return number + ' ' + plural(format[key], +number); - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var be = moment.defineLocale('be', { - months: { - format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( - '_' - ), - standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( - '_' - ), - }, - monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split( - '_' - ), - weekdays: { - format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( - '_' - ), - standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( - '_' - ), - isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, - }, - weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY г.', - LLL: 'D MMMM YYYY г., HH:mm', - LLLL: 'dddd, D MMMM YYYY г., HH:mm', - }, - calendar: { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'праз %s', - past: '%s таму', - s: 'некалькі секунд', - m: relativeTimeWithPlural, - mm: relativeTimeWithPlural, - h: relativeTimeWithPlural, - hh: relativeTimeWithPlural, - d: 'дзень', - dd: relativeTimeWithPlural, - M: 'месяц', - MM: relativeTimeWithPlural, - y: 'год', - yy: relativeTimeWithPlural, - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM: function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && - number % 100 !== 12 && - number % 100 !== 13 - ? number + '-і' - : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); - return be; +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); -}))); +module.exports = DataView; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Bulgarian [bg] -//! author : Krasen Borisov : https://github.com/kraz +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js"), + hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js"), + hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js"), + hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js"), + hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js"); - //! moment.js locale configuration +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - var bg = moment.defineLocale('bg', { - months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( - '_' - ), - monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( - '_' - ), - weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'D.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY H:mm', - LLLL: 'dddd, D MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[Днес в] LT', - nextDay: '[Утре в] LT', - nextWeek: 'dddd [в] LT', - lastDay: '[Вчера в] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Миналата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Миналия] dddd [в] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'след %s', - past: 'преди %s', - s: 'няколко секунди', - ss: '%d секунди', - m: 'минута', - mm: '%d минути', - h: 'час', - hh: '%d часа', - d: 'ден', - dd: '%d дена', - M: 'месец', - MM: '%d месеца', - y: 'година', - yy: '%d години', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal: function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - return bg; +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; -}))); +module.exports = Hash; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Bambara [bm] -//! author : Estelle Comment : https://github.com/estellecomment +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js"), + listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js"), + listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js"), + listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js"), + listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js"); - //! moment.js locale configuration +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - var bm = moment.defineLocale('bm', { - months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( - '_' - ), - monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), - weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), - weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), - weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'MMMM [tile] D [san] YYYY', - LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', - LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', - }, - calendar: { - sameDay: '[Bi lɛrɛ] LT', - nextDay: '[Sini lɛrɛ] LT', - nextWeek: 'dddd [don lɛrɛ] LT', - lastDay: '[Kunu lɛrɛ] LT', - lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s kɔnɔ', - past: 'a bɛ %s bɔ', - s: 'sanga dama dama', - ss: 'sekondi %d', - m: 'miniti kelen', - mm: 'miniti %d', - h: 'lɛrɛ kelen', - hh: 'lɛrɛ %d', - d: 'tile kelen', - dd: 'tile %d', - M: 'kalo kelen', - MM: 'kalo %d', - y: 'san kelen', - yy: 'san %d', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - return bm; +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; -}))); +module.exports = ListCache; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Bengali [bn] -//! author : Kaushik Gandhi : https://github.com/kaushikgandhi +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); - //! moment.js locale configuration +module.exports = Map; - var symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০', - }, - numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0', - }; - var bn = moment.defineLocale('bn', { - months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( - '_' - ), - monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( - '_' - ), - weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( - '_' - ), - weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), - weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'), - longDateFormat: { - LT: 'A h:mm সময়', - LTS: 'A h:mm:ss সময়', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm সময়', - LLLL: 'dddd, D MMMM YYYY, A h:mm সময়', - }, - calendar: { - sameDay: '[আজ] LT', - nextDay: '[আগামীকাল] LT', - nextWeek: 'dddd, LT', - lastDay: '[গতকাল] LT', - lastWeek: '[গত] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s পরে', - past: '%s আগে', - s: 'কয়েক সেকেন্ড', - ss: '%d সেকেন্ড', - m: 'এক মিনিট', - mm: '%d মিনিট', - h: 'এক ঘন্টা', - hh: '%d ঘন্টা', - d: 'এক দিন', - dd: '%d দিন', - M: 'এক মাস', - MM: '%d মাস', - y: 'এক বছর', - yy: '%d বছর', - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - (meridiem === 'রাত' && hour >= 4) || - (meridiem === 'দুপুর' && hour < 5) || - meridiem === 'বিকাল' - ) { - return hour + 12; - } else { - return hour; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকাল'; - } else { - return 'রাত'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ }), - return bn; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js"), + mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js"), + mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js"), + mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js"), + mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js"); +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; -/***/ }), + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; -//! moment.js locale configuration -//! locale : Tibetan [bo] -//! author : Thupten N. Chakrishar : https://github.com/vajradog +module.exports = MapCache; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var symbolMap = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠', - }, - numberMap = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0', - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var bo = moment.defineLocale('bo', { - months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( - '_' - ), - monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( - '_' - ), - monthsShortRegex: /^(ཟླ་\d{1,2})/, - monthsParseExact: true, - weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( - '_' - ), - weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( - '_' - ), - weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm', - LLLL: 'dddd, D MMMM YYYY, A h:mm', - }, - calendar: { - sameDay: '[དི་རིང] LT', - nextDay: '[སང་ཉིན] LT', - nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay: '[ཁ་སང] LT', - lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ལ་', - past: '%s སྔན་ལ', - s: 'ལམ་སང', - ss: '%d སྐར་ཆ།', - m: 'སྐར་མ་གཅིག', - mm: '%d སྐར་མ', - h: 'ཆུ་ཚོད་གཅིག', - hh: '%d ཆུ་ཚོད', - d: 'ཉིན་གཅིག', - dd: '%d ཉིན་', - M: 'ཟླ་བ་གཅིག', - MM: '%d ཟླ་བ', - y: 'ལོ་གཅིག', - yy: '%d ལོ', - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - (meridiem === 'མཚན་མོ' && hour >= 4) || - (meridiem === 'ཉིན་གུང' && hour < 5) || - meridiem === 'དགོང་དག' - ) { - return hour + 12; - } else { - return hour; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); - return bo; +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); -}))); +module.exports = Promise; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Breton [br] -//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); - //! moment.js locale configuration +module.exports = Set; - function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - mm: 'munutenn', - MM: 'miz', - dd: 'devezh', - }; - return number + ' ' + mutation(format[key], number); - } - function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } - } - function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; - } - function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; - } - function softMutation(text) { - var mutationTable = { - m: 'v', - b: 'v', - d: 'z', - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); - } - var monthsParse = [ - /^gen/i, - /^c[ʼ\']hwe/i, - /^meu/i, - /^ebr/i, - /^mae/i, - /^(mez|eve)/i, - /^gou/i, - /^eos/i, - /^gwe/i, - /^her/i, - /^du/i, - /^ker/i, - ], - monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, - monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i, - monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, - fullWeekdaysParse = [ - /^sul/i, - /^lun/i, - /^meurzh/i, - /^merc[ʼ\']her/i, - /^yaou/i, - /^gwener/i, - /^sadorn/i, - ], - shortWeekdaysParse = [ - /^Sul/i, - /^Lun/i, - /^Meu/i, - /^Mer/i, - /^Yao/i, - /^Gwe/i, - /^Sad/i, - ], - minWeekdaysParse = [ - /^Su/i, - /^Lu/i, - /^Me([^r]|$)/i, - /^Mer/i, - /^Ya/i, - /^Gw/i, - /^Sa/i, - ]; +/***/ }), - var br = moment.defineLocale('br', { - months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split( - '_' - ), - monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - weekdaysParse: minWeekdaysParse, - fullWeekdaysParse: fullWeekdaysParse, - shortWeekdaysParse: shortWeekdaysParse, - minWeekdaysParse: minWeekdaysParse, +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: monthsStrictRegex, - monthsShortStrictRegex: monthsShortStrictRegex, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"), + setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js"), + setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js"); - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [a viz] MMMM YYYY', - LLL: 'D [a viz] MMMM YYYY HH:mm', - LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Hiziv da] LT', - nextDay: '[Warcʼhoazh da] LT', - nextWeek: 'dddd [da] LT', - lastDay: '[Decʼh da] LT', - lastWeek: 'dddd [paset da] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'a-benn %s', - past: '%s ʼzo', - s: 'un nebeud segondennoù', - ss: '%d eilenn', - m: 'ur vunutenn', - mm: relativeTimeWithMutation, - h: 'un eur', - hh: '%d eur', - d: 'un devezh', - dd: relativeTimeWithMutation, - M: 'ur miz', - MM: relativeTimeWithMutation, - y: 'ur bloaz', - yy: specialMutationForYears, - }, - dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, - ordinal: function (number) { - var output = number === 1 ? 'añ' : 'vet'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn - isPM: function (token) { - return token === 'g.m.'; - }, - meridiem: function (hour, minute, isLower) { - return hour < 12 ? 'a.m.' : 'g.m.'; - }, - }); +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} - return br; +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; -}))); +module.exports = SetCache; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Bosnian [bs] -//! author : Nedim Cholich : https://github.com/frontyard -//! based on (hr) translation by Bojan Marković +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js"), + stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js"), + stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js"), + stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js"), + stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} - //! moment.js locale configuration +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - if (number === 1) { - result += 'sekunda'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sekunde'; - } else { - result += 'sekundi'; - } - return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } +module.exports = Stack; - var bs = moment.defineLocale('bs', { - months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[jučer u] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'prije %s', - s: 'par sekundi', - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: 'dan', - dd: translate, - M: 'mjesec', - MM: translate, - y: 'godinu', - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return bs; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); -/***/ }), +/** Built-in value references. */ +var Symbol = root.Symbol; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +module.exports = Symbol; -//! moment.js locale configuration -//! locale : Catalan [ca] -//! author : Juan G. Hurtado : https://github.com/juanghurtado -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var ca = moment.defineLocale('ca', { - months: { - standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( - '_' - ), - format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( - '_' - ), - isFormat: /D[oD]?(\s)+MMMM/, - }, - monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( - '_' - ), - weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM [de] YYYY', - ll: 'D MMM YYYY', - LLL: 'D MMMM [de] YYYY [a les] H:mm', - lll: 'D MMM YYYY, H:mm', - LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', - llll: 'ddd D MMM YYYY, H:mm', - }, - calendar: { - sameDay: function () { - return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - nextDay: function () { - return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - lastDay: function () { - return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [passat a ' + - (this.hours() !== 1 ? 'les' : 'la') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: "d'aquí %s", - past: 'fa %s', - s: 'uns segons', - ss: '%d segons', - m: 'un minut', - mm: '%d minuts', - h: 'una hora', - hh: '%d hores', - d: 'un dia', - dd: '%d dies', - M: 'un mes', - MM: '%d mesos', - y: 'un any', - yy: '%d anys', - }, - dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal: function (number, period) { - var output = - number === 1 - ? 'r' - : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); - return ca; +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; -}))); +module.exports = Uint8Array; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Czech [cs] -//! author : petrbela : https://github.com/petrbela +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); - //! moment.js locale configuration +module.exports = WeakMap; - var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( - '_' - ), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), - monthsParse = [ - /^led/i, - /^úno/i, - /^bře/i, - /^dub/i, - /^kvě/i, - /^(čvn|červen$|června)/i, - /^(čvc|červenec|července)/i, - /^srp/i, - /^zář/i, - /^říj/i, - /^lis/i, - /^pro/i, - ], - // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. - // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; - function plural(n) { - return n > 1 && n < 5 && ~~(n / 10) !== 1; - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; - case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'sekundy' : 'sekund'); - } else { - return result + 'sekundami'; - } - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - case 'd': // a day / in a day / a day ago - return withoutSuffix || isFuture ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - case 'M': // a month / in a month / a month ago - return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - case 'y': // a year / in a year / a year ago - return withoutSuffix || isFuture ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - } - } +/***/ }), - var cs = moment.defineLocale('cs', { - months: months, - monthsShort: monthsShort, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. - // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, - monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd D. MMMM YYYY H:mm', - l: 'D. M. YYYY', - }, - calendar: { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'před %s', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js ***! + \*************************************************************************************************/ +/***/ ((module) => { - return cs; +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; -}))); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = arrayFilter; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Chuvash [cv] -//! author : Anatoly Mironov : https://github.com/mirontoli +var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; +} - //! moment.js locale configuration +module.exports = arrayIncludes; - var cv = moment.defineLocale('cv', { - months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( - '_' - ), - monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( - '_' - ), - weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD-MM-YYYY', - LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - }, - calendar: { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L', - }, - relativeTime: { - future: function (output) { - var affix = /сехет$/i.exec(output) - ? 'рен' - : /ҫул$/i.exec(output) - ? 'тан' - : 'ран'; - return output + affix; - }, - past: '%s каялла', - s: 'пӗр-ик ҫеккунт', - ss: '%d ҫеккунт', - m: 'пӗр минут', - mm: '%d минут', - h: 'пӗр сехет', - hh: '%d сехет', - d: 'пӗр кун', - dd: '%d кун', - M: 'пӗр уйӑх', - MM: '%d уйӑх', - y: 'пӗр ҫул', - yy: '%d ҫул', - }, - dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, - ordinal: '%d-мӗш', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return cv; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js ***! + \*******************************************************************************************************/ +/***/ ((module) => { + +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +module.exports = arrayIncludesWith; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Welsh [cy] -//! author : Robert Allen : https://github.com/robgallen -//! author : https://github.com/ryangreaves +var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - var cy = moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( - '_' - ), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( - '_' - ), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( - '_' - ), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - weekdaysParseExact: true, - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - ss: '%d eiliad', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd', - }, - dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', - 'af', - 'il', - 'ydd', - 'ydd', - 'ed', - 'ed', - 'ed', - 'fed', - 'fed', - 'fed', // 1af to 10fed - 'eg', - 'fed', - 'eg', - 'eg', - 'fed', - 'eg', - 'eg', - 'fed', - 'eg', - 'fed', // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; - return cy; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} -}))); +module.exports = arrayLikeKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Danish [da] -//! author : Ulrik Nielsen : https://github.com/mrbase +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} - //! moment.js locale configuration +module.exports = arrayMap; - var da = moment.defineLocale('da', { - months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm', - }, - calendar: { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'på dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[i] dddd[s kl.] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: '%s siden', - s: 'få sekunder', - ss: '%d sekunder', - m: 'et minut', - mm: '%d minutter', - h: 'en time', - hh: '%d timer', - d: 'en dag', - dd: '%d dage', - M: 'en måned', - MM: '%d måneder', - y: 'et år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return da; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js ***! + \***********************************************************************************************/ +/***/ ((module) => { +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; -/***/ }), + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +module.exports = arrayPush; -//! moment.js locale configuration -//! locale : German (Austria) [de-at] -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Martin Groller : https://github.com/MadMG -//! author : Mikolaj Dadela : https://github.com/mik01aj -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js ***! + \***********************************************************************************************/ +/***/ ((module) => { - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eine Minute', 'einer Minute'], - h: ['eine Stunde', 'einer Stunde'], - d: ['ein Tag', 'einem Tag'], - dd: [number + ' Tage', number + ' Tagen'], - M: ['ein Monat', 'einem Monat'], - MM: [number + ' Monate', number + ' Monaten'], - y: ['ein Jahr', 'einem Jahr'], - yy: [number + ' Jahre', number + ' Jahren'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; } + } + return false; +} + +module.exports = arraySome; - var deAt = moment.defineLocale('de-at', { - months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( - '_' - ), - weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd, D. MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]', - }, - relativeTime: { - future: 'in %s', - past: 'vor %s', - s: 'ein paar Sekunden', - ss: '%d Sekunden', - m: processRelativeTime, - mm: '%d Minuten', - h: processRelativeTime, - hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return deAt; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js"); -/***/ }), +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +module.exports = assocIndexOf; -//! moment.js locale configuration -//! locale : German (Switzerland) [de-ch] -//! author : sschueller : https://github.com/sschueller -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js ***! + \***************************************************************************************************/ +/***/ ((module) => { - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eine Minute', 'einer Minute'], - h: ['eine Stunde', 'einer Stunde'], - d: ['ein Tag', 'einem Tag'], - dd: [number + ' Tage', number + ' Tagen'], - M: ['ein Monat', 'einem Monat'], - MM: [number + ' Monate', number + ' Monaten'], - y: ['ein Jahr', 'einem Jahr'], - yy: [number + ' Jahre', number + ' Jahren'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; } + } + return -1; +} - var deCh = moment.defineLocale('de-ch', { - months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( - '_' - ), - weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd, D. MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]', - }, - relativeTime: { - future: 'in %s', - past: 'vor %s', - s: 'ein paar Sekunden', - ss: '%d Sekunden', - m: processRelativeTime, - mm: '%d Minuten', - h: processRelativeTime, - hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = baseFindIndex; - return deCh; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); -//! moment.js locale configuration -//! locale : German [de] -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Mikolaj Dadela : https://github.com/mik01aj + var index = 0, + length = path.length; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} - //! moment.js locale configuration +module.exports = baseGet; - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eine Minute', 'einer Minute'], - h: ['eine Stunde', 'einer Stunde'], - d: ['ein Tag', 'einem Tag'], - dd: [number + ' Tage', number + ' Tagen'], - M: ['ein Monat', 'einem Monat'], - MM: [number + ' Monate', number + ' Monaten'], - y: ['ein Jahr', 'einem Jahr'], - yy: [number + ' Jahre', number + ' Jahren'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - var de = moment.defineLocale('de', { - months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( - '_' - ), - weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY HH:mm', - LLLL: 'dddd, D. MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]', - }, - relativeTime: { - future: 'in %s', - past: 'vor %s', - s: 'ein paar Sekunden', - ss: '%d Sekunden', - m: processRelativeTime, - mm: '%d Minuten', - h: processRelativeTime, - hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return de; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"); +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} -/***/ }), +module.exports = baseGetAllKeys; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Maldivian [dv] -//! author : Jawish Hameed : https://github.com/jawish +/***/ }), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //! moment.js locale configuration +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js"); - var months = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު', - ], - weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު', - ]; +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; - var dv = moment.defineLocale('dv', { - months: months, - monthsShort: months, - weekdays: weekdays, - weekdaysShort: weekdays, - weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'D/M/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - meridiemParse: /މކ|މފ/, - isPM: function (input) { - return 'މފ' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'މކ'; - } else { - return 'މފ'; - } - }, - calendar: { - sameDay: '[މިއަދު] LT', - nextDay: '[މާދަމާ] LT', - nextWeek: 'dddd LT', - lastDay: '[އިއްޔެ] LT', - lastWeek: '[ފާއިތުވި] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: 'ތެރޭގައި %s', - past: 'ކުރިން %s', - s: 'ސިކުންތުކޮޅެއް', - ss: 'd% ސިކުންތު', - m: 'މިނިޓެއް', - mm: 'މިނިޓު %d', - h: 'ގަޑިއިރެއް', - hh: 'ގަޑިއިރު %d', - d: 'ދުވަހެއް', - dd: 'ދުވަސް %d', - M: 'މަހެއް', - MM: 'މަސް %d', - y: 'އަހަރެއް', - yy: 'އަހަރު %d', - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - dow: 7, // Sunday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - return dv; +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} -}))); +module.exports = baseGetTag; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js ***! + \***********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Greek [el] -//! author : Aggelos Karalias : https://github.com/mehiel +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = baseHasIn; - //! moment.js locale configuration - function isFunction(input) { - return ( - (typeof Function !== 'undefined' && input instanceof Function) || - Object.prototype.toString.call(input) === '[object Function]' - ); - } +/***/ }), - var el = moment.defineLocale('el', { - monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( - '_' - ), - monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( - '_' - ), - months: function (momentToFormat, format) { - if (!momentToFormat) { - return this._monthsNominativeEl; - } else if ( - typeof format === 'string' && - /D/.test(format.substring(0, format.indexOf('MMMM'))) - ) { - // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( - '_' - ), - weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - isPM: function (input) { - return (input + '').toLowerCase()[0] === 'μ'; - }, - meridiemParse: /[ΠΜ]\.?Μ?\.?/i, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendarEl: { - sameDay: '[Σήμερα {}] LT', - nextDay: '[Αύριο {}] LT', - nextWeek: 'dddd [{}] LT', - lastDay: '[Χθες {}] LT', - lastWeek: function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse: 'L', - }, - calendar: function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (isFunction(output)) { - output = output.apply(mom); - } - return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); - }, - relativeTime: { - future: 'σε %s', - past: '%s πριν', - s: 'λίγα δευτερόλεπτα', - ss: '%d δευτερόλεπτα', - m: 'ένα λεπτό', - mm: '%d λεπτά', - h: 'μία ώρα', - hh: '%d ώρες', - d: 'μία μέρα', - dd: '%d μέρες', - M: 'ένας μήνας', - MM: '%d μήνες', - y: 'ένας χρόνος', - yy: '%d χρόνια', - }, - dayOfMonthOrdinalParse: /\d{1,2}η/, - ordinal: '%dη', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4st is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return el; +var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js"), + baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js"), + strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js"); -}))); +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); +} + +module.exports = baseIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : English (Australia) [en-au] -//! author : Jared Morse : https://github.com/jarcoal +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; - //! moment.js locale configuration +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} - var enAu = moment.defineLocale('en-au', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = baseIsArguments; - return enAu; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} -//! moment.js locale configuration -//! locale : English (Canada) [en-ca] -//! author : Jonathan Abourbih : https://github.com/jonbca +module.exports = baseIsEqual; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var enCa = moment.defineLocale('en-ca', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'YYYY-MM-DD', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY h:mm A', - LLLL: 'dddd, MMMM D, YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return enCa; +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js"), + equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); -}))); +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; -/***/ }), +/** Used for built-in method references. */ +var objectProto = Object.prototype; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -//! moment.js locale configuration -//! locale : English (United Kingdom) [en-gb] -//! author : Chris Gedrim : https://github.com/chrisgedrim +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; - //! moment.js locale configuration + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; - var enGb = moment.defineLocale('en-gb', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - return enGb; + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; -}))); + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +module.exports = baseIsEqualDeep; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : English (Ireland) [en-ie] -//! author : Chris Cartlidge : https://github.com/chriscartlidge +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; - //! moment.js locale configuration +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; - var enIe = moment.defineLocale('en-ie', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; - return enIe; + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} -}))); +module.exports = baseIsMatch; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (Israel) [en-il] -//! author : Chris Gedrim : https://github.com/chrisgedrim +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js ***! + \***********************************************************************************************/ +/***/ ((module) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} - //! moment.js locale configuration +module.exports = baseIsNaN; - var enIl = moment.defineLocale('en-il', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - }); - return enIl; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); -/***/ }), +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; -//! moment.js locale configuration -//! locale : English (India) [en-in] -//! author : Jatin Agrawal : https://github.com/jatinag22 +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - //! moment.js locale configuration +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - var enIn = moment.defineLocale('en-in', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 1st is the first week of the year. - }, - }); +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); - return enIn; +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} -}))); +module.exports = baseIsNative; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js ***! \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : English (New Zealand) [en-nz] -//! author : Luke McGregor : https://github.com/lukemcgregor +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; - //! moment.js locale configuration +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; - var enNz = moment.defineLocale('en-nz', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; - return enNz; +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} -}))); +module.exports = baseIsTypedArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (Singapore) [en-sg] -//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var enSg = moment.defineLocale('en-sg', { - months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js"), + baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + property = __webpack_require__(/*! ./property */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js"); - return enSg; +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} -}))); +module.exports = baseIteratee; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Esperanto [eo] -//! author : Colin Dean : https://github.com/colindean -//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia -//! comment : miestasmia corrected the translation by colindean -//! comment : Vivakvo corrected the translation by colindean and miestasmia +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js"), + nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js"); - //! moment.js locale configuration +/** Used for built-in method references. */ +var objectProto = Object.prototype; - var eo = moment.defineLocale('eo', { - months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( - '_' - ), - monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), - weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), - weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), - weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: '[la] D[-an de] MMMM, YYYY', - LLL: '[la] D[-an de] MMMM, YYYY HH:mm', - LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', - llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar: { - sameDay: '[Hodiaŭ je] LT', - nextDay: '[Morgaŭ je] LT', - nextWeek: 'dddd[n je] LT', - lastDay: '[Hieraŭ je] LT', - lastWeek: '[pasintan] dddd[n je] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'post %s', - past: 'antaŭ %s', - s: 'kelkaj sekundoj', - ss: '%d sekundoj', - m: 'unu minuto', - mm: '%d minutoj', - h: 'unu horo', - hh: '%d horoj', - d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo - dd: '%d tagoj', - M: 'unu monato', - MM: '%d monatoj', - y: 'unu jaro', - yy: '%d jaroj', - }, - dayOfMonthOrdinalParse: /\d{1,2}a/, - ordinal: '%da', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - return eo; +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} -}))); +module.exports = baseKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Spanish (Dominican Republic) [es-do] - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - - //! moment.js locale configuration - - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( - '_' - ), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), - monthsParse = [ - /^ene/i, - /^feb/i, - /^mar/i, - /^abr/i, - /^may/i, - /^jun/i, - /^jul/i, - /^ago/i, - /^sep/i, - /^oct/i, - /^nov/i, - /^dic/i, - ], - monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var esDo = moment.defineLocale('es-do', { - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY h:mm A', - LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', - }, - calendar: { - sameDay: function () { - return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextDay: function () { - return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastDay: function () { - return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [pasado a la' + - (this.hours() !== 1 ? 's' : '') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: 'en %s', - past: 'hace %s', - s: 'unos segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'una hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un año', - yy: '%d años', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js"), + getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"); - return esDo; +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} -}))); +module.exports = baseMatches; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Spanish (United States) [es-us] -//! author : bustta : https://github.com/bustta -//! author : chrisrodz : https://github.com/chrisrodz +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"), + get = __webpack_require__(/*! ./get */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); - //! moment.js locale configuration +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( - '_' - ), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), - monthsParse = [ - /^ene/i, - /^feb/i, - /^mar/i, - /^abr/i, - /^may/i, - /^jun/i, - /^jul/i, - /^ago/i, - /^sep/i, - /^oct/i, - /^nov/i, - /^dic/i, - ], - monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} - var esUs = moment.defineLocale('es-us', { - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'MM/DD/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY h:mm A', - LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', - }, - calendar: { - sameDay: function () { - return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextDay: function () { - return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastDay: function () { - return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [pasado a la' + - (this.hours() !== 1 ? 's' : '') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: 'en %s', - past: 'hace %s', - s: 'unos segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'una hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un año', - yy: '%d años', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +module.exports = baseMatchesProperty; - return esUs; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js ***! + \**************************************************************************************************/ +/***/ ((module) => { -/***/ }), +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +module.exports = baseProperty; -//! moment.js locale configuration -//! locale : Spanish [es] -//! author : Julio Napurí : https://github.com/julionc -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( - '_' - ), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), - monthsParse = [ - /^ene/i, - /^feb/i, - /^mar/i, - /^abr/i, - /^may/i, - /^jun/i, - /^jul/i, - /^ago/i, - /^sep/i, - /^oct/i, - /^nov/i, - /^dic/i, - ], - monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); - var es = moment.defineLocale('es', { - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY H:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', - }, - calendar: { - sameDay: function () { - return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextDay: function () { - return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - nextWeek: function () { - return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastDay: function () { - return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; - }, - lastWeek: function () { - return ( - '[el] dddd [pasado a la' + - (this.hours() !== 1 ? 's' : '') + - '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: 'en %s', - past: 'hace %s', - s: 'unos segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'una hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un año', - yy: '%d años', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - invalidDate: 'Fecha invalida', - }); +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} - return es; +module.exports = basePropertyDeep; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +module.exports = baseTimes; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Estonian [et] -//! author : Henry Kehlmann : https://github.com/madhenry -//! improvements : Illimar Tambek : https://github.com/ragulka +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; - //! moment.js locale configuration +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - ss: [number + 'sekundi', number + 'sekundit'], - m: ['ühe minuti', 'üks minut'], - mm: [number + ' minuti', number + ' minutit'], - h: ['ühe tunni', 'tund aega', 'üks tund'], - hh: [number + ' tunni', number + ' tundi'], - d: ['ühe päeva', 'üks päev'], - M: ['kuu aja', 'kuu aega', 'üks kuu'], - MM: [number + ' kuu', number + ' kuud'], - y: ['ühe aasta', 'aasta', 'üks aasta'], - yy: [number + ' aasta', number + ' aastat'], - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; - } +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - var et = moment.defineLocale('et', { - months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( - '_' - ), - monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split( - '_' - ), - weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( - '_' - ), - weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[Täna,] LT', - nextDay: '[Homme,] LT', - nextWeek: '[Järgmine] dddd LT', - lastDay: '[Eile,] LT', - lastWeek: '[Eelmine] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s pärast', - past: '%s tagasi', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: '%d päeva', - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = baseToString; - return et; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +module.exports = baseUnary; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Basque [eu] -//! author : Eneko Illarramendi : https://github.com/eillarra +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js"), + arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"), + createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - //! moment.js locale configuration +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; - var eu = moment.defineLocale('eu', { - months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( - '_' - ), - monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( - '_' - ), - weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY[ko] MMMM[ren] D[a]', - LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l: 'YYYY-M-D', - ll: 'YYYY[ko] MMM D[a]', - lll: 'YYYY[ko] MMM D[a] HH:mm', - llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', - }, - calendar: { - sameDay: '[gaur] LT[etan]', - nextDay: '[bihar] LT[etan]', - nextWeek: 'dddd LT[etan]', - lastDay: '[atzo] LT[etan]', - lastWeek: '[aurreko] dddd LT[etan]', - sameElse: 'L', - }, - relativeTime: { - future: '%s barru', - past: 'duela %s', - s: 'segundo batzuk', - ss: '%d segundo', - m: 'minutu bat', - mm: '%d minutu', - h: 'ordu bat', - hh: '%d ordu', - d: 'egun bat', - dd: '%d egun', - M: 'hilabete bat', - MM: '%d hilabete', - y: 'urte bat', - yy: '%d urte', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; - return eu; + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} -}))); +module.exports = baseUniq; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Persian [fa] -//! author : Ebrahim Byagowi : https://github.com/ebraminio +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = cacheHas; - //! moment.js locale configuration - var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰', - }, - numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0', - }; +/***/ }), - var fa = moment.defineLocale('fa', { - months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( - '_' - ), - monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( - '_' - ), - weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( - '_' - ), - weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( - '_' - ), - weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar: { - sameDay: '[امروز ساعت] LT', - nextDay: '[فردا ساعت] LT', - nextWeek: 'dddd [ساعت] LT', - lastDay: '[دیروز ساعت] LT', - lastWeek: 'dddd [پیش] [ساعت] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'در %s', - past: '%s پیش', - s: 'چند ثانیه', - ss: '%d ثانیه', - m: 'یک دقیقه', - mm: '%d دقیقه', - h: 'یک ساعت', - hh: '%d ساعت', - d: 'یک روز', - dd: '%d روز', - M: 'یک ماه', - MM: '%d ماه', - y: 'یک سال', - yy: '%d سال', - }, - preparse: function (string) { - return string - .replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - dayOfMonthOrdinalParse: /\d{1,2}م/, - ordinal: '%dم', - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return fa; +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js"), + toString = __webpack_require__(/*! ./toString */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js"); -}))); +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +module.exports = castPath; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Finnish [fi] -//! author : Tarmo Aidantausta : https://github.com/bleadof +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; - //! moment.js locale configuration +module.exports = coreJsData; - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( - ' ' - ), - numbersFuture = [ - 'nolla', - 'yhden', - 'kahden', - 'kolmen', - 'neljän', - 'viiden', - 'kuuden', - numbersPast[7], - numbersPast[8], - numbersPast[9], - ]; - function translate(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'ss': - return isFuture ? 'sekunnin' : 'sekuntia'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; - } - function verbalNumber(number, isFuture) { - return number < 10 - ? isFuture - ? numbersFuture[number] - : numbersPast[number] - : number; - } - var fi = moment.defineLocale('fi', { - months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( - '_' - ), - monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( - '_' - ), - weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( - '_' - ), - weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD.MM.YYYY', - LL: 'Do MMMM[ta] YYYY', - LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l: 'D.M.YYYY', - ll: 'Do MMM YYYY', - lll: 'Do MMM YYYY, [klo] HH.mm', - llll: 'ddd, Do MMM YYYY, [klo] HH.mm', - }, - calendar: { - sameDay: '[tänään] [klo] LT', - nextDay: '[huomenna] [klo] LT', - nextWeek: 'dddd [klo] LT', - lastDay: '[eilen] [klo] LT', - lastWeek: '[viime] dddd[na] [klo] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s päästä', - past: '%s sitten', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return fi; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); +}; + +module.exports = createSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Filipino [fil] -//! author : Dan Hagman : https://github.com/hagmandan -//! author : Matthew Co : https://github.com/matthewdeeco +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; - //! moment.js locale configuration +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; - var fil = moment.defineLocale('fil', { - months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( - '_' - ), - monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( - '_' - ), - weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'MM/D/YYYY', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY HH:mm', - LLLL: 'dddd, MMMM DD, YYYY HH:mm', - }, - calendar: { - sameDay: 'LT [ngayong araw]', - nextDay: '[Bukas ng] LT', - nextWeek: 'LT [sa susunod na] dddd', - lastDay: 'LT [kahapon]', - lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L', - }, - relativeTime: { - future: 'sa loob ng %s', - past: '%s ang nakalipas', - s: 'ilang segundo', - ss: '%d segundo', - m: 'isang minuto', - mm: '%d minuto', - h: 'isang oras', - hh: '%d oras', - d: 'isang araw', - dd: '%d araw', - M: 'isang buwan', - MM: '%d buwan', - y: 'isang taon', - yy: '%d taon', - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: function (number) { - return number; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - return fil; + stack.set(array, other); + stack.set(other, array); -}))); + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Faroese [fo] -//! author : Ragnar Johannesen : https://github.com/ragnar123 -//! author : Kristian Sakarisson : https://github.com/sakarisson +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; - //! moment.js locale configuration +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; - var fo = moment.defineLocale('fo', { - months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( - '_' - ), - weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D. MMMM, YYYY HH:mm', - }, - calendar: { - sameDay: '[Í dag kl.] LT', - nextDay: '[Í morgin kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[Í gjár kl.] LT', - lastWeek: '[síðstu] dddd [kl] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'um %s', - past: '%s síðani', - s: 'fá sekund', - ss: '%d sekundir', - m: 'ein minuttur', - mm: '%d minuttir', - h: 'ein tími', - hh: '%d tímar', - d: 'ein dagur', - dd: '%d dagar', - M: 'ein mánaður', - MM: '%d mánaðir', - y: 'eitt ár', - yy: '%d ár', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; - return fo; +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; -}))); +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; -/***/ }), + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + case errorTag: + return object.name == other.name && object.message == other.message; -//! moment.js locale configuration -//! locale : French (Canada) [fr-ca] -//! author : Jonathan Abourbih : https://github.com/jonbca + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + case mapTag: + var convert = mapToArray; - //! moment.js locale configuration + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); - var frCa = moment.defineLocale('fr-ca', { - months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( - '_' - ), - monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Aujourd’hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dans %s', - past: 'il y a %s', - s: 'quelques secondes', - ss: '%d secondes', - m: 'une minute', - mm: '%d minutes', - h: 'une heure', - hh: '%d heures', - d: 'un jour', - dd: '%d jours', - M: 'un mois', - MM: '%d mois', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal: function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - }); + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; - return frCa; + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} -}))); +module.exports = equalByTag; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : French (Switzerland) [fr-ch] -//! author : Gaspard Bucher : https://github.com/gaspard +var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; - //! moment.js locale configuration +/** Used for built-in method references. */ +var objectProto = Object.prototype; - var frCh = moment.defineLocale('fr-ch', { - months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( - '_' - ), - monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Aujourd’hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dans %s', - past: 'il y a %s', - s: 'quelques secondes', - ss: '%d secondes', - m: 'une minute', - mm: '%d minutes', - h: 'une heure', - hh: '%d heures', - d: 'un jour', - dd: '%d jours', - M: 'un mois', - MM: '%d mois', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal: function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; - return frCh; + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); -}))); + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +module.exports = equalObjects; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js ***! + \************************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : French [fr] -//! author : John Fischer : https://github.com/jfroffice +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = freeGlobal; - //! moment.js locale configuration - var fr = moment.defineLocale('fr', { - months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( - '_' - ), - monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Aujourd’hui à] LT', - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dans %s', - past: 'il y a %s', - s: 'quelques secondes', - ss: '%d secondes', - m: 'une minute', - mm: '%d minutes', - h: 'une heure', - hh: '%d heures', - d: 'un jour', - dd: '%d jours', - M: 'un mois', - MM: '%d mois', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|)/, - ordinal: function (number, period) { - switch (period) { - // TODO: Return 'e' when day of month > 1. Move this case inside - // block for masculine words below. - // See https://github.com/moment/moment/issues/3375 - case 'D': - return number + (number === 1 ? 'er' : ''); +/***/ }), - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js"); - return fr; +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} -}))); +module.exports = getAllKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Frisian [fy] -//! author : Robin van der Vliet : https://github.com/robin0van0der0v +var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} - //! moment.js locale configuration +module.exports = getMapData; - var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split( - '_' - ), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split( - '_' - ); - var fy = moment.defineLocale('fy', { - months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - monthsParseExact: true, - weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( - '_' - ), - weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'oer %s', - past: '%s lyn', - s: 'in pear sekonden', - ss: '%d sekonden', - m: 'ien minút', - mm: '%d minuten', - h: 'ien oere', - hh: '%d oeren', - d: 'ien dei', - dd: '%d dagen', - M: 'ien moanne', - MM: '%d moannen', - y: 'ien jier', - yy: '%d jierren', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return fy; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js"); +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; -/***/ }), + while (length--) { + var key = result[length], + value = object[key]; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} -//! moment.js locale configuration -//! locale : Irish or Irish Gaelic [ga] -//! author : André Silva : https://github.com/askpt +module.exports = getMatchData; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var months = [ - 'Eanáir', - 'Feabhra', - 'Márta', - 'Aibreán', - 'Bealtaine', - 'Meitheamh', - 'Iúil', - 'Lúnasa', - 'Meán Fómhair', - 'Deireadh Fómhair', - 'Samhain', - 'Nollaig', - ], - monthsShort = [ - 'Ean', - 'Feabh', - 'Márt', - 'Aib', - 'Beal', - 'Meith', - 'Iúil', - 'Lún', - 'M.F.', - 'D.F.', - 'Samh', - 'Noll', - ], - weekdays = [ - 'Dé Domhnaigh', - 'Dé Luain', - 'Dé Máirt', - 'Dé Céadaoin', - 'Déardaoin', - 'Dé hAoine', - 'Dé Sathairn', - ], - weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], - weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var ga = moment.defineLocale('ga', { - months: months, - monthsShort: monthsShort, - monthsParseExact: true, - weekdays: weekdays, - weekdaysShort: weekdaysShort, - weekdaysMin: weekdaysMin, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Inniu ag] LT', - nextDay: '[Amárach ag] LT', - nextWeek: 'dddd [ag] LT', - lastDay: '[Inné ag] LT', - lastWeek: 'dddd [seo caite] [ag] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'i %s', - past: '%s ó shin', - s: 'cúpla soicind', - ss: '%d soicind', - m: 'nóiméad', - mm: '%d nóiméad', - h: 'uair an chloig', - hh: '%d uair an chloig', - d: 'lá', - dd: '%d lá', - M: 'mí', - MM: '%d míonna', - y: 'bliain', - yy: '%d bliain', - }, - dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, - ordinal: function (number) { - var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js"), + getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js"); - return ga; +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} -}))); +module.exports = getNative; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Scottish Gaelic [gd] -//! author : Jon Ashdown : https://github.com/jonashdown +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - var months = [ - 'Am Faoilleach', - 'An Gearran', - 'Am Màrt', - 'An Giblean', - 'An Cèitean', - 'An t-Ògmhios', - 'An t-Iuchar', - 'An Lùnastal', - 'An t-Sultain', - 'An Dàmhair', - 'An t-Samhain', - 'An Dùbhlachd', - ], - monthsShort = [ - 'Faoi', - 'Gear', - 'Màrt', - 'Gibl', - 'Cèit', - 'Ògmh', - 'Iuch', - 'Lùn', - 'Sult', - 'Dàmh', - 'Samh', - 'Dùbh', - ], - weekdays = [ - 'Didòmhnaich', - 'Diluain', - 'Dimàirt', - 'Diciadain', - 'Diardaoin', - 'Dihaoine', - 'Disathairne', - ], - weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], - weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - var gd = moment.defineLocale('gd', { - months: months, - monthsShort: monthsShort, - monthsParseExact: true, - weekdays: weekdays, - weekdaysShort: weekdaysShort, - weekdaysMin: weekdaysMin, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[An-diugh aig] LT', - nextDay: '[A-màireach aig] LT', - nextWeek: 'dddd [aig] LT', - lastDay: '[An-dè aig] LT', - lastWeek: 'dddd [seo chaidh] [aig] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'ann an %s', - past: 'bho chionn %s', - s: 'beagan diogan', - ss: '%d diogan', - m: 'mionaid', - mm: '%d mionaidean', - h: 'uair', - hh: '%d uairean', - d: 'latha', - dd: '%d latha', - M: 'mìos', - MM: '%d mìosan', - y: 'bliadhna', - yy: '%d bliadhna', - }, - dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, - ordinal: function (number) { - var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - return gd; +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; -}))); + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Galician [gl] -//! author : Juan G. Hurtado : https://github.com/juanghurtado +var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; - var gl = moment.defineLocale('gl', { - months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( - '_' - ), - monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), - weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), - weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY H:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', - }, - calendar: { - sameDay: function () { - return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; - }, - nextDay: function () { - return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; - }, - nextWeek: function () { - return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; - }, - lastDay: function () { - return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; - }, - lastWeek: function () { - return ( - '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' - ); - }, - sameElse: 'L', - }, - relativeTime: { - future: function (str) { - if (str.indexOf('un') === 0) { - return 'n' + str; - } - return 'en ' + str; - }, - past: 'hai %s', - s: 'uns segundos', - ss: '%d segundos', - m: 'un minuto', - mm: '%d minutos', - h: 'unha hora', - hh: '%d horas', - d: 'un día', - dd: '%d días', - M: 'un mes', - MM: '%d meses', - y: 'un ano', - yy: '%d anos', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; - return gl; +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; -}))); +module.exports = getSymbols; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Konkani Devanagari script [gom-deva] -//! author : The Discoverer : https://github.com/WikiDiscoverer +var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js"), + Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js"), + baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; - //! moment.js locale configuration +var dataViewTag = '[object DataView]'; - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], - ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], - m: ['एका मिणटान', 'एक मिनूट'], - mm: [number + ' मिणटांनी', number + ' मिणटां'], - h: ['एका वरान', 'एक वर'], - hh: [number + ' वरांनी', number + ' वरां'], - d: ['एका दिसान', 'एक दीस'], - dd: [number + ' दिसांनी', number + ' दीस'], - M: ['एका म्हयन्यान', 'एक म्हयनो'], - MM: [number + ' म्हयन्यानी', number + ' म्हयने'], - y: ['एका वर्सान', 'एक वर्स'], - yy: [number + ' वर्सांनी', number + ' वर्सां'], - }; - return isFuture ? format[key][0] : format[key][1]; +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } } + return result; + }; +} - var gomDeva = moment.defineLocale('gom-deva', { - months: { - standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( - '_' - ), - format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( - '_' - ), - isFormat: /MMMM(\s)+D[oD]?/, - }, - monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), - weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), - weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'A h:mm [वाजतां]', - LTS: 'A h:mm:ss [वाजतां]', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY A h:mm [वाजतां]', - LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]', - llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', - }, - calendar: { - sameDay: '[आयज] LT', - nextDay: '[फाल्यां] LT', - nextWeek: '[फुडलो] dddd[,] LT', - lastDay: '[काल] LT', - lastWeek: '[फाटलो] dddd[,] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s', - past: '%s आदीं', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, - ordinal: function (number, period) { - switch (period) { - // the ordinal 'वेर' only applies to day of the month - case 'D': - return number + 'वेर'; - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - case 'w': - case 'W': - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राती') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळीं') { - return hour; - } else if (meridiem === 'दनपारां') { - return hour > 12 ? hour : hour + 12; - } else if (meridiem === 'सांजे') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'राती'; - } else if (hour < 12) { - return 'सकाळीं'; - } else if (hour < 16) { - return 'दनपारां'; - } else if (hour < 20) { - return 'सांजे'; - } else { - return 'राती'; - } - }, - }); +module.exports = getTag; - return gomDeva; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js ***! + \**********************************************************************************************/ +/***/ ((module) => { + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +module.exports = getValue; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Konkani Latin script [gom-latn] -//! author : The Discoverer : https://github.com/WikiDiscoverer +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); - //! moment.js locale configuration + var index = -1, + length = path.length, + result = false; - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['thoddea sekondamni', 'thodde sekond'], - ss: [number + ' sekondamni', number + ' sekond'], - m: ['eka mintan', 'ek minut'], - mm: [number + ' mintamni', number + ' mintam'], - h: ['eka voran', 'ek vor'], - hh: [number + ' voramni', number + ' voram'], - d: ['eka disan', 'ek dis'], - dd: [number + ' disamni', number + ' dis'], - M: ['eka mhoinean', 'ek mhoino'], - MM: [number + ' mhoineamni', number + ' mhoine'], - y: ['eka vorsan', 'ek voros'], - yy: [number + ' vorsamni', number + ' vorsam'], - }; - return isFuture ? format[key][0] : format[key][1]; + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} - var gomLatn = moment.defineLocale('gom-latn', { - months: { - standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( - '_' - ), - format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( - '_' - ), - isFormat: /MMMM(\s)+D[oD]?/, - }, - monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), - weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), - weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'A h:mm [vazta]', - LTS: 'A h:mm:ss [vazta]', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY A h:mm [vazta]', - LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', - llll: 'ddd, D MMM YYYY, A h:mm [vazta]', - }, - calendar: { - sameDay: '[Aiz] LT', - nextDay: '[Faleam] LT', - nextWeek: '[Fuddlo] dddd[,] LT', - lastDay: '[Kal] LT', - lastWeek: '[Fattlo] dddd[,] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s', - past: '%s adim', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, - }, - dayOfMonthOrdinalParse: /\d{1,2}(er)/, - ordinal: function (number, period) { - switch (period) { - // the ordinal 'er' only applies to day of the month - case 'D': - return number + 'er'; - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - case 'w': - case 'W': - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /rati|sokallim|donparam|sanje/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'rati') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'sokallim') { - return hour; - } else if (meridiem === 'donparam') { - return hour > 12 ? hour : hour + 12; - } else if (meridiem === 'sanje') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'rati'; - } else if (hour < 12) { - return 'sokallim'; - } else if (hour < 16) { - return 'donparam'; - } else if (hour < 20) { - return 'sanje'; - } else { - return 'rati'; - } - }, - }); - - return gomLatn; - -}))); +module.exports = hasPath; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Gujarati [gu] -//! author : Kaushik Thanki : https://github.com/Kaushik1987 +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} - //! moment.js locale configuration +module.exports = hashClear; - var symbolMap = { - '1': '૧', - '2': '૨', - '3': '૩', - '4': '૪', - '5': '૫', - '6': '૬', - '7': '૭', - '8': '૮', - '9': '૯', - '0': '૦', - }, - numberMap = { - '૧': '1', - '૨': '2', - '૩': '3', - '૪': '4', - '૫': '5', - '૬': '6', - '૭': '7', - '૮': '8', - '૯': '9', - '૦': '0', - }; - var gu = moment.defineLocale('gu', { - months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( - '_' - ), - monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( - '_' - ), - weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), - weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), - longDateFormat: { - LT: 'A h:mm વાગ્યે', - LTS: 'A h:mm:ss વાગ્યે', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm વાગ્યે', - LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', - }, - calendar: { - sameDay: '[આજ] LT', - nextDay: '[કાલે] LT', - nextWeek: 'dddd, LT', - lastDay: '[ગઇકાલે] LT', - lastWeek: '[પાછલા] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s મા', - past: '%s પેહલા', - s: 'અમુક પળો', - ss: '%d સેકંડ', - m: 'એક મિનિટ', - mm: '%d મિનિટ', - h: 'એક કલાક', - hh: '%d કલાક', - d: 'એક દિવસ', - dd: '%d દિવસ', - M: 'એક મહિનો', - MM: '%d મહિનો', - y: 'એક વર્ષ', - yy: '%d વર્ષ', - }, - preparse: function (string) { - return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Gujarati notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. - meridiemParse: /રાત|બપોર|સવાર|સાંજ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'રાત') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'સવાર') { - return hour; - } else if (meridiem === 'બપોર') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'સાંજ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'રાત'; - } else if (hour < 10) { - return 'સવાર'; - } else if (hour < 17) { - return 'બપોર'; - } else if (hour < 20) { - return 'સાંજ'; - } else { - return 'રાત'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ }), - return gu; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js ***! + \************************************************************************************************/ +/***/ ((module) => { -}))); +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +module.exports = hashDelete; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Hebrew [he] -//! author : Tomer Cohen : https://github.com/tomer -//! author : Moshe Simantov : https://github.com/DevelopmentIL -//! author : Tal Ater : https://github.com/TalAter +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - //! moment.js locale configuration +/** Used for built-in method references. */ +var objectProto = Object.prototype; - var he = moment.defineLocale('he', { - months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( - '_' - ), - monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split( - '_' - ), - weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [ב]MMMM YYYY', - LLL: 'D [ב]MMMM YYYY HH:mm', - LLLL: 'dddd, D [ב]MMMM YYYY HH:mm', - l: 'D/M/YYYY', - ll: 'D MMM YYYY', - lll: 'D MMM YYYY HH:mm', - llll: 'ddd, D MMM YYYY HH:mm', - }, - calendar: { - sameDay: '[היום ב־]LT', - nextDay: '[מחר ב־]LT', - nextWeek: 'dddd [בשעה] LT', - lastDay: '[אתמול ב־]LT', - lastWeek: '[ביום] dddd [האחרון בשעה] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'בעוד %s', - past: 'לפני %s', - s: 'מספר שניות', - ss: '%d שניות', - m: 'דקה', - mm: '%d דקות', - h: 'שעה', - hh: function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d: 'יום', - dd: function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M: 'חודש', - MM: function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y: 'שנה', - yy: function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - }, - }, - meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, - isPM: function (input) { - return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 5) { - return 'לפנות בוקר'; - } else if (hour < 10) { - return 'בבוקר'; - } else if (hour < 12) { - return isLower ? 'לפנה"צ' : 'לפני הצהריים'; - } else if (hour < 18) { - return isLower ? 'אחה"צ' : 'אחרי הצהריים'; - } else { - return 'בערב'; - } - }, - }); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - return he; +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} -}))); +module.exports = hashGet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Hindi [hi] -//! author : Mayank Singhal : https://github.com/mayanksinghal +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; - //! moment.js locale configuration +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०', - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0', - }; +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} - var hi = moment.defineLocale('hi', { - months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( - '_' - ), - monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat: { - LT: 'A h:mm बजे', - LTS: 'A h:mm:ss बजे', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm बजे', - LLLL: 'dddd, D MMMM YYYY, A h:mm बजे', - }, - calendar: { - sameDay: '[आज] LT', - nextDay: '[कल] LT', - nextWeek: 'dddd, LT', - lastDay: '[कल] LT', - lastWeek: '[पिछले] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s में', - past: '%s पहले', - s: 'कुछ ही क्षण', - ss: '%d सेकंड', - m: 'एक मिनट', - mm: '%d मिनट', - h: 'एक घंटा', - hh: '%d घंटे', - d: 'एक दिन', - dd: '%d दिन', - M: 'एक महीने', - MM: '%d महीने', - y: 'एक वर्ष', - yy: '%d वर्ष', - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +module.exports = hashHas; - return hi; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; -//! moment.js locale configuration -//! locale : Croatian [hr] -//! author : Bojan Marković : https://github.com/bmarkovic +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = hashSet; - //! moment.js locale configuration - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - if (number === 1) { - result += 'sekunda'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sekunde'; - } else { - result += 'sekundi'; - } - return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } +/***/ }), - var hr = moment.defineLocale('hr', { - months: { - format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( - '_' - ), - standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( - '_' - ), - }, - monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'Do MMMM YYYY', - LLL: 'Do MMMM YYYY H:mm', - LLLL: 'dddd, Do MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[jučer u] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[prošlu] [nedjelju] [u] LT'; - case 3: - return '[prošlu] [srijedu] [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'prije %s', - s: 'par sekundi', - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: 'dan', - dd: translate, - M: 'mjesec', - MM: translate, - y: 'godinu', - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js ***! + \*********************************************************************************************/ +/***/ ((module) => { - return hr; +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; -}))); +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Hungarian [hu] -//! author : Adam Brunner : https://github.com/adambrunner +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; - //! moment.js locale configuration +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split( - ' ' - ); - function translate(number, withoutSuffix, key, isFuture) { - var num = number; - switch (key) { - case 's': - return isFuture || withoutSuffix - ? 'néhány másodperc' - : 'néhány másodperce'; - case 'ss': - return num + (isFuture || withoutSuffix) - ? ' másodperc' - : ' másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; - } - function week(isFuture) { - return ( - (isFuture ? '' : '[múlt] ') + - '[' + - weekEndings[this.day()] + - '] LT[-kor]' - ); - } +module.exports = isKey; - var hu = moment.defineLocale('hu', { - months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( - '_' - ), - monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split( - '_' - ), - weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'YYYY.MM.DD.', - LL: 'YYYY. MMMM D.', - LLL: 'YYYY. MMMM D. H:mm', - LLLL: 'YYYY. MMMM D., dddd H:mm', - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar: { - sameDay: '[ma] LT[-kor]', - nextDay: '[holnap] LT[-kor]', - nextWeek: function () { - return week.call(this, true); - }, - lastDay: '[tegnap] LT[-kor]', - lastWeek: function () { - return week.call(this, false); - }, - sameElse: 'L', - }, - relativeTime: { - future: '%s múlva', - past: '%s', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return hu; +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} -}))); +module.exports = isKeyable; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Armenian [hy-am] -//! author : Armendarabyan : https://github.com/armendarabyan +var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); - //! moment.js locale configuration +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} - var hyAm = moment.defineLocale('hy-am', { - months: { - format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( - '_' - ), - standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( - '_' - ), - }, - monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( - '_' - ), - weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY թ.', - LLL: 'D MMMM YYYY թ., HH:mm', - LLLL: 'dddd, D MMMM YYYY թ., HH:mm', - }, - calendar: { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L', - }, - relativeTime: { - future: '%s հետո', - past: '%s առաջ', - s: 'մի քանի վայրկյան', - ss: '%d վայրկյան', - m: 'րոպե', - mm: '%d րոպե', - h: 'ժամ', - hh: '%d ժամ', - d: 'օր', - dd: '%d օր', - M: 'ամիս', - MM: '%d ամիս', - y: 'տարի', - yy: '%d տարի', - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem: function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +module.exports = isMasked; - return hyAm; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js ***! + \*************************************************************************************************/ +/***/ ((module) => { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Indonesian [id] -//! author : Mohammad Satrio Utomo : https://github.com/tyok -//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} - //! moment.js locale configuration +module.exports = isStrictComparable; - var id = moment.defineLocale('id', { - months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), - weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar: { - sameDay: '[Hari ini pukul] LT', - nextDay: '[Besok pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kemarin pukul] LT', - lastWeek: 'dddd [lalu pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dalam %s', - past: '%s yang lalu', - s: 'beberapa detik', - ss: '%d detik', - m: 'semenit', - mm: '%d menit', - h: 'sejam', - hh: '%d jam', - d: 'sehari', - dd: '%d hari', - M: 'sebulan', - MM: '%d bulan', - y: 'setahun', - yy: '%d tahun', - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); - return id; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js ***! + \****************************************************************************************************/ +/***/ ((module) => { + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Icelandic [is] -//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Used for built-in method references. */ +var arrayProto = Array.prototype; - //! moment.js locale configuration +/** Built-in value references. */ +var splice = arrayProto.splice; - function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture - ? 'nokkrar sekúndur' - : 'nokkrum sekúndum'; - case 'ss': - if (plural(number)) { - return ( - result + - (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') - ); - } - return result + 'sekúnda'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return ( - result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') - ); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return ( - result + - (withoutSuffix || isFuture - ? 'klukkustundir' - : 'klukkustundum') - ); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } - } +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - var is = moment.defineLocale('is', { - months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( - '_' - ), - weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY [kl.] H:mm', - LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', - }, - calendar: { - sameDay: '[í dag kl.] LT', - nextDay: '[á morgun kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[í gær kl.] LT', - lastWeek: '[síðasta] dddd [kl.] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'eftir %s', - past: 'fyrir %s síðan', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: 'klukkustund', - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} - return is; +module.exports = listCacheDelete; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +module.exports = listCacheGet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Italian (Switzerland) [it-ch] -//! author : xfh : https://github.com/xfh +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} - //! moment.js locale configuration +module.exports = listCacheHas; - var itCh = moment.defineLocale('it-ch', { - months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( - '_' - ), - monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( - '_' - ), - weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: function (s) { - return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; - }, - past: '%s fa', - s: 'alcuni secondi', - ss: '%d secondi', - m: 'un minuto', - mm: '%d minuti', - h: "un'ora", - hh: '%d ore', - d: 'un giorno', - dd: '%d giorni', - M: 'un mese', - MM: '%d mesi', - y: 'un anno', - yy: '%d anni', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return itCh; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Italian [it] -//! author : Lorenzo : https://github.com/aliem -//! author: Mattia Larentis: https://github.com/nostalgiaz -//! author: Marco : https://github.com/Manfre98 +var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js"), + ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} - //! moment.js locale configuration +module.exports = mapCacheClear; - var it = moment.defineLocale('it', { - months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( - '_' - ), - monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( - '_' - ), - weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: function () { - return ( - '[Oggi a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - nextDay: function () { - return ( - '[Domani a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - nextWeek: function () { - return ( - 'dddd [a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - lastDay: function () { - return ( - '[Ieri a' + - (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + - ']LT' - ); - }, - lastWeek: function () { - switch (this.day()) { - case 0: - return ( - '[La scorsa] dddd [a' + - (this.hours() > 1 - ? 'lle ' - : this.hours() === 0 - ? ' ' - : "ll'") + - ']LT' - ); - default: - return ( - '[Lo scorso] dddd [a' + - (this.hours() > 1 - ? 'lle ' - : this.hours() === 0 - ? ' ' - : "ll'") + - ']LT' - ); - } - }, - sameElse: 'L', - }, - relativeTime: { - future: function (s) { - return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; - }, - past: '%s fa', - s: 'alcuni secondi', - ss: '%d secondi', - m: 'un minuto', - mm: '%d minuti', - h: "un'ora", - hh: '%d ore', - d: 'un giorno', - dd: '%d giorni', - M: 'un mese', - MM: '%d mesi', - y: 'un anno', - yy: '%d anni', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return it; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Japanese [ja] -//! author : LI Long : https://github.com/baryon +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} - //! moment.js locale configuration +module.exports = mapCacheGet; - var ja = moment.defineLocale('ja', { - eras: [ - { - since: '2019-05-01', - offset: 1, - name: '令和', - narrow: '㋿', - abbr: 'R', - }, - { - since: '1989-01-08', - until: '2019-04-30', - offset: 1, - name: '平成', - narrow: '㍻', - abbr: 'H', - }, - { - since: '1926-12-25', - until: '1989-01-07', - offset: 1, - name: '昭和', - narrow: '㍼', - abbr: 'S', - }, - { - since: '1912-07-30', - until: '1926-12-24', - offset: 1, - name: '大正', - narrow: '㍽', - abbr: 'T', - }, - { - since: '1873-01-01', - until: '1912-07-29', - offset: 6, - name: '明治', - narrow: '㍾', - abbr: 'M', - }, - { - since: '0001-01-01', - until: '1873-12-31', - offset: 1, - name: '西暦', - narrow: 'AD', - abbr: 'AD', - }, - { - since: '0000-12-31', - until: -Infinity, - offset: 1, - name: '紀元前', - narrow: 'BC', - abbr: 'BC', - }, - ], - eraYearOrdinalRegex: /(元|\d+)年/, - eraYearOrdinalParse: function (input, match) { - return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); - }, - months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort: '日_月_火_水_木_金_土'.split('_'), - weekdaysMin: '日_月_火_水_木_金_土'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日 dddd HH:mm', - l: 'YYYY/MM/DD', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日(ddd) HH:mm', - }, - meridiemParse: /午前|午後/i, - isPM: function (input) { - return input === '午後'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar: { - sameDay: '[今日] LT', - nextDay: '[明日] LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - return '[来週]dddd LT'; - } else { - return 'dddd LT'; - } - }, - lastDay: '[昨日] LT', - lastWeek: function (now) { - if (this.week() !== now.week()) { - return '[先週]dddd LT'; - } else { - return 'dddd LT'; - } - }, - sameElse: 'L', - }, - dayOfMonthOrdinalParse: /\d{1,2}日/, - ordinal: function (number, period) { - switch (period) { - case 'y': - return number === 1 ? '元年' : number + '年'; - case 'd': - case 'D': - case 'DDD': - return number + '日'; - default: - return number; - } - }, - relativeTime: { - future: '%s後', - past: '%s前', - s: '数秒', - ss: '%d秒', - m: '1分', - mm: '%d分', - h: '1時間', - hh: '%d時間', - d: '1日', - dd: '%d日', - M: '1ヶ月', - MM: '%dヶ月', - y: '1年', - yy: '%d年', - }, - }); - return ja; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +module.exports = mapCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js ***! + \************************************************************************************************/ +/***/ ((module) => { + +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} -//! moment.js locale configuration -//! locale : Javanese [jv] -//! author : Rony Lantip : https://github.com/lantip -//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa +module.exports = mapToArray; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var jv = moment.defineLocale('jv', { - months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar: { - sameDay: '[Dinten puniko pukul] LT', - nextDay: '[Mbenjang pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kala wingi pukul] LT', - lastWeek: 'dddd [kepengker pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'wonten ing %s', - past: '%s ingkang kepengker', - s: 'sawetawis detik', - ss: '%d detik', - m: 'setunggal menit', - mm: '%d menit', - h: 'setunggal jam', - hh: '%d jam', - d: 'sedinten', - dd: '%d dinten', - M: 'sewulan', - MM: '%d wulan', - y: 'setaun', - yy: '%d taun', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js ***! + \*************************************************************************************************************/ +/***/ ((module) => { - return jv; +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} -}))); +module.exports = matchesStrictComparable; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Georgian [ka] -//! author : Irakli Janiashvili : https://github.com/IrakliJani +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js"); - //! moment.js locale configuration +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; - var ka = moment.defineLocale('ka', { - months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( - '_' - ), - monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays: { - standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( - '_' - ), - format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( - '_' - ), - isFormat: /(წინა|შემდეგ)/, - }, - weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[დღეს] LT[-ზე]', - nextDay: '[ხვალ] LT[-ზე]', - lastDay: '[გუშინ] LT[-ზე]', - nextWeek: '[შემდეგ] dddd LT[-ზე]', - lastWeek: '[წინა] dddd LT-ზე', - sameElse: 'L', - }, - relativeTime: { - future: function (s) { - return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ( - $0, - $1, - $2 - ) { - return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; - }); - }, - past: function (s) { - if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { - return s.replace(/(ი|ე)$/, 'ის წინ'); - } - if (/წელი/.test(s)) { - return s.replace(/წელი$/, 'წლის წინ'); - } - return s; - }, - s: 'რამდენიმე წამი', - ss: '%d წამი', - m: 'წუთი', - mm: '%d წუთი', - h: 'საათი', - hh: '%d საათი', - d: 'დღე', - dd: '%d დღე', - M: 'თვე', - MM: '%d თვე', - y: 'წელი', - yy: '%d წელი', - }, - dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal: function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ( - number < 20 || - (number <= 100 && number % 20 === 0) || - number % 100 === 0 - ) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week: { - dow: 1, - doy: 7, - }, - }); +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); - return ka; + var cache = result.cache; + return result; +} -}))); +module.exports = memoizeCapped; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Kazakh [kk] -//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); - //! moment.js locale configuration +module.exports = nativeCreate; - var suffixes = { - 0: '-ші', - 1: '-ші', - 2: '-ші', - 3: '-ші', - 4: '-ші', - 5: '-ші', - 6: '-шы', - 7: '-ші', - 8: '-ші', - 9: '-шы', - 10: '-шы', - 20: '-шы', - 30: '-шы', - 40: '-шы', - 50: '-ші', - 60: '-шы', - 70: '-ші', - 80: '-ші', - 90: '-шы', - 100: '-ші', - }; - var kk = moment.defineLocale('kk', { - months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( - '_' - ), - monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), - weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( - '_' - ), - weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), - weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Бүгін сағат] LT', - nextDay: '[Ертең сағат] LT', - nextWeek: 'dddd [сағат] LT', - lastDay: '[Кеше сағат] LT', - lastWeek: '[Өткен аптаның] dddd [сағат] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ішінде', - past: '%s бұрын', - s: 'бірнеше секунд', - ss: '%d секунд', - m: 'бір минут', - mm: '%d минут', - h: 'бір сағат', - hh: '%d сағат', - d: 'бір күн', - dd: '%d күн', - M: 'бір ай', - MM: '%d ай', - y: 'бір жыл', - yy: '%d жыл', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, - ordinal: function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ }), - return kk; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js"); +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); -/***/ }), +module.exports = nativeKeys; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Cambodian [km] -//! author : Kruy Vanna : https://github.com/kruyvanna +/***/ }), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js ***! + \**********************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { - //! moment.js locale configuration +/* module decorator */ module = __webpack_require__.nmd(module); +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); - var symbolMap = { - '1': '១', - '2': '២', - '3': '៣', - '4': '៤', - '5': '៥', - '6': '៦', - '7': '៧', - '8': '៨', - '9': '៩', - '0': '០', - }, - numberMap = { - '១': '1', - '២': '2', - '៣': '3', - '៤': '4', - '៥': '5', - '៦': '6', - '៧': '7', - '៨': '8', - '៩': '9', - '០': '0', - }; +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; - var km = moment.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( - '_' - ), - monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( - '_' - ), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), - weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - meridiemParse: /ព្រឹក|ល្ងាច/, - isPM: function (input) { - return input === 'ល្ងាច'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ព្រឹក'; - } else { - return 'ល្ងាច'; - } - }, - calendar: { - sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - ss: '%d វិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ', - }, - dayOfMonthOrdinalParse: /ទី\d{1,2}/, - ordinal: 'ទី%d', - preparse: function (string) { - return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; - return km; +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; -}))); +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; -/***/ }), + if (types) { + return types; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); -//! moment.js locale configuration -//! locale : Kannada [kn] -//! author : Rajeev Naik : https://github.com/rajeevnaikte +module.exports = nodeUtil; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var symbolMap = { - '1': '೧', - '2': '೨', - '3': '೩', - '4': '೪', - '5': '೫', - '6': '೬', - '7': '೭', - '8': '೮', - '9': '೯', - '0': '೦', - }, - numberMap = { - '೧': '1', - '೨': '2', - '೩': '3', - '೪': '4', - '೫': '5', - '೬': '6', - '೭': '7', - '೮': '8', - '೯': '9', - '೦': '0', - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js ***! + \****************************************************************************************************/ +/***/ ((module) => { - var kn = moment.defineLocale('kn', { - months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( - '_' - ), - monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( - '_' - ), - weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), - weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm', - LLLL: 'dddd, D MMMM YYYY, A h:mm', - }, - calendar: { - sameDay: '[ಇಂದು] LT', - nextDay: '[ನಾಳೆ] LT', - nextWeek: 'dddd, LT', - lastDay: '[ನಿನ್ನೆ] LT', - lastWeek: '[ಕೊನೆಯ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ನಂತರ', - past: '%s ಹಿಂದೆ', - s: 'ಕೆಲವು ಕ್ಷಣಗಳು', - ss: '%d ಸೆಕೆಂಡುಗಳು', - m: 'ಒಂದು ನಿಮಿಷ', - mm: '%d ನಿಮಿಷ', - h: 'ಒಂದು ಗಂಟೆ', - hh: '%d ಗಂಟೆ', - d: 'ಒಂದು ದಿನ', - dd: '%d ದಿನ', - M: 'ಒಂದು ತಿಂಗಳು', - MM: '%d ತಿಂಗಳು', - y: 'ಒಂದು ವರ್ಷ', - yy: '%d ವರ್ಷ', - }, - preparse: function (string) { - return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ರಾತ್ರಿ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { - return hour; - } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ಸಂಜೆ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ರಾತ್ರಿ'; - } else if (hour < 10) { - return 'ಬೆಳಿಗ್ಗೆ'; - } else if (hour < 17) { - return 'ಮಧ್ಯಾಹ್ನ'; - } else if (hour < 20) { - return 'ಸಂಜೆ'; - } else { - return 'ರಾತ್ರಿ'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, - ordinal: function (number) { - return number + 'ನೇ'; - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/** Used for built-in method references. */ +var objectProto = Object.prototype; - return kn; +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; -}))); +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} +module.exports = objectToString; -/***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ }), -//! moment.js locale configuration -//! locale : Korean [ko] -//! author : Kyungwook, Park : https://github.com/kyungw00k -//! author : Jeeeyul Lee +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js ***! + \*********************************************************************************************/ +/***/ ((module) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} - //! moment.js locale configuration +module.exports = overArg; - var ko = moment.defineLocale('ko', { - months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( - '_' - ), - weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort: '일_월_화_수_목_금_토'.split('_'), - weekdaysMin: '일_월_화_수_목_금_토'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'YYYY.MM.DD.', - LL: 'YYYY년 MMMM D일', - LLL: 'YYYY년 MMMM D일 A h:mm', - LLLL: 'YYYY년 MMMM D일 dddd A h:mm', - l: 'YYYY.MM.DD.', - ll: 'YYYY년 MMMM D일', - lll: 'YYYY년 MMMM D일 A h:mm', - llll: 'YYYY년 MMMM D일 dddd A h:mm', - }, - calendar: { - sameDay: '오늘 LT', - nextDay: '내일 LT', - nextWeek: 'dddd LT', - lastDay: '어제 LT', - lastWeek: '지난주 dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s 후', - past: '%s 전', - s: '몇 초', - ss: '%d초', - m: '1분', - mm: '%d분', - h: '한 시간', - hh: '%d시간', - d: '하루', - dd: '%d일', - M: '한 달', - MM: '%d달', - y: '일 년', - yy: '%d년', - }, - dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '일'; - case 'M': - return number + '월'; - case 'w': - case 'W': - return number + '주'; - default: - return number; - } - }, - meridiemParse: /오전|오후/, - isPM: function (token) { - return token === '오후'; - }, - meridiem: function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - }, - }); - return ko; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); -/***/ }), +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); -//! moment.js locale configuration -//! locale : Kurdish [ku] -//! author : Shahram Mebashar : https://github.com/ShahramMebashar +module.exports = root; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠', - }, - numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0', - }, - months = [ - 'کانونی دووەم', - 'شوبات', - 'ئازار', - 'نیسان', - 'ئایار', - 'حوزەیران', - 'تەمموز', - 'ئاب', - 'ئەیلوول', - 'تشرینی یەكەم', - 'تشرینی دووەم', - 'كانونی یەکەم', - ]; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js ***! + \*************************************************************************************************/ +/***/ ((module) => { - var ku = moment.defineLocale('ku', { - months: months, - monthsShort: months, - weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split( - '_' - ), - weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split( - '_' - ), - weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - meridiemParse: /ئێواره‌|به‌یانی/, - isPM: function (input) { - return /ئێواره‌/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'به‌یانی'; - } else { - return 'ئێواره‌'; - } - }, - calendar: { - sameDay: '[ئه‌مرۆ كاتژمێر] LT', - nextDay: '[به‌یانی كاتژمێر] LT', - nextWeek: 'dddd [كاتژمێر] LT', - lastDay: '[دوێنێ كاتژمێر] LT', - lastWeek: 'dddd [كاتژمێر] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'له‌ %s', - past: '%s', - s: 'چه‌ند چركه‌یه‌ك', - ss: 'چركه‌ %d', - m: 'یه‌ك خوله‌ك', - mm: '%d خوله‌ك', - h: 'یه‌ك كاتژمێر', - hh: '%d كاتژمێر', - d: 'یه‌ك ڕۆژ', - dd: '%d ڕۆژ', - M: 'یه‌ك مانگ', - MM: '%d مانگ', - y: 'یه‌ك ساڵ', - yy: '%d ساڵ', - }, - preparse: function (string) { - return string - .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }) - .replace(/،/g, ','); - }, - postformat: function (string) { - return string - .replace(/\d/g, function (match) { - return symbolMap[match]; - }) - .replace(/,/g, '،'); - }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. - }, - }); +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - return ku; +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} -}))); +module.exports = setCacheAdd; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Kyrgyz [ky] -//! author : Chyngyz Arystan uulu : https://github.com/chyngyz +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js ***! + \*************************************************************************************************/ +/***/ ((module) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} - //! moment.js locale configuration +module.exports = setCacheHas; - var suffixes = { - 0: '-чү', - 1: '-чи', - 2: '-чи', - 3: '-чү', - 4: '-чү', - 5: '-чи', - 6: '-чы', - 7: '-чи', - 8: '-чи', - 9: '-чу', - 10: '-чу', - 20: '-чы', - 30: '-чу', - 40: '-чы', - 50: '-чү', - 60: '-чы', - 70: '-чи', - 80: '-чи', - 90: '-чу', - 100: '-чү', - }; - var ky = moment.defineLocale('ky', { - months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( - '_' - ), - monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( - '_' - ), - weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( - '_' - ), - weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), - weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Бүгүн саат] LT', - nextDay: '[Эртең саат] LT', - nextWeek: 'dddd [саат] LT', - lastDay: '[Кечээ саат] LT', - lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ичинде', - past: '%s мурун', - s: 'бирнече секунд', - ss: '%d секунд', - m: 'бир мүнөт', - mm: '%d мүнөт', - h: 'бир саат', - hh: '%d саат', - d: 'бир күн', - dd: '%d күн', - M: 'бир ай', - MM: '%d ай', - y: 'бир жыл', - yy: '%d жыл', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, - ordinal: function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ }), - return ky; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js ***! + \************************************************************************************************/ +/***/ ((module) => { -}))); +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +module.exports = setToArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Luxembourgish [lb] -//! author : mweimerskirch : https://github.com/mweimerskirch -//! author : David Raison : https://github.com/kwisatz +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} - //! moment.js locale configuration +module.exports = stackClear; - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - m: ['eng Minutt', 'enger Minutt'], - h: ['eng Stonn', 'enger Stonn'], - d: ['een Dag', 'engem Dag'], - M: ['ee Mount', 'engem Mount'], - y: ['ee Joer', 'engem Joer'], - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; - } - function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; - } - /** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, - firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } - } - var lb = moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( - '_' - ), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( - '_' - ), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - }, - }, - relativeTime: { - future: processFutureTime, - past: processPastTime, - s: 'e puer Sekonnen', - ss: '%d Sekonnen', - m: processRelativeTime, - mm: '%d Minutten', - h: processRelativeTime, - hh: '%d Stonnen', - d: processRelativeTime, - dd: '%d Deeg', - M: processRelativeTime, - MM: '%d Méint', - y: processRelativeTime, - yy: '%d Joer', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return lb; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js ***! + \*************************************************************************************************/ +/***/ ((module) => { -}))); +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +module.exports = stackDelete; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Lao [lo] -//! author : Ryan Hart : https://github.com/ryanhart2 +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = stackGet; - //! moment.js locale configuration - var lo = moment.defineLocale('lo', { - months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( - '_' - ), - monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( - '_' - ), - weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'ວັນdddd D MMMM YYYY HH:mm', - }, - meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, - isPM: function (input) { - return input === 'ຕອນແລງ'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ຕອນເຊົ້າ'; - } else { - return 'ຕອນແລງ'; - } - }, - calendar: { - sameDay: '[ມື້ນີ້ເວລາ] LT', - nextDay: '[ມື້ອື່ນເວລາ] LT', - nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', - lastDay: '[ມື້ວານນີ້ເວລາ] LT', - lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'ອີກ %s', - past: '%sຜ່ານມາ', - s: 'ບໍ່ເທົ່າໃດວິນາທີ', - ss: '%d ວິນາທີ', - m: '1 ນາທີ', - mm: '%d ນາທີ', - h: '1 ຊົ່ວໂມງ', - hh: '%d ຊົ່ວໂມງ', - d: '1 ມື້', - dd: '%d ມື້', - M: '1 ເດືອນ', - MM: '%d ເດືອນ', - y: '1 ປີ', - yy: '%d ປີ', - }, - dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, - ordinal: function (number) { - return 'ທີ່' + number; - }, - }); +/***/ }), - return lo; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -}))); +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} +module.exports = stackHas; -/***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ }), -//! moment.js locale configuration -//! locale : Lithuanian [lt] -//! author : Mindaugas Mozūras : https://github.com/mmozuras +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); - //! moment.js locale configuration +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - var units = { - ss: 'sekundė_sekundžių_sekundes', - m: 'minutė_minutės_minutę', - mm: 'minutės_minučių_minutes', - h: 'valanda_valandos_valandą', - hh: 'valandos_valandų_valandas', - d: 'diena_dienos_dieną', - dd: 'dienos_dienų_dienas', - M: 'mėnuo_mėnesio_mėnesį', - MM: 'mėnesiai_mėnesių_mėnesius', - y: 'metai_metų_metus', - yy: 'metai_metų_metus', - }; - function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } - } - function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix - ? forms(key)[0] - : isFuture - ? forms(key)[1] - : forms(key)[2]; - } - function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); - } - function forms(key) { - return units[key].split('_'); - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return ( - result + translateSingular(number, withoutSuffix, key[0], isFuture) - ); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; } - var lt = moment.defineLocale('lt', { - months: { - format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( - '_' - ), - standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( - '_' - ), - isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, - }, - monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays: { - format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( - '_' - ), - standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( - '_' - ), - isFormat: /dddd HH:mm/, - }, - weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY [m.] MMMM D [d.]', - LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l: 'YYYY-MM-DD', - ll: 'YYYY [m.] MMMM D [d.]', - lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', - }, - calendar: { - sameDay: '[Šiandien] LT', - nextDay: '[Rytoj] LT', - nextWeek: 'dddd LT', - lastDay: '[Vakar] LT', - lastWeek: '[Praėjusį] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: 'po %s', - past: 'prieš %s', - s: translateSeconds, - ss: translate, - m: translateSingular, - mm: translate, - h: translateSingular, - hh: translate, - d: translateSingular, - dd: translate, - M: translateSingular, - MM: translate, - y: translateSingular, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}-oji/, - ordinal: function (number) { - return number + '-oji'; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - - return lt; + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} -}))); +module.exports = stackSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js ***! \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Latvian [lv] -//! author : Kristaps Karlsons : https://github.com/skakri -//! author : Jānis Elmeris : https://github.com/JanisE - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ ((module) => { - //! moment.js locale configuration +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; - var units = { - ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), - m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), - mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), - h: 'stundas_stundām_stunda_stundas'.split('_'), - hh: 'stundas_stundām_stunda_stundas'.split('_'), - d: 'dienas_dienām_diena_dienas'.split('_'), - dd: 'dienas_dienām_diena_dienas'.split('_'), - M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - y: 'gada_gadiem_gads_gadi'.split('_'), - yy: 'gada_gadiem_gads_gadi'.split('_'), - }; - /** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ - function format(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; - } - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); - } - function relativeTimeWithSingular(number, withoutSuffix, key) { - return format(units[key], number, withoutSuffix); - } - function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; + while (++index < length) { + if (array[index] === value) { + return index; } + } + return -1; +} - var lv = moment.defineLocale('lv', { - months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( - '_' - ), - weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY.', - LL: 'YYYY. [gada] D. MMMM', - LLL: 'YYYY. [gada] D. MMMM, HH:mm', - LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', - }, - calendar: { - sameDay: '[Šodien pulksten] LT', - nextDay: '[Rīt pulksten] LT', - nextWeek: 'dddd [pulksten] LT', - lastDay: '[Vakar pulksten] LT', - lastWeek: '[Pagājušā] dddd [pulksten] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'pēc %s', - past: 'pirms %s', - s: relativeSeconds, - ss: relativeTimeWithPlural, - m: relativeTimeWithSingular, - mm: relativeTimeWithPlural, - h: relativeTimeWithSingular, - hh: relativeTimeWithPlural, - d: relativeTimeWithSingular, - dd: relativeTimeWithPlural, - M: relativeTimeWithSingular, - MM: relativeTimeWithPlural, - y: relativeTimeWithSingular, - yy: relativeTimeWithPlural, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +module.exports = strictIndexOf; - return lv; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js"); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; -//! moment.js locale configuration -//! locale : Montenegrin [me] -//! author : Miodrag Nikač : https://github.com/miodragnikac +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); - //! moment.js locale configuration +module.exports = stringToPath; - var translator = { - words: { - //Different grammatical cases - ss: ['sekund', 'sekunda', 'sekundi'], - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'], - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 - ? wordKey[0] - : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return ( - number + - ' ' + - translator.correctGrammaticalCase(number, wordKey) - ); - } - }, - }; - var me = moment.defineLocale('me', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', +/***/ }), - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[juče u] LT', - lastWeek: function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT', - ]; - return lastWeekDays[this.day()]; - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'prije %s', - s: 'nekoliko sekundi', - ss: translator.translate, - m: translator.translate, - mm: translator.translate, - h: translator.translate, - hh: translator.translate, - d: 'dan', - dd: translator.translate, - M: 'mjesec', - MM: translator.translate, - y: 'godinu', - yy: translator.translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return me; +var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); -}))); +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} -/***/ }), +module.exports = toKey; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Maori [mi] -//! author : John Corrigan : https://github.com/johnideal +/***/ }), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js ***! + \**********************************************************************************************/ +/***/ ((module) => { - //! moment.js locale configuration +/** Used for built-in method references. */ +var funcProto = Function.prototype; - var mi = moment.defineLocale('mi', { - months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split( - '_' - ), - monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( - '_' - ), - monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, - weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), - weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [i] HH:mm', - LLLL: 'dddd, D MMMM YYYY [i] HH:mm', - }, - calendar: { - sameDay: '[i teie mahana, i] LT', - nextDay: '[apopo i] LT', - nextWeek: 'dddd [i] LT', - lastDay: '[inanahi i] LT', - lastWeek: 'dddd [whakamutunga i] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'i roto i %s', - past: '%s i mua', - s: 'te hēkona ruarua', - ss: '%d hēkona', - m: 'he meneti', - mm: '%d meneti', - h: 'te haora', - hh: '%d haora', - d: 'he ra', - dd: '%d ra', - M: 'he marama', - MM: '%d marama', - y: 'he tau', - yy: '%d tau', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - return mi; +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} -}))); +module.exports = toSource; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js ***! + \***************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Macedonian [mk] -//! author : Borislav Mickov : https://github.com/B0k0 -//! author : Sashko Todorov : https://github.com/bkyceh +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = eq; - //! moment.js locale configuration - var mk = moment.defineLocale('mk', { - months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( - '_' - ), - monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( - '_' - ), - weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'D.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY H:mm', - LLLL: 'dddd, D MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[Денес во] LT', - nextDay: '[Утре во] LT', - nextWeek: '[Во] dddd [во] LT', - lastDay: '[Вчера во] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Изминатиот] dddd [во] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'за %s', - past: 'пред %s', - s: 'неколку секунди', - ss: '%d секунди', - m: 'една минута', - mm: '%d минути', - h: 'еден час', - hh: '%d часа', - d: 'еден ден', - dd: '%d дена', - M: 'еден месец', - MM: '%d месеци', - y: 'една година', - yy: '%d години', - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal: function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/***/ }), - return mk; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js ***! + \****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js ***! + \******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Malayalam [ml] -//! author : Floyd Pink : https://github.com/floydpink +var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} - //! moment.js locale configuration +module.exports = hasIn; - var ml = moment.defineLocale('ml', { - months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( - '_' - ), - monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( - '_' - ), - weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat: { - LT: 'A h:mm -നു', - LTS: 'A h:mm:ss -നു', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm -നു', - LLLL: 'dddd, D MMMM YYYY, A h:mm -നു', - }, - calendar: { - sameDay: '[ഇന്ന്] LT', - nextDay: '[നാളെ] LT', - nextWeek: 'dddd, LT', - lastDay: '[ഇന്നലെ] LT', - lastWeek: '[കഴിഞ്ഞ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s കഴിഞ്ഞ്', - past: '%s മുൻപ്', - s: 'അൽപ നിമിഷങ്ങൾ', - ss: '%d സെക്കൻഡ്', - m: 'ഒരു മിനിറ്റ്', - mm: '%d മിനിറ്റ്', - h: 'ഒരു മണിക്കൂർ', - hh: '%d മണിക്കൂർ', - d: 'ഒരു ദിവസം', - dd: '%d ദിവസം', - M: 'ഒരു മാസം', - MM: '%d മാസം', - y: 'ഒരു വർഷം', - yy: '%d വർഷം', - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - (meridiem === 'രാത്രി' && hour >= 4) || - meridiem === 'ഉച്ച കഴിഞ്ഞ്' || - meridiem === 'വൈകുന്നേരം' - ) { - return hour + 12; - } else { - return hour; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - }, - }); - return ml; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js ***! + \*********************************************************************************************/ +/***/ ((module) => { +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} -/***/ }), +module.exports = identity; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Mongolian [mn] -//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7 +/***/ }), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //! moment.js locale configuration +var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); - function translate(number, withoutSuffix, key, isFuture) { - switch (key) { - case 's': - return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын'; - case 'ss': - return number + (withoutSuffix ? ' секунд' : ' секундын'); - case 'm': - case 'mm': - return number + (withoutSuffix ? ' минут' : ' минутын'); - case 'h': - case 'hh': - return number + (withoutSuffix ? ' цаг' : ' цагийн'); - case 'd': - case 'dd': - return number + (withoutSuffix ? ' өдөр' : ' өдрийн'); - case 'M': - case 'MM': - return number + (withoutSuffix ? ' сар' : ' сарын'); - case 'y': - case 'yy': - return number + (withoutSuffix ? ' жил' : ' жилийн'); - default: - return number; - } - } +/** Used for built-in method references. */ +var objectProto = Object.prototype; - var mn = moment.defineLocale('mn', { - months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( - '_' - ), - monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), - weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), - weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY оны MMMMын D', - LLL: 'YYYY оны MMMMын D HH:mm', - LLLL: 'dddd, YYYY оны MMMMын D HH:mm', - }, - meridiemParse: /ҮӨ|ҮХ/i, - isPM: function (input) { - return input === 'ҮХ'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ҮӨ'; - } else { - return 'ҮХ'; - } - }, - calendar: { - sameDay: '[Өнөөдөр] LT', - nextDay: '[Маргааш] LT', - nextWeek: '[Ирэх] dddd LT', - lastDay: '[Өчигдөр] LT', - lastWeek: '[Өнгөрсөн] dddd LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s дараа', - past: '%s өмнө', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2} өдөр/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + ' өдөр'; - default: - return number; - } - }, - }); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - return mn; +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; -}))); +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +module.exports = isArguments; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js ***! + \********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Marathi [mr] -//! author : Harshad Kale : https://github.com/kalehv -//! author : Vivek Athalye : https://github.com/vnathalye +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = isArray; - //! moment.js locale configuration - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०', - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0', - }; +/***/ }), - function relativeTimeMr(number, withoutSuffix, string, isFuture) { - var output = ''; - if (withoutSuffix) { - switch (string) { - case 's': - output = 'काही सेकंद'; - break; - case 'ss': - output = '%d सेकंद'; - break; - case 'm': - output = 'एक मिनिट'; - break; - case 'mm': - output = '%d मिनिटे'; - break; - case 'h': - output = 'एक तास'; - break; - case 'hh': - output = '%d तास'; - break; - case 'd': - output = 'एक दिवस'; - break; - case 'dd': - output = '%d दिवस'; - break; - case 'M': - output = 'एक महिना'; - break; - case 'MM': - output = '%d महिने'; - break; - case 'y': - output = 'एक वर्ष'; - break; - case 'yy': - output = '%d वर्षे'; - break; - } - } else { - switch (string) { - case 's': - output = 'काही सेकंदां'; - break; - case 'ss': - output = '%d सेकंदां'; - break; - case 'm': - output = 'एका मिनिटा'; - break; - case 'mm': - output = '%d मिनिटां'; - break; - case 'h': - output = 'एका तासा'; - break; - case 'hh': - output = '%d तासां'; - break; - case 'd': - output = 'एका दिवसा'; - break; - case 'dd': - output = '%d दिवसां'; - break; - case 'M': - output = 'एका महिन्या'; - break; - case 'MM': - output = '%d महिन्यां'; - break; - case 'y': - output = 'एका वर्षा'; - break; - case 'yy': - output = '%d वर्षां'; - break; - } - } - return output.replace(/%d/i, number); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var mr = moment.defineLocale('mr', { - months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( - '_' - ), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat: { - LT: 'A h:mm वाजता', - LTS: 'A h:mm:ss वाजता', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm वाजता', - LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता', - }, - calendar: { - sameDay: '[आज] LT', - nextDay: '[उद्या] LT', - nextWeek: 'dddd, LT', - lastDay: '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%sमध्ये', - past: '%sपूर्वी', - s: relativeTimeMr, - ss: relativeTimeMr, - m: relativeTimeMr, - mm: relativeTimeMr, - h: relativeTimeMr, - hh: relativeTimeMr, - d: relativeTimeMr, - dd: relativeTimeMr, - M: relativeTimeMr, - MM: relativeTimeMr, - y: relativeTimeMr, - yy: relativeTimeMr, - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { - return hour; - } else if ( - meridiem === 'दुपारी' || - meridiem === 'सायंकाळी' || - meridiem === 'रात्री' - ) { - return hour >= 12 ? hour : hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour >= 0 && hour < 6) { - return 'पहाटे'; - } else if (hour < 12) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js"); - return mr; +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} -}))); +module.exports = isArrayLike; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js ***! + \*********************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Malay [ms-my] -//! note : DEPRECATED, the correct one is [ms] -//! author : Weldan Jamili : https://github.com/weldan +/* module decorator */ module = __webpack_require__.nmd(module); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"), + stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; - //! moment.js locale configuration +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; - var msMy = moment.defineLocale('ms-my', { - months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar: { - sameDay: '[Hari ini pukul] LT', - nextDay: '[Esok pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kelmarin pukul] LT', - lastWeek: 'dddd [lepas pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dalam %s', - past: '%s yang lepas', - s: 'beberapa saat', - ss: '%d saat', - m: 'seminit', - mm: '%d minit', - h: 'sejam', - hh: '%d jam', - d: 'sehari', - dd: '%d hari', - M: 'sebulan', - MM: '%d bulan', - y: 'setahun', - yy: '%d tahun', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; - return msMy; +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; -}))); +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Malay [ms] -//! author : Weldan Jamili : https://github.com/weldan +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; - //! moment.js locale configuration +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} - var ms = moment.defineLocale('ms', { - months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [pukul] HH.mm', - LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar: { - sameDay: '[Hari ini pukul] LT', - nextDay: '[Esok pukul] LT', - nextWeek: 'dddd [pukul] LT', - lastDay: '[Kelmarin pukul] LT', - lastWeek: 'dddd [lepas pukul] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dalam %s', - past: '%s yang lepas', - s: 'beberapa saat', - ss: '%d saat', - m: 'seminit', - mm: '%d minit', - h: 'sejam', - hh: '%d jam', - d: 'sehari', - dd: '%d hari', - M: 'sebulan', - MM: '%d bulan', - y: 'setahun', - yy: '%d tahun', - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +module.exports = isFunction; - return ms; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js ***! + \*********************************************************************************************/ +/***/ ((module) => { + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js ***! + \*********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Maltese (Malta) [mt] -//! author : Alessandro Maruccia : https://github.com/alesma +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = isObject; - //! moment.js locale configuration - var mt = moment.defineLocale('mt', { - months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( - '_' - ), - monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), - weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( - '_' - ), - weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), - weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Illum fil-]LT', - nextDay: '[Għada fil-]LT', - nextWeek: 'dddd [fil-]LT', - lastDay: '[Il-bieraħ fil-]LT', - lastWeek: 'dddd [li għadda] [fil-]LT', - sameElse: 'L', - }, - relativeTime: { - future: 'f’ %s', - past: '%s ilu', - s: 'ftit sekondi', - ss: '%d sekondi', - m: 'minuta', - mm: '%d minuti', - h: 'siegħa', - hh: '%d siegħat', - d: 'ġurnata', - dd: '%d ġranet', - M: 'xahar', - MM: '%d xhur', - y: 'sena', - yy: '%d sni', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js ***! + \*************************************************************************************************/ +/***/ ((module) => { + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} - return mt; +module.exports = isObjectLike; -}))); + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Burmese [my] -//! author : Squar team, mysquar.com -//! author : David Rossellat : https://github.com/gholadr -//! author : Tin Aung Lin : https://github.com/thanyawzinmin +var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - //! moment.js locale configuration +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - var symbolMap = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀', - }, - numberMap = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0', - }; +module.exports = isTypedArray; - var my = moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( - '_' - ), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( - '_' - ), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L', - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - ss: '%d စက္ကန့်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်', - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return my; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -}))); +var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js"), + baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js"); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = keys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Norwegian Bokmål [nb] -//! authors : Espen Hovlandsdal : https://github.com/rexxars -//! Sigurd Gartmann : https://github.com/sigurdga -//! Stephen Ramthun : https://github.com/stephenramthun +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; - //! moment.js locale configuration +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; - var nb = moment.defineLocale('nb', { - months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( - '_' - ), - monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), - weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY [kl.] HH:mm', - LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', - }, - calendar: { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: '%s siden', - s: 'noen sekunder', - ss: '%d sekunder', - m: 'ett minutt', - mm: '%d minutter', - h: 'en time', - hh: '%d timer', - d: 'en dag', - dd: '%d dager', - M: 'en måned', - MM: '%d måneder', - y: 'ett år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} - return nb; +// Expose `MapCache`. +memoize.Cache = MapCache; -}))); +module.exports = memoize; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js ***! + \*****************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Nepalese [ne] -//! author : suvash : https://github.com/suvash +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = noop; - //! moment.js locale configuration - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०', - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0', - }; +/***/ }), - var ne = moment.defineLocale('ne', { - months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( - '_' - ), - monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( - '_' - ), - weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'Aको h:mm बजे', - LTS: 'Aको h:mm:ss बजे', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, Aको h:mm बजे', - LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे', - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /राति|बिहान|दिउँसो|साँझ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राति') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 3) { - return 'राति'; - } else if (hour < 12) { - return 'बिहान'; - } else if (hour < 16) { - return 'दिउँसो'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राति'; - } - }, - calendar: { - sameDay: '[आज] LT', - nextDay: '[भोलि] LT', - nextWeek: '[आउँदो] dddd[,] LT', - lastDay: '[हिजो] LT', - lastWeek: '[गएको] dddd[,] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%sमा', - past: '%s अगाडि', - s: 'केही क्षण', - ss: '%d सेकेण्ड', - m: 'एक मिनेट', - mm: '%d मिनेट', - h: 'एक घण्टा', - hh: '%d घण्टा', - d: 'एक दिन', - dd: '%d दिन', - M: 'एक महिना', - MM: '%d महिना', - y: 'एक बर्ष', - yy: '%d बर्ष', - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return ne; +var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js"), + basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); -}))); +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js ***! + \**********************************************************************************************/ +/***/ ((module) => { -//! moment.js locale configuration -//! locale : Dutch (Belgium) [nl-be] -//! author : Joris Röling : https://github.com/jorisroling -//! author : Jacob Middag : https://github.com/middagj +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = stubArray; - //! moment.js locale configuration - var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( - '_' - ), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( - '_' - ), - monthsParse = [ - /^jan/i, - /^feb/i, - /^maart|mrt.?$/i, - /^apr/i, - /^mei$/i, - /^jun[i.]?$/i, - /^jul[i.]?$/i, - /^aug/i, - /^sep/i, - /^okt/i, - /^nov/i, - /^dec/i, - ], - monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; +/***/ }), - var nlBe = moment.defineLocale('nl-be', { - months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js ***! + \**********************************************************************************************/ +/***/ ((module) => { - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, +module.exports = stubFalse; - weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( - '_' - ), - weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'over %s', - past: '%s geleden', - s: 'een paar seconden', - ss: '%d seconden', - m: 'één minuut', - mm: '%d minuten', - h: 'één uur', - hh: '%d uur', - d: 'één dag', - dd: '%d dagen', - M: 'één maand', - MM: '%d maanden', - y: 'één jaar', - yy: '%d jaar', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return nlBe; +/***/ }), -}))); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js"); -/***/ }), +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +module.exports = toString; -//! moment.js locale configuration -//! locale : Dutch [nl] -//! author : Joris Röling : https://github.com/jorisroling -//! author : Jacob Middag : https://github.com/middagj -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ }), - //! moment.js locale configuration +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( - '_' - ), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( - '_' - ), - monthsParse = [ - /^jan/i, - /^feb/i, - /^maart|mrt.?$/i, - /^apr/i, - /^mei$/i, - /^jun[i.]?$/i, - /^jul[i.]?$/i, - /^aug/i, - /^sep/i, - /^okt/i, - /^nov/i, - /^dec/i, - ], - monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; +var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js"), + baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js"); - var nl = moment.defineLocale('nl', { - months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( - '_' - ), - monthsShort: function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, +/** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ +function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : []; +} - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, +module.exports = uniqBy; - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( - '_' - ), - weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD-MM-YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'over %s', - past: '%s geleden', - s: 'een paar seconden', - ss: '%d seconden', - m: 'één minuut', - mm: '%d minuten', - h: 'één uur', - hh: '%d uur', - d: 'één dag', - dd: '%d dagen', - M: 'één maand', - MM: '%d maanden', - y: 'één jaar', - yy: '%d jaar', - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal: function (number) { - return ( - number + - (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') - ); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js ***! + \*************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +(function(){ + var crypt = __webpack_require__(/*! crypt */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js"), + utf8 = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js").utf8, + isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js"), + bin = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js").bin, + + // The core + md5 = function (message, options) { + // Convert to byte array + if (message.constructor == String) + if (options && options.encoding === 'binary') + message = bin.stringToBytes(message); + else + message = utf8.stringToBytes(message); + else if (isBuffer(message)) + message = Array.prototype.slice.call(message, 0); + else if (!Array.isArray(message)) + message = message.toString(); + // else, assume byte array already + + var m = crypt.bytesToWords(message), + l = message.length * 8, + a = 1732584193, + b = -271733879, + c = -1732584194, + d = 271733878; + + // Swap endian + for (var i = 0; i < m.length; i++) { + m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | + ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; + } + + // Padding + m[l >>> 5] |= 0x80 << (l % 32); + m[(((l + 64) >>> 9) << 4) + 14] = l; + + // Method shortcuts + var FF = md5._ff, + GG = md5._gg, + HH = md5._hh, + II = md5._ii; + + for (var i = 0; i < m.length; i += 16) { + + var aa = a, + bb = b, + cc = c, + dd = d; + + a = FF(a, b, c, d, m[i+ 0], 7, -680876936); + d = FF(d, a, b, c, m[i+ 1], 12, -389564586); + c = FF(c, d, a, b, m[i+ 2], 17, 606105819); + b = FF(b, c, d, a, m[i+ 3], 22, -1044525330); + a = FF(a, b, c, d, m[i+ 4], 7, -176418897); + d = FF(d, a, b, c, m[i+ 5], 12, 1200080426); + c = FF(c, d, a, b, m[i+ 6], 17, -1473231341); + b = FF(b, c, d, a, m[i+ 7], 22, -45705983); + a = FF(a, b, c, d, m[i+ 8], 7, 1770035416); + d = FF(d, a, b, c, m[i+ 9], 12, -1958414417); + c = FF(c, d, a, b, m[i+10], 17, -42063); + b = FF(b, c, d, a, m[i+11], 22, -1990404162); + a = FF(a, b, c, d, m[i+12], 7, 1804603682); + d = FF(d, a, b, c, m[i+13], 12, -40341101); + c = FF(c, d, a, b, m[i+14], 17, -1502002290); + b = FF(b, c, d, a, m[i+15], 22, 1236535329); + + a = GG(a, b, c, d, m[i+ 1], 5, -165796510); + d = GG(d, a, b, c, m[i+ 6], 9, -1069501632); + c = GG(c, d, a, b, m[i+11], 14, 643717713); + b = GG(b, c, d, a, m[i+ 0], 20, -373897302); + a = GG(a, b, c, d, m[i+ 5], 5, -701558691); + d = GG(d, a, b, c, m[i+10], 9, 38016083); + c = GG(c, d, a, b, m[i+15], 14, -660478335); + b = GG(b, c, d, a, m[i+ 4], 20, -405537848); + a = GG(a, b, c, d, m[i+ 9], 5, 568446438); + d = GG(d, a, b, c, m[i+14], 9, -1019803690); + c = GG(c, d, a, b, m[i+ 3], 14, -187363961); + b = GG(b, c, d, a, m[i+ 8], 20, 1163531501); + a = GG(a, b, c, d, m[i+13], 5, -1444681467); + d = GG(d, a, b, c, m[i+ 2], 9, -51403784); + c = GG(c, d, a, b, m[i+ 7], 14, 1735328473); + b = GG(b, c, d, a, m[i+12], 20, -1926607734); + + a = HH(a, b, c, d, m[i+ 5], 4, -378558); + d = HH(d, a, b, c, m[i+ 8], 11, -2022574463); + c = HH(c, d, a, b, m[i+11], 16, 1839030562); + b = HH(b, c, d, a, m[i+14], 23, -35309556); + a = HH(a, b, c, d, m[i+ 1], 4, -1530992060); + d = HH(d, a, b, c, m[i+ 4], 11, 1272893353); + c = HH(c, d, a, b, m[i+ 7], 16, -155497632); + b = HH(b, c, d, a, m[i+10], 23, -1094730640); + a = HH(a, b, c, d, m[i+13], 4, 681279174); + d = HH(d, a, b, c, m[i+ 0], 11, -358537222); + c = HH(c, d, a, b, m[i+ 3], 16, -722521979); + b = HH(b, c, d, a, m[i+ 6], 23, 76029189); + a = HH(a, b, c, d, m[i+ 9], 4, -640364487); + d = HH(d, a, b, c, m[i+12], 11, -421815835); + c = HH(c, d, a, b, m[i+15], 16, 530742520); + b = HH(b, c, d, a, m[i+ 2], 23, -995338651); + + a = II(a, b, c, d, m[i+ 0], 6, -198630844); + d = II(d, a, b, c, m[i+ 7], 10, 1126891415); + c = II(c, d, a, b, m[i+14], 15, -1416354905); + b = II(b, c, d, a, m[i+ 5], 21, -57434055); + a = II(a, b, c, d, m[i+12], 6, 1700485571); + d = II(d, a, b, c, m[i+ 3], 10, -1894986606); + c = II(c, d, a, b, m[i+10], 15, -1051523); + b = II(b, c, d, a, m[i+ 1], 21, -2054922799); + a = II(a, b, c, d, m[i+ 8], 6, 1873313359); + d = II(d, a, b, c, m[i+15], 10, -30611744); + c = II(c, d, a, b, m[i+ 6], 15, -1560198380); + b = II(b, c, d, a, m[i+13], 21, 1309151649); + a = II(a, b, c, d, m[i+ 4], 6, -145523070); + d = II(d, a, b, c, m[i+11], 10, -1120210379); + c = II(c, d, a, b, m[i+ 2], 15, 718787259); + b = II(b, c, d, a, m[i+ 9], 21, -343485551); + + a = (a + aa) >>> 0; + b = (b + bb) >>> 0; + c = (c + cc) >>> 0; + d = (d + dd) >>> 0; + } + + return crypt.endian([a, b, c, d]); + }; + + // Auxiliary functions + md5._ff = function (a, b, c, d, x, s, t) { + var n = a + (b & c | ~b & d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._gg = function (a, b, c, d, x, s, t) { + var n = a + (b & d | c & ~d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._hh = function (a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + md5._ii = function (a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + (x >>> 0) + t; + return ((n << s) | (n >>> (32 - s))) + b; + }; + + // Package private blocksize + md5._blocksize = 16; + md5._digestsize = 16; + + module.exports = function (message, options) { + if (message === undefined || message === null) + throw new Error('Illegal argument ' + message); + + var digestbytes = crypt.wordsToBytes(md5(message, options)); + return options && options.asBytes ? digestbytes : + options && options.asString ? bin.bytesToString(digestbytes) : + crypt.bytesToHex(digestbytes); + }; + +})(); - return nl; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +const _ = __webpack_require__(/*! underscore */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js"); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +const NO_LMP_DATE_MODIFIER = 4; -//! moment.js locale configuration -//! locale : Nynorsk [nn] -//! authors : https://github.com/mechuwind -//! Stephen Ramthun : https://github.com/stephenramthun +module.exports = function(settings) { + const taskSchedules = settings && settings.tasks && settings.tasks.schedules; + const lib = { + /** + * @function + * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this. + * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display. + * To this end - Utils.isTimely becomes a pass-through in nootils@4.x + * @returns True + */ + isTimely: () => true, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + addDate: function(date, days) { + let result; + if (date) { + result = new Date(date.getTime()); + } else { + result = lib.now(); + } + result.setDate(result.getDate() + days); + result.setHours(0, 0, 0, 0); + return result; + }, - //! moment.js locale configuration + getLmpDate: function(doc) { + const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER; + return lib.addDate(new Date(doc.reported_date), weeks * -7); + }, - var nn = moment.defineLocale('nn', { - months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( - '_' - ), - monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), - weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY [kl.] H:mm', - LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', - }, - calendar: { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: '%s sidan', - s: 'nokre sekund', - ss: '%d sekund', - m: 'eit minutt', - mm: '%d minutt', - h: 'ein time', - hh: '%d timar', - d: 'ein dag', - dd: '%d dagar', - M: 'ein månad', - MM: '%d månader', - y: 'eit år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); + // TODO getSchedule() can be removed when tasks.json support is dropped + getSchedule: function(name) { + return _.findWhere(taskSchedules, { name: name }); + }, - return nn; + getMostRecentTimestamp: function(reports, form, fields) { + const report = lib.getMostRecentReport(reports, form, fields); + return report && report.reported_date; + }, -}))); + getMostRecentReport: function(reports, form, fields) { + let result = null; + reports.forEach(function(report) { + if (report.form === form && + !report.deleted && + (!result || (report.reported_date > result.reported_date)) && + (!fields || (report.fields && lib.fieldsMatch(report, fields)))) { + result = report; + } + }); + return result; + }, + isFormSubmittedInWindow: function(reports, form, start, end, count) { + let result = false; + reports.forEach(function(report) { + if (!result && report.form === form) { + if (report.reported_date >= start && report.reported_date <= end) { + if (!count || + (count && report.fields && report.fields.follow_up_count > count)) { + result = true; + } + } + } + }); + return result; + }, -/***/ }), + isFirstReportNewer: function(firstReport, secondReport) { + if (firstReport && firstReport.reported_date) { + if (secondReport && secondReport.reported_date) { + return firstReport.reported_date > secondReport.reported_date; + } + return true; + } + return null; + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js ***! - \*******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + isDateValid: function(date) { + return !isNaN(date.getTime()); + }, -//! moment.js locale configuration -//! locale : Occitan, lengadocian dialecte [oc-lnc] -//! author : Quentin PAGÈS : https://github.com/Quenty31 + /** + * @function + * @name getField + * + * Gets the value of specified field path. + * @param {Object} report - The report object. + * @param {string} field - Period separated json path assuming report.fields as + * the root node e.g 'dob' (equivalent to report.fields.dob) + * or 'screening.test_result' equivalent to report.fields.screening.test_result + */ + getField: function(report, field) { + return _.propertyOf(report.fields)(field.split('.')); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + fieldsMatch: function(report, fieldValues) { + return Object.keys(fieldValues).every(function(field) { + return lib.getField(report, field) === fieldValues[field]; + }); + }, - //! moment.js locale configuration + MS_IN_DAY: 24*60*60*1000, // 1 day in ms - var ocLnc = moment.defineLocale('oc-lnc', { - months: { - standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( - '_' - ), - format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( - '_' - ), - isFormat: /D[oD]?(\s)+MMMM/, - }, - monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( - '_' - ), - weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), - weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM [de] YYYY', - ll: 'D MMM YYYY', - LLL: 'D MMMM [de] YYYY [a] H:mm', - lll: 'D MMM YYYY, H:mm', - LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', - llll: 'ddd D MMM YYYY, H:mm', - }, - calendar: { - sameDay: '[uèi a] LT', - nextDay: '[deman a] LT', - nextWeek: 'dddd [a] LT', - lastDay: '[ièr a] LT', - lastWeek: 'dddd [passat a] LT', - sameElse: 'L', - }, - relativeTime: { - future: "d'aquí %s", - past: 'fa %s', - s: 'unas segondas', - ss: '%d segondas', - m: 'una minuta', - mm: '%d minutas', - h: 'una ora', - hh: '%d oras', - d: 'un jorn', - dd: '%d jorns', - M: 'un mes', - MM: '%d meses', - y: 'un an', - yy: '%d ans', - }, - dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal: function (number, period) { - var output = - number === 1 - ? 'r' - : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, - }, - }); + now: function() { return new Date(); }, + }; - return ocLnc; + return lib; +}; -}))); +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js ***! + \*****************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js"); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Punjabi (India) [pa-in] -//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit +"use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + declare = extd.declare, + AVLTree = extd.AVLTree, + LinkedList = extd.LinkedList, + isPromise = extd.isPromiseLike, + EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter; - //! moment.js locale configuration - var symbolMap = { - '1': '੧', - '2': '੨', - '3': '੩', - '4': '੪', - '5': '੫', - '6': '੬', - '7': '੭', - '8': '੮', - '9': '੯', - '0': '੦', +var FactHash = declare({ + instance: { + constructor: function () { + this.memory = {}; + this.memoryValues = new LinkedList(); }, - numberMap = { - '੧': '1', - '੨': '2', - '੩': '3', - '੪': '4', - '੫': '5', - '੬': '6', - '੭': '7', - '੮': '8', - '੯': '9', - '੦': '0', - }; - var paIn = moment.defineLocale('pa-in', { - // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. - months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( - '_' - ), - monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( - '_' - ), - weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( - '_' - ), - weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - longDateFormat: { - LT: 'A h:mm ਵਜੇ', - LTS: 'A h:mm:ss ਵਜੇ', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm ਵਜੇ', - LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ', - }, - calendar: { - sameDay: '[ਅਜ] LT', - nextDay: '[ਕਲ] LT', - nextWeek: '[ਅਗਲਾ] dddd, LT', - lastDay: '[ਕਲ] LT', - lastWeek: '[ਪਿਛਲੇ] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s ਵਿੱਚ', - past: '%s ਪਿਛਲੇ', - s: 'ਕੁਝ ਸਕਿੰਟ', - ss: '%d ਸਕਿੰਟ', - m: 'ਇਕ ਮਿੰਟ', - mm: '%d ਮਿੰਟ', - h: 'ਇੱਕ ਘੰਟਾ', - hh: '%d ਘੰਟੇ', - d: 'ਇੱਕ ਦਿਨ', - dd: '%d ਦਿਨ', - M: 'ਇੱਕ ਮਹੀਨਾ', - MM: '%d ਮਹੀਨੇ', - y: 'ਇੱਕ ਸਾਲ', - yy: '%d ਸਾਲ', - }, - preparse: function (string) { - return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Punjabi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. - meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ਰਾਤ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ਸਵੇਰ') { - return hour; - } else if (meridiem === 'ਦੁਪਹਿਰ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ਸ਼ਾਮ') { - return hour + 12; - } + clear: function () { + this.memoryValues.clear(); + this.memory = {}; }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ਰਾਤ'; - } else if (hour < 10) { - return 'ਸਵੇਰ'; - } else if (hour < 17) { - return 'ਦੁਪਹਿਰ'; - } else if (hour < 20) { - return 'ਸ਼ਾਮ'; - } else { - return 'ਰਾਤ'; + + + remove: function (v) { + var hashCode = v.hashCode, + memory = this.memory, + ret = memory[hashCode]; + if (ret) { + this.memoryValues.remove(ret); + delete memory[hashCode]; } + return ret; }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); - return paIn; + insert: function (insert) { + var hashCode = insert.hashCode; + if (hashCode in this.memory) { + throw new Error("Activation already in agenda " + insert.rule.name + " agenda"); + } + this.memoryValues.push((this.memory[hashCode] = insert)); + } + } +}); -}))); +var DEFAULT_AGENDA_GROUP = "main"; +module.exports = declare(EventEmitter, { -/***/ }), + instance: { + constructor: function (flow, conflictResolution) { + this.agendaGroups = {}; + this.agendaGroupStack = [DEFAULT_AGENDA_GROUP]; + this.rules = {}; + this.flow = flow; + this.comparator = conflictResolution; + this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP); + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + addAgendaGroup: function (groupName) { + if (!extd.has(this.agendaGroups, groupName)) { + this.agendaGroups[groupName] = new AVLTree({compare: this.comparator}); + } + }, -//! moment.js locale configuration -//! locale : Polish [pl] -//! author : Rafal Hirsz : https://github.com/evoL + getAgendaGroup: function (groupName) { + return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP]; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + setFocus: function (agendaGroup) { + if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) { + this.agendaGroupStack.push(agendaGroup); + this.emit("focused", agendaGroup); + } + return this; + }, - //! moment.js locale configuration + getFocused: function () { + var ags = this.agendaGroupStack; + return ags[ags.length - 1]; + }, - var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( - '_' - ), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( - '_' - ); - function plural(n) { - return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; - } - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - return result + (plural(number) ? 'sekundy' : 'sekund'); - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); - } - } + getFocusedAgenda: function () { + return this.agendaGroups[this.getFocused()]; + }, - var pl = moment.defineLocale('pl', { - months: function (momentToFormat, format) { - if (!momentToFormat) { - return monthsNominative; - } else if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return ( - '(' + - monthsSubjective[momentToFormat.month()] + - '|' + - monthsNominative[momentToFormat.month()] + - ')' - ); - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; + register: function (node) { + var agendaGroup = node.rule.agendaGroup; + this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()}; + if (agendaGroup) { + this.addAgendaGroup(agendaGroup); } }, - monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split( - '_' - ), - weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), - weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', + + isEmpty: function () { + var agendaGroupStack = this.agendaGroupStack, changed = false; + while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) { + agendaGroupStack.pop(); + changed = true; + } + if (changed) { + this.emit("focused", this.getFocused()); + } + return this.getFocusedAgenda().isEmpty(); }, - calendar: { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[W niedzielę o] LT'; - case 2: - return '[We wtorek o] LT'; + fireNext: function () { + var agendaGroupStack = this.agendaGroupStack, ret = false; + while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) { + agendaGroupStack.pop(); + } + if (!this.getFocusedAgenda().isEmpty()) { + var activation = this.pop(); + this.emit("fire", activation.rule.name, activation.match.factHash); + var fired = activation.rule.fire(this.flow, activation.match); + if (isPromise(fired)) { + ret = fired.then(function () { + //return true if an activation fired + return true; + }); + } else { + ret = true; + } + } + //return false if activation not fired + return ret; + }, - case 3: - return '[W środę o] LT'; + pop: function () { + var tree = this.getFocusedAgenda(), root = tree.__root; + while (root.right) { + root = root.right; + } + var v = root.data; + tree.remove(v); + var rule = this.rules[v.name]; + rule.tree.remove(v); + rule.factTable.remove(v); + return v; + }, - case 6: - return '[W sobotę o] LT'; + peek: function () { + var tree = this.getFocusedAgenda(), root = tree.__root; + while (root.right) { + root = root.right; + } + return root.data; + }, - default: - return '[W] dddd [o] LT'; - } - }, - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L', + modify: function (node, context) { + this.retract(node, context); + this.insert(node, context); }, - relativeTime: { - future: 'za %s', - past: '%s temu', - s: 'kilka sekund', - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: '1 dzień', - dd: '%d dni', - M: 'miesiąc', - MM: translate, - y: 'rok', - yy: translate, + + retract: function (node, retract) { + var rule = this.rules[node.name]; + retract.rule = node; + var activation = rule.factTable.remove(retract); + if (activation) { + this.getAgendaGroup(node.rule.agendaGroup).remove(activation); + rule.tree.remove(activation); + } }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + insert: function (node, insert) { + var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup; + rule.tree.insert(insert); + this.getAgendaGroup(agendaGroup).insert(insert); + if (nodeRule.autoFocus) { + this.setFocus(agendaGroup); + } + + rule.factTable.insert(insert); }, - }); - return pl; + dispose: function () { + for (var i in this.agendaGroups) { + this.agendaGroups[i].clear(); + } + var rules = this.rules; + for (i in rules) { + if (i in rules) { + rules[i].tree.clear(); + rules[i].factTable.clear(); -}))); + } + } + this.rules = {}; + } + } +}); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js": +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js ***! + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js ***! \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Portuguese (Brazil) [pt-br] -//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira +"use strict"; +/*jshint evil:true*/ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + isString = extd.isString; - //! moment.js locale configuration +exports.modifiers = ["assert", "modify", "retract", "emit", "halt", "focus", "getFacts"]; - var ptBr = moment.defineLocale('pt-br', { - months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( - '_' - ), - monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( - '_' - ), - weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), - weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', - }, - calendar: { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return this.day() === 0 || this.day() === 6 - ? '[Último] dddd [às] LT' // Saturday + Sunday - : '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L', - }, - relativeTime: { - future: 'em %s', - past: 'há %s', - s: 'poucos segundos', - ss: '%d segundos', - m: 'um minuto', - mm: '%d minutos', - h: 'uma hora', - hh: '%d horas', - d: 'um dia', - dd: '%d dias', - M: 'um mês', - MM: '%d meses', - y: 'um ano', - yy: '%d anos', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', +var createFunction = function (body, defined, scope, scopeNames, definedNames) { + var declares = []; + forEach(definedNames, function (i) { + if (body.indexOf(i) !== -1) { + declares.push("var " + i + "= defined." + i + ";"); + } }); - return ptBr; + forEach(scopeNames, function (i) { + if (body.indexOf(i) !== -1) { + declares.push("var " + i + "= scope." + i + ";"); + } + }); + body = ["((function(){", declares.join(""), "\n\treturn ", body, "\n})())"].join(""); + try { + return eval(body); + } catch (e) { + throw new Error("Invalid action : " + body + "\n" + e.message); + } +}; -}))); +var createDefined = (function () { + + var _createDefined = function (action, defined, scope) { + if (isString(action)) { + var declares = []; + extd(defined).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= defined." + i + ";"); + } + }); + + extd(scope).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= function(){var prop = scope." + i + "; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};"); + } + }); + if (declares.length) { + declares.unshift("var __objToStr__ = Object.prototype.toString;"); + } + action = [declares.join(""), "return ", action, ";"].join(""); + action = new Function("defined", "scope", action)(defined, scope); + } + var ret = action.hasOwnProperty("constructor") && "function" === typeof action.constructor ? action.constructor : function (opts) { + opts = opts || {}; + for (var i in opts) { + if (i in action) { + this[i] = opts[i]; + } + } + }; + var proto = ret.prototype; + for (var i in action) { + proto[i] = action[i]; + } + return ret; + + }; + + return function (options, defined, scope) { + return _createDefined(options.properties, defined, scope); + }; +})(); +exports.createFunction = createFunction; +exports.createDefined = createDefined; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Portuguese [pt] -//! author : Jefferson : https://github.com/jalex79 +"use strict"; +/*jshint evil:true*/ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + constraintMatcher = __webpack_require__(/*! ../constraintMatcher.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + indexOf = extd.indexOf, + forEach = extd.forEach, + removeDuplicates = extd.removeDuplicates, + map = extd.map, + obj = extd.hash, + keys = obj.keys, + merge = extd.merge, + rules = __webpack_require__(/*! ../rule */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + common = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js"), + modifiers = common.modifiers, + createDefined = common.createDefined, + createFunction = common.createFunction; - //! moment.js locale configuration - var pt = moment.defineLocale('pt', { - months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( - '_' - ), - monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( - '_' - ), - weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D [de] MMMM [de] YYYY', - LLL: 'D [de] MMMM [de] YYYY HH:mm', - LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', - }, - calendar: { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return this.day() === 0 || this.day() === 6 - ? '[Último] dddd [às] LT' // Saturday + Sunday - : '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L', - }, - relativeTime: { - future: 'em %s', - past: 'há %s', - s: 'segundos', - ss: '%d segundos', - m: 'um minuto', - mm: '%d minutos', - h: 'uma hora', - hh: '%d horas', - d: 'um dia', - dd: '%d dias', - M: 'um mês', - MM: '%d meses', - y: 'um ano', - yy: '%d anos', - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, +/** + * @private + * Parses an action from a rule definition + * @param {String} action the body of the action to execute + * @param {Array} identifiers array of identifiers collected + * @param {Object} defined an object of defined + * @param scope + * @return {Object} + */ +var parseAction = function (action, identifiers, defined, scope) { + var declares = []; + forEach(identifiers, function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= facts." + i + ";"); + } + }); + extd(defined).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= defined." + i + ";"); + } }); - return pt; + extd(scope).keys().forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("var " + i + "= scope." + i + ";"); + } + }); + extd(modifiers).forEach(function (i) { + if (action.indexOf(i) !== -1) { + declares.push("if(!" + i + "){ var " + i + "= flow." + i + ";}"); + } + }); + var params = ["facts", 'flow']; + if (/next\(.*\)/.test(action)) { + params.push("next"); + } + action = declares.join("") + action; + try { + return new Function("defined, scope", "return " + new Function(params.join(","), action).toString())(defined, scope); + } catch (e) { + throw new Error("Invalid action : " + action + "\n" + e.message); + } +}; -}))); +var createRuleFromObject = (function () { + var __resolveRule = function (rule, identifiers, conditions, defined, name) { + var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3]; + if (extd.isHash(constraint)) { + refs = constraint; + constraint = null; + } + if (definedClass && !!(definedClass = defined[definedClass])) { + condition.push(definedClass); + } else { + throw new Error("Invalid class " + rule[0] + " for rule " + name); + } + condition.push(alias, constraint, refs); + conditions.push(condition); + identifiers.push(alias); + if (constraint) { + forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) { + identifiers.push(i); + }); + } + if (extd.isObject(refs)) { + for (var j in refs) { + var ident = refs[j]; + if (indexOf(identifiers, ident) === -1) { + identifiers.push(ident); + } + } + } + }; + function parseRule(rule, conditions, identifiers, defined, name) { + if (rule.length) { + var r0 = rule[0]; + if (r0 === "not" || r0 === "exists") { + var temp = []; + rule.shift(); + __resolveRule(rule, identifiers, temp, defined, name); + var cond = temp[0]; + cond.unshift(r0); + conditions.push(cond); + } else if (r0 === "or") { + var conds = [r0]; + rule.shift(); + forEach(rule, function (cond) { + parseRule(cond, conds, identifiers, defined, name); + }); + conditions.push(conds); + } else { + __resolveRule(rule, identifiers, conditions, defined, name); + identifiers = removeDuplicates(identifiers); + } + } -/***/ }), + } -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + return function (obj, defined, scope) { + var name = obj.name; + if (extd.isEmpty(obj)) { + throw new Error("Rule is empty"); + } + var options = obj.options || {}; + options.scope = scope; + var constraints = obj.constraints || [], l = constraints.length; + if (!l) { + constraints = ["true"]; + } + var action = obj.action; + if (extd.isUndefined(action)) { + throw new Error("No action was defined for rule " + name); + } + var conditions = [], identifiers = []; + forEach(constraints, function (rule) { + parseRule(rule, conditions, identifiers, defined, name); + }); + return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope)); + }; +})(); -//! moment.js locale configuration -//! locale : Romanian [ro] -//! author : Vlad Gurdiga : https://github.com/gurdiga -//! author : Valentin Agachi : https://github.com/avaly -//! author : Emanuel Cepoi : https://github.com/cepem +exports.parse = function (src, file) { + //parse flow from file + return parser.parseRuleSet(src, file); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +}; +exports.compile = function (flowObj, options, cb, Container) { + if (extd.isFunction(options)) { + cb = options; + options = {}; + } else { + options = options || {}; + } + var name = flowObj.name || options.name; + //if !name throw an error + if (!name) { + throw new Error("Name must be present in JSON or options"); + } + var flow = new Container(name); + var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {}); + if (typeof Buffer !== "undefined") { + defined.Buffer = Buffer; + } + var scope = merge({console: console}, options.scope); + //add the anything added to the scope as a property + forEach(flowObj.scope, function (s) { + scope[s.name] = true; + }); + //add any defined classes in the parsed flowObj to defined + forEach(flowObj.define, function (d) { + defined[d.name] = createDefined(d, defined, scope); + }); - //! moment.js locale configuration + //expose any defined classes to the flow. + extd(defined).forEach(function (cls, name) { + flow.addDefined(name, cls); + }); - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: 'secunde', - mm: 'minute', - hh: 'ore', - dd: 'zile', - MM: 'luni', - yy: 'ani', - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; + var scopeNames = extd(flowObj.scope).pluck("name").union(extd(scope).keys().value()).value(); + var definedNames = map(keys(defined), function (s) { + return s; + }); + forEach(flowObj.scope, function (s) { + scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames); + }); + var rules = flowObj.rules; + if (rules.length) { + forEach(rules, function (rule) { + flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope)); + }); } + if (cb) { + cb.call(flow, flow); + } + return flow; +}; - var ro = moment.defineLocale('ro', { - months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( - '_' - ), - monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY H:mm', - LLLL: 'dddd, D MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'peste %s', - past: '%s în urmă', - s: 'câteva secunde', - ss: relativeTimeWithPlural, - m: 'un minut', - mm: relativeTimeWithPlural, - h: 'o oră', - hh: relativeTimeWithPlural, - d: 'o zi', - dd: relativeTimeWithPlural, - M: 'o lună', - MM: relativeTimeWithPlural, - y: 'un an', - yy: relativeTimeWithPlural, - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); +exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js").transpile; - return ro; -}))); -/***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ }), -//! moment.js locale configuration -//! locale : Russian [ru] -//! author : Viktorminator : https://github.com/Viktorminator -//! author : Menelion Elensúle : https://github.com/Oire -//! author : Коренберг Марк : https://github.com/socketpair +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + indexOf = extd.indexOf, + merge = extd.merge, + isString = extd.isString, + modifiers = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js").modifiers, + constraintMatcher = __webpack_require__(/*! ../constraintMatcher */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"); - //! moment.js locale configuration +function definedToJs(options) { + /*jshint evil:true*/ + options = isString(options) ? new Function("return " + options + ";")() : options; + var ret = ["(function(){"], value; - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 - ? forms[0] - : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + if (options.hasOwnProperty("constructor") && "function" === typeof options.constructor) { + ret.push("var Defined = " + options.constructor.toString() + ";"); + } else { + ret.push("var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};"); } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - hh: 'час_часа_часов', - dd: 'день_дня_дней', - MM: 'месяц_месяца_месяцев', - yy: 'год_года_лет', - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } else { - return number + ' ' + plural(format[key], +number); + ret.push("var proto = Defined.prototype;"); + for (var key in options) { + if (options.hasOwnProperty(key)) { + value = options[key]; + ret.push("proto." + key + " = " + (extd.isFunction(value) ? value.toString() : extd.format("%j", value)) + ";"); } } - var monthsParse = [ - /^янв/i, - /^фев/i, - /^мар/i, - /^апр/i, - /^ма[йя]/i, - /^июн/i, - /^июл/i, - /^авг/i, - /^сен/i, - /^окт/i, - /^ноя/i, - /^дек/i, - ]; - - // http://new.gramota.ru/spravka/rules/139-prop : § 103 - // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 - // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 - var ru = moment.defineLocale('ru', { - months: { - format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( - '_' - ), - standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( - '_' - ), - }, - monthsShort: { - // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку? - format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( - '_' - ), - standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( - '_' - ), - }, - weekdays: { - standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( - '_' - ), - format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( - '_' - ), - isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/, - }, - weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - - // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки - monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + ret.push("return Defined;"); + ret.push("}())"); + return ret.join(""); - // копия предыдущего - monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, +} - // полные названия с падежами - monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, +function actionToJs(action, identifiers, defined, scope) { + var declares = [], usedVars = {}; + forEach(identifiers, function (i) { + if (action.indexOf(i) !== -1) { + usedVars[i] = true; + declares.push("var " + i + "= facts." + i + ";"); + } + }); + extd(defined).keys().forEach(function (i) { + if (action.indexOf(i) !== -1 && !usedVars[i]) { + usedVars[i] = true; + declares.push("var " + i + "= defined." + i + ";"); + } + }); - // Выражение, которое соответствует только сокращённым формам - monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY г.', - LLL: 'D MMMM YYYY г., H:mm', - LLLL: 'dddd, D MMMM YYYY г., H:mm', - }, - calendar: { - sameDay: '[Сегодня, в] LT', - nextDay: '[Завтра, в] LT', - lastDay: '[Вчера, в] LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В следующее] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В следующий] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В следующую] dddd, [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd, [в] LT'; - } else { - return '[В] dddd, [в] LT'; - } - } - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd, [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd, [в] LT'; - } else { - return '[В] dddd, [в] LT'; - } - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'через %s', - past: '%s назад', - s: 'несколько секунд', - ss: relativeTimeWithPlural, - m: relativeTimeWithPlural, - mm: relativeTimeWithPlural, - h: 'час', - hh: relativeTimeWithPlural, - d: 'день', - dd: relativeTimeWithPlural, - M: 'месяц', - MM: relativeTimeWithPlural, - y: 'год', - yy: relativeTimeWithPlural, - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM: function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, + extd(scope).keys().forEach(function (i) { + if (action.indexOf(i) !== -1 && !usedVars[i]) { + usedVars[i] = true; + declares.push("var " + i + "= scope." + i + ";"); + } + }); + extd(modifiers).forEach(function (i) { + if (action.indexOf(i) !== -1 && !usedVars[i]) { + declares.push("var " + i + "= flow." + i + ";"); + } }); + var params = ["facts", 'flow']; + if (/next\(.*\)/.test(action)) { + params.push("next"); + } + action = declares.join("") + action; + try { + return ["function(", params.join(","), "){", action, "}"].join(""); + } catch (e) { + throw new Error("Invalid action : " + action + "\n" + e.message); + } +} - return ru; +function parseConstraintModifier(constraint, ret) { + if (constraint.length && extd.isString(constraint[0])) { + var modifier = constraint[0].match(" *(from)"); + if (modifier) { + modifier = modifier[0]; + switch (modifier) { + case "from": + ret.push(', "', constraint.shift(), '"'); + break; + default: + throw new Error("Unrecognized modifier " + modifier); + } + } + } +} -}))); +function parseConstraintHash(constraint, ret, identifiers) { + if (constraint.length && extd.isHash(constraint[0])) { + //ret of options + var refs = constraint.shift(); + extd(refs).values().forEach(function (ident) { + if (indexOf(identifiers, ident) === -1) { + identifiers.push(ident); + } + }); + ret.push(',' + extd.format('%j', [refs])); + } +} +function constraintsToJs(constraint, identifiers) { + constraint = constraint.slice(0); + var ret = []; + if (constraint[0] === "or") { + ret.push('["' + constraint.shift() + '"'); + ret.push(extd.map(constraint,function (c) { + return constraintsToJs(c, identifiers); + }).join(",") + "]"); + return ret; + } else if (constraint[0] === "not" || constraint[0] === "exists") { + ret.push('"', constraint.shift(), '", '); + } + identifiers.push(constraint[1]); + ret.push(constraint[0], ', "' + constraint[1].replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + '"'); + constraint.splice(0, 2); + if (constraint.length) { + //constraint + var c = constraint.shift(); + if (extd.isString(c) && c) { + ret.push(',"' + c.replace(/\\/g, "\\\\").replace(/"/g, "\\\""), '"'); + forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) { + identifiers.push(i); + }); + } else { + ret.push(',"true"'); + constraint.unshift(c); + } + } + parseConstraintModifier(constraint, ret); + parseConstraintHash(constraint, ret, identifiers); + return '[' + ret.join("") + ']'; +} -/***/ }), +exports.transpile = function (flowObj, options) { + options = options || {}; + var ret = []; + ret.push("(function(){"); + ret.push("return function(options){"); + ret.push("options = options || {};"); + ret.push("var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};"); + ret.push("var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}"); + var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {}); + if (typeof Buffer !== "undefined") { + defined.Buffer = Buffer; + } + var scope = merge({console: console}, options.scope); + ret.push(["return nools.flow('", options.name, "', function(){"].join("")); + //add any defined classes in the parsed flowObj to defined + ret.push(extd(flowObj.define || []).map(function (defined) { + var name = defined.name; + defined[name] = {}; + return ["var", name, "= defined." + name, "= this.addDefined('" + name + "',", definedToJs(defined.properties) + ");"].join(" "); + }).value().join("\n")); + ret.push(extd(flowObj.scope || []).map(function (s) { + var name = s.name; + scope[name] = {}; + return ["var", name, "= scope." + name, "= ", s.body, ";"].join(" "); + }).value().join("\n")); + ret.push("scope.console = console;\n"); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Sindhi [sd] -//! author : Narain Sagar : https://github.com/narainsagar + ret.push(extd(flowObj.rules || []).map(function (rule) { + var identifiers = [], ret = ["this.rule('", rule.name.replace(/'/g, "\\'"), "'"], options = extd.merge(rule.options || {}, {scope: "scope"}); + ret.push(",", extd.format("%j", [options]).replace(/(:"scope")/, ":scope")); + if (rule.constraints && !extd.isEmpty(rule.constraints)) { + ret.push(", ["); + ret.push(extd(rule.constraints).map(function (c) { + return constraintsToJs(c, identifiers); + }).value().join(",")); + ret.push("]"); + } + ret.push(",", actionToJs(rule.action, identifiers, defined, scope)); + ret.push(");"); + return ret.join(""); + }).value().join("")); + ret.push("});"); + ret.push("};"); + ret.push("}());"); + return ret.join(""); +}; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration - var months = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر', - ], - days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; - var sd = moment.defineLocale('sd', { - months: months, - monthsShort: months, - weekdays: days, - weekdaysShort: days, - weekdaysMin: days, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd، D MMMM YYYY HH:mm', - }, - meridiemParse: /صبح|شام/, - isPM: function (input) { - return 'شام' === input; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; - } - return 'شام'; - }, - calendar: { - sameDay: '[اڄ] LT', - nextDay: '[سڀاڻي] LT', - nextWeek: 'dddd [اڳين هفتي تي] LT', - lastDay: '[ڪالهه] LT', - lastWeek: '[گزريل هفتي] dddd [تي] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s پوء', - past: '%s اڳ', - s: 'چند سيڪنڊ', - ss: '%d سيڪنڊ', - m: 'هڪ منٽ', - mm: '%d منٽ', - h: 'هڪ ڪلاڪ', - hh: '%d ڪلاڪ', - d: 'هڪ ڏينهن', - dd: '%d ڏينهن', - M: 'هڪ مهينو', - MM: '%d مهينا', - y: 'هڪ سال', - yy: '%d سال', - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +/***/ }), - return sd; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -}))); +var map = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js").map; +function salience(a, b) { + return a.rule.priority - b.rule.priority; +} -/***/ }), +function bucketCounter(a, b) { + return a.counter - b.counter; +} -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +function factRecency(a, b) { + /*jshint noempty: false*/ -//! moment.js locale configuration -//! locale : Northern Sami [se] -//! authors : Bård Rolstad Henriksen : https://github.com/karamell + var i = 0; + var aMatchRecency = a.match.recency, + bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1; + while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) { + } + var ret = aMatchRecency[i] - bMatchRecency[i]; + if (!ret) { + ret = aLength - bLength; + } + return ret; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +function activationRecency(a, b) { + return a.recency - b.recency; +} - //! moment.js locale configuration +var strategies = { + salience: salience, + bucketCounter: bucketCounter, + factRecency: factRecency, + activationRecency: activationRecency +}; - var se = moment.defineLocale('se', { - months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( - '_' - ), - monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split( - '_' - ), - weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( - '_' - ), - weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), - weekdaysMin: 's_v_m_g_d_b_L'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'MMMM D. [b.] YYYY', - LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', - LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', - }, - calendar: { - sameDay: '[otne ti] LT', - nextDay: '[ihttin ti] LT', - nextWeek: 'dddd [ti] LT', - lastDay: '[ikte ti] LT', - lastWeek: '[ovddit] dddd [ti] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s geažes', - past: 'maŋit %s', - s: 'moadde sekunddat', - ss: '%d sekunddat', - m: 'okta minuhta', - mm: '%d minuhtat', - h: 'okta diimmu', - hh: '%d diimmut', - d: 'okta beaivi', - dd: '%d beaivvit', - M: 'okta mánnu', - MM: '%d mánut', - y: 'okta jahki', - yy: '%d jagit', - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, +exports.strategies = strategies; +exports.strategy = function (strats) { + strats = map(strats, function (s) { + return strategies[s]; }); + var stratsLength = strats.length; - return se; + return function (a, b) { + var i = -1, ret = 0; + var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode); + if (!equal) { + while (++i < stratsLength && !ret) { + ret = strats[i](a, b); + } + ret = ret > 0 ? 1 : -1; + } + return ret; + }; +}; -}))); +/***/ }), +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -/***/ }), +"use strict"; -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Sinhalese [si] -//! author : Sampath Sitinamaluwa : https://github.com/sampathsris +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + deepEqual = extd.deepEqual, + merge = extd.merge, + instanceOf = extd.instanceOf, + filter = extd.filter, + declare = extd.declare, + constraintMatcher; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var id = 0; +var Constraint = declare({ - //! moment.js locale configuration + type: null, - /*jshint -W100*/ - var si = moment.defineLocale('si', { - months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( - '_' - ), - monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( - '_' - ), - weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( - '_' - ), - weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), - weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'a h:mm', - LTS: 'a h:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY MMMM D', - LLL: 'YYYY MMMM D, a h:mm', - LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', - }, - calendar: { - sameDay: '[අද] LT[ට]', - nextDay: '[හෙට] LT[ට]', - nextWeek: 'dddd LT[ට]', - lastDay: '[ඊයේ] LT[ට]', - lastWeek: '[පසුගිය] dddd LT[ට]', - sameElse: 'L', - }, - relativeTime: { - future: '%sකින්', - past: '%sකට පෙර', - s: 'තත්පර කිහිපය', - ss: 'තත්පර %d', - m: 'මිනිත්තුව', - mm: 'මිනිත්තු %d', - h: 'පැය', - hh: 'පැය %d', - d: 'දිනය', - dd: 'දින %d', - M: 'මාසය', - MM: 'මාස %d', - y: 'වසර', - yy: 'වසර %d', - }, - dayOfMonthOrdinalParse: /\d{1,2} වැනි/, - ordinal: function (number) { - return number + ' වැනි'; + instance: { + constructor: function (constraint) { + if (!constraintMatcher) { + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"); + } + this.id = id++; + this.constraint = constraint; + extd.bindAll(this, ["assert"]); }, - meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, - isPM: function (input) { - return input === 'ප.ව.' || input === 'පස් වරු'; + "assert": function () { + throw new Error("not implemented"); }, - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } + + getIndexableProperties: function () { + return []; }, - }); - return si; + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && extd.deepEqual(this.constraint, constraint.constraint); + }, -}))); + getters: { + variables: function () { + return [this.get("alias")]; + } + } -/***/ }), + } +}); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +Constraint.extend({ + instance: { -//! moment.js locale configuration -//! locale : Slovak [sk] -//! author : Martin Minka : https://github.com/k2s -//! based on work of petrbela : https://github.com/petrbela + type: "object", -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + constructor: function (type) { + this._super([type]); + }, - //! moment.js locale configuration + "assert": function (param) { + return param instanceof this.constraint || param.constructor === this.constraint; + }, - var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( - '_' - ), - monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); - function plural(n) { - return n > 1 && n < 5; - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; - case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'sekundy' : 'sekúnd'); - } else { - return result + 'sekundami'; - } - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - case 'd': // a day / in a day / a day ago - return withoutSuffix || isFuture ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - case 'M': // a month / in a month / a month ago - return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - case 'y': // a year / in a year / a year ago - return withoutSuffix || isFuture ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.constraint === constraint.constraint; } } +}).as(exports, "ObjectConstraint"); - var sk = moment.defineLocale('sk', { - months: months, - monthsShort: monthsShort, - weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'pred %s', - s: translate, - ss: translate, - m: translate, - mm: translate, - h: translate, - hh: translate, - d: translate, - dd: translate, - M: translate, - MM: translate, - y: translate, - yy: translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. +var EqualityConstraint = Constraint.extend({ + + instance: { + + type: "equality", + + constructor: function (constraint, options) { + this._super([constraint]); + options = options || {}; + this.pattern = options.pattern; + this._matcher = constraintMatcher.getMatcher(constraint, options, true); }, - }); - return sk; + "assert": function (values) { + return this._matcher(values); + } + } +}).as(exports, "EqualityConstraint"); -}))); +EqualityConstraint.extend({instance: {type: "inequality"}}).as(exports, "InequalityConstraint"); +EqualityConstraint.extend({instance: {type: "comparison"}}).as(exports, "ComparisonConstraint"); +Constraint.extend({ -/***/ }), + instance: { -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + type: "equality", -//! moment.js locale configuration -//! locale : Slovenian [sl] -//! author : Robert Sedovšek : https://github.com/sedovsek + constructor: function () { + this._super([ + [true] + ]); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias"); + }, - //! moment.js locale configuration - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture - ? 'nekaj sekund' - : 'nekaj sekundami'; - case 'ss': - if (number === 1) { - result += withoutSuffix ? 'sekundo' : 'sekundi'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah'; - } else { - result += 'sekund'; - } - return result; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; + "assert": function () { + return true; } } +}).as(exports, "TrueConstraint"); - var sl = moment.defineLocale('sl', { - months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD. MM. YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', +var ReferenceConstraint = Constraint.extend({ + + instance: { + + type: "reference", + + constructor: function (constraint, options) { + this.cache = {}; + this._super([constraint]); + options = options || {}; + this.values = []; + this.pattern = options.pattern; + this._options = options; + this._matcher = constraintMatcher.getMatcher(constraint, options, false); }, - calendar: { - sameDay: '[danes ob] LT', - nextDay: '[jutri ob] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay: '[včeraj ob] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse: 'L', + "assert": function (fact, fh) { + try { + return this._matcher(fact, fh); + } catch (e) { + throw new Error("Error with evaluating pattern " + this.pattern + " " + e.message); + } + }, - relativeTime: { - future: 'čez %s', - past: 'pred %s', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, + + merge: function (that) { + var ret = this; + if (that instanceof ReferenceConstraint) { + ret = new this._static([this.constraint, that.constraint, "and"], merge({}, this._options, this._options)); + ret._alias = this._alias || that._alias; + ret.vars = this.vars.concat(that.vars); + } + return ret; }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. + + equal: function (constraint) { + return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint); }, - }); - return sl; -}))); + getters: { + variables: function () { + return this.vars; + }, + alias: function () { + return this._alias; + } + }, -/***/ }), + setters: { + alias: function (alias) { + this._alias = alias; + this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) { + return v !== alias; + }); + } + } + } -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +}).as(exports, "ReferenceConstraint"); -//! moment.js locale configuration -//! locale : Albanian [sq] -//! author : Flakërim Ismani : https://github.com/flakerimi -//! author : Menelion Elensúle : https://github.com/Oire -//! author : Oerd Cukalla : https://github.com/oerd -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +ReferenceConstraint.extend({ + instance: { + type: "reference_equality", + op: "eq", + getIndexableProperties: function () { + return constraintMatcher.getIndexableProperties(this.constraint); + } + } +}).as(exports, "ReferenceEqualityConstraint") + .extend({instance: {type: "reference_inequality", op: "neq"}}).as(exports, "ReferenceInequalityConstraint") + .extend({instance: {type: "reference_gt", op: "gt"}}).as(exports, "ReferenceGTConstraint") + .extend({instance: {type: "reference_gte", op: "gte"}}).as(exports, "ReferenceGTEConstraint") + .extend({instance: {type: "reference_lt", op: "lt"}}).as(exports, "ReferenceLTConstraint") + .extend({instance: {type: "reference_lte", op: "lte"}}).as(exports, "ReferenceLTEConstraint"); - //! moment.js locale configuration - var sq = moment.defineLocale('sq', { - months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( - '_' - ), - monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( - '_' - ), - weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), - weekdaysParseExact: true, - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; +Constraint.extend({ + instance: { + + type: "hash", + + constructor: function (hash) { + this._super([hash]); }, - meridiem: function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; + + equal: function (constraint) { + return extd.instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && extd.deepEqual(this.constraint, constraint.constraint); }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', + + "assert": function () { + return true; }, - calendar: { - sameDay: '[Sot në] LT', - nextDay: '[Nesër në] LT', - nextWeek: 'dddd [në] LT', - lastDay: '[Dje në] LT', - lastWeek: 'dddd [e kaluar në] LT', - sameElse: 'L', + + getters: { + variables: function () { + return this.constraint; + } + } + + } +}).as(exports, "HashConstraint"); + +Constraint.extend({ + instance: { + constructor: function (constraints, options) { + this.type = "from"; + this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true); + extd.bindAll(this, ["assert"]); }, - relativeTime: { - future: 'në %s', - past: '%s më parë', - s: 'disa sekonda', - ss: '%d sekonda', - m: 'një minutë', - mm: '%d minuta', - h: 'një orë', - hh: '%d orë', - d: 'një ditë', - dd: '%d ditë', - M: 'një muaj', - MM: '%d muaj', - y: 'një vit', - yy: '%d vite', + + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.get("alias") === constraint.get("alias") && deepEqual(this.constraints, constraint.constraints); }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + "assert": function (fact, fh) { + return this.constraints(fact, fh); }, - }); - return sq; + getters: { + variables: function () { + return this.constraint; + } + } + + } +}).as(exports, "FromConstraint"); + +Constraint.extend({ + instance: { + constructor: function (func, options) { + this.type = "custom"; + this.fn = func; + this.options = options; + extd.bindAll(this, ["assert"]); + }, + + equal: function (constraint) { + return instanceOf(constraint, this._static) && this.fn === constraint.constraint; + }, + + "assert": function (fact, fh) { + return this.fn(fact, fh); + } + } +}).as(exports, "CustomConstraint"); + -}))); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js ***! - \********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Serbian Cyrillic [sr-cyrl] -//! author : Milan Janačković : https://github.com/milan-j +"use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isArray = extd.isArray, + forEach = extd.forEach, + some = extd.some, + indexOf = extd.indexOf, + isNumber = extd.isNumber, + removeDups = extd.removeDuplicates, + atoms = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"); - var translator = { - words: { - //Different grammatical cases - ss: ['секунда', 'секунде', 'секунди'], - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'], - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 - ? wordKey[0] - : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; +function getProps(val) { + return extd(val).map(function mapper(val) { + return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(".") : val; + }).flatten().filter(function (v) { + return !!v; + }); +} + +var definedFuncs = { + indexOf: extd.indexOf, + now: function () { + return new Date(); + }, + + Date: function (y, m, d, h, min, s, ms) { + var date = new Date(); + if (isNumber(y)) { + date.setYear(y); + } + if (isNumber(m)) { + date.setMonth(m); + } + if (isNumber(d)) { + date.setDate(d); + } + if (isNumber(h)) { + date.setHours(h); + } + if (isNumber(min)) { + date.setMinutes(min); + } + if (isNumber(s)) { + date.setSeconds(s); + } + if (isNumber(ms)) { + date.setMilliseconds(ms); + } + return date; + }, + + lengthOf: function (arr, length) { + return arr.length === length; + }, + + isTrue: function (val) { + return val === true; + }, + + isFalse: function (val) { + return val === false; + }, + + isNotNull: function (actual) { + return actual !== null; + }, + + dateCmp: function (dt1, dt2) { + return extd.compare(dt1, dt2); + } + +}; + +forEach(["years", "days", "months", "hours", "minutes", "seconds"], function (k) { + definedFuncs[k + "FromNow"] = extd[k + "FromNow"]; + definedFuncs[k + "Ago"] = extd[k + "Ago"]; +}); + + +forEach(["isArray", "isNumber", "isHash", "isObject", "isDate", "isBoolean", "isString", "isRegExp", "isNull", "isEmpty", + "isUndefined", "isDefined", "isUndefinedOrNull", "isPromiseLike", "isFunction", "deepEqual"], function (k) { + var m = extd[k]; + definedFuncs[k] = function () { + return m.apply(extd, arguments); + }; +}); + + +var lang = { + + equal: function (c1, c2) { + var ret = false; + if (c1 === c2) { + ret = true; + } else { + if (c1[2] === c2[2]) { + if (indexOf(["string", "number", "boolean", "regexp", "identifier", "null"], c1[2]) !== -1) { + ret = c1[0] === c2[0]; + } else if (c1[2] === "unary" || c1[2] === "logicalNot") { + ret = this.equal(c1[0], c2[0]); + } else { + ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]); + } + } + } + return ret; + }, + + __getProperties: function (rule) { + var ret = []; + if (rule) { + var rule2 = rule[2]; + if (!rule2) { + return ret; + } + if (rule2 !== "prop" && + rule2 !== "identifier" && + rule2 !== "string" && + rule2 !== "number" && + rule2 !== "boolean" && + rule2 !== "regexp" && + rule2 !== "unary" && + rule2 !== "unary") { + ret[0] = this.__getProperties(rule[0]); + ret[1] = this.__getProperties(rule[1]); + } else if (rule2 === "identifier") { + //at the bottom + ret = [rule[0]]; } else { - return ( - number + - ' ' + - translator.correctGrammaticalCase(number, wordKey) - ); + ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0])); } - }, - }; + } + return ret; + }, - var srCyrl = moment.defineLocale('sr-cyrl', { - months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( - '_' - ), - monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), - weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), - weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; + getIndexableProperties: function (rule) { + if (rule[2] === "composite") { + return this.getIndexableProperties(rule[0]); + } else if (/^(\w+(\['[^']*'])*) *([!=]==?|[<>]=?) (\w+(\['[^']*'])*)$/.test(this.parse(rule))) { + return getProps(this.__getProperties(rule)).flatten().value(); + } else { + return []; + } + }, + + getIdentifiers: function (rule) { + var ret = []; + var rule2 = rule[2]; + + if (rule2 === "identifier") { + //its an identifier so stop + return [rule[0]]; + } else if (rule2 === "function") { + ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1])); + } else if (rule2 !== "string" && + rule2 !== "number" && + rule2 !== "boolean" && + rule2 !== "regexp" && + rule2 !== "unary" && + rule2 !== "unary") { + //its an expression so keep going + if (rule2 === "prop") { + ret = ret.concat(this.getIdentifiers(rule[0])); + if (rule[1]) { + var propChain = rule[1]; + //go through the member variables and collect any identifiers that may be in functions + while (isArray(propChain)) { + if (propChain[2] === "function") { + ret = ret.concat(this.getIdentifiers(propChain[1])); + break; + } else { + propChain = propChain[1]; + } + } } - }, - lastDay: '[јуче у] LT', - lastWeek: function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT', - ]; - return lastWeekDays[this.day()]; - }, - sameElse: 'L', - }, - relativeTime: { - future: 'за %s', - past: 'пре %s', - s: 'неколико секунди', - ss: translator.translate, - m: translator.translate, - mm: translator.translate, - h: translator.translate, - hh: translator.translate, - d: 'дан', - dd: translator.translate, - M: 'месец', - MM: translator.translate, - y: 'годину', - yy: translator.translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return srCyrl; + } else { + if (rule[0]) { + ret = ret.concat(this.getIdentifiers(rule[0])); + } + if (rule[1]) { + ret = ret.concat(this.getIdentifiers(rule[1])); + } + } + } + //remove dups and return + return removeDups(ret); + }, -}))); + toConstraints: function (rule, options) { + var ret = [], + alias = options.alias, + scope = options.scope || {}; + var rule2 = rule[2]; -/***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + if (rule2 === "and") { + ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options)); + } else if ( + rule2 === "composite" || + rule2 === "or" || + rule2 === "lt" || + rule2 === "gt" || + rule2 === "lte" || + rule2 === "gte" || + rule2 === "like" || + rule2 === "notLike" || + rule2 === "eq" || + rule2 === "neq" || + rule2 === "seq" || + rule2 === "sneq" || + rule2 === "in" || + rule2 === "notIn" || + rule2 === "prop" || + rule2 === "propLookup" || + rule2 === "function" || + rule2 === "logicalNot") { + var isReference = some(this.getIdentifiers(rule), function (i) { + return i !== alias && !(i in definedFuncs) && !(i in scope); + }); + switch (rule2) { + case "eq": + ret.push(new atoms[isReference ? "ReferenceEqualityConstraint" : "EqualityConstraint"](rule, options)); + break; + case "seq": + ret.push(new atoms[isReference ? "ReferenceEqualityConstraint" : "EqualityConstraint"](rule, options)); + break; + case "neq": + ret.push(new atoms[isReference ? "ReferenceInequalityConstraint" : "InequalityConstraint"](rule, options)); + break; + case "sneq": + ret.push(new atoms[isReference ? "ReferenceInequalityConstraint" : "InequalityConstraint"](rule, options)); + break; + case "gt": + ret.push(new atoms[isReference ? "ReferenceGTConstraint" : "ComparisonConstraint"](rule, options)); + break; + case "gte": + ret.push(new atoms[isReference ? "ReferenceGTEConstraint" : "ComparisonConstraint"](rule, options)); + break; + case "lt": + ret.push(new atoms[isReference ? "ReferenceLTConstraint" : "ComparisonConstraint"](rule, options)); + break; + case "lte": + ret.push(new atoms[isReference ? "ReferenceLTEConstraint" : "ComparisonConstraint"](rule, options)); + break; + default: + ret.push(new atoms[isReference ? "ReferenceConstraint" : "ComparisonConstraint"](rule, options)); + } -//! moment.js locale configuration -//! locale : Serbian [sr] -//! author : Milan Janačković : https://github.com/milan-j + } + return ret; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration + parse: function (rule) { + return this[rule[2]](rule[0], rule[1]); + }, - var translator = { - words: { - //Different grammatical cases - ss: ['sekunda', 'sekunde', 'sekundi'], - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'], - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 - ? wordKey[0] - : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; + composite: function (lhs) { + return this.parse(lhs); + }, + + and: function (lhs, rhs) { + return ["(", this.parse(lhs), "&&", this.parse(rhs), ")"].join(" "); + }, + + or: function (lhs, rhs) { + return ["(", this.parse(lhs), "||", this.parse(rhs), ")"].join(" "); + }, + + prop: function (name, prop) { + if (prop[2] === "function") { + return [this.parse(name), this.parse(prop)].join("."); + } else { + return [this.parse(name), "['", this.parse(prop), "']"].join(""); + } + }, + + propLookup: function (name, prop) { + if (prop[2] === "function") { + return [this.parse(name), this.parse(prop)].join("."); + } else { + return [this.parse(name), "[", this.parse(prop), "]"].join(""); + } + }, + + unary: function (lhs) { + return -1 * this.parse(lhs); + }, + + plus: function (lhs, rhs) { + return [this.parse(lhs), "+", this.parse(rhs)].join(" "); + }, + minus: function (lhs, rhs) { + return [this.parse(lhs), "-", this.parse(rhs)].join(" "); + }, + + mult: function (lhs, rhs) { + return [this.parse(lhs), "*", this.parse(rhs)].join(" "); + }, + + div: function (lhs, rhs) { + return [this.parse(lhs), "/", this.parse(rhs)].join(" "); + }, + + mod: function (lhs, rhs) { + return [this.parse(lhs), "%", this.parse(rhs)].join(" "); + }, + + lt: function (lhs, rhs) { + return [this.parse(lhs), "<", this.parse(rhs)].join(" "); + }, + gt: function (lhs, rhs) { + return [this.parse(lhs), ">", this.parse(rhs)].join(" "); + }, + lte: function (lhs, rhs) { + return [this.parse(lhs), "<=", this.parse(rhs)].join(" "); + }, + gte: function (lhs, rhs) { + return [this.parse(lhs), ">=", this.parse(rhs)].join(" "); + }, + like: function (lhs, rhs) { + return [this.parse(rhs), ".test(", this.parse(lhs), ")"].join(""); + }, + notLike: function (lhs, rhs) { + return ["!", this.parse(rhs), ".test(", this.parse(lhs), ")"].join(""); + }, + eq: function (lhs, rhs) { + return [this.parse(lhs), "==", this.parse(rhs)].join(" "); + }, + + seq: function (lhs, rhs) { + return [this.parse(lhs), "===", this.parse(rhs)].join(" "); + }, + + neq: function (lhs, rhs) { + return [this.parse(lhs), "!=", this.parse(rhs)].join(" "); + }, + + sneq: function (lhs, rhs) { + return [this.parse(lhs), "!==", this.parse(rhs)].join(" "); + }, + + "in": function (lhs, rhs) { + return ["(indexOf(", this.parse(rhs), ",", this.parse(lhs), ")) != -1"].join(""); + }, + + "notIn": function (lhs, rhs) { + return ["(indexOf(", this.parse(rhs), ",", this.parse(lhs), ")) == -1"].join(""); + }, + + "arguments": function (lhs, rhs) { + var ret = []; + if (lhs) { + ret.push(this.parse(lhs)); + } + if (rhs) { + ret.push(this.parse(rhs)); + } + return ret.join(","); + }, + + "array": function (lhs) { + var args = []; + if (lhs) { + args = this.parse(lhs); + if (isArray(args)) { + return args; } else { - return ( - number + - ' ' + - translator.correctGrammaticalCase(number, wordKey) - ); + return ["[", args, "]"].join(""); } - }, - }; + } + return ["[", args.join(","), "]"].join(""); + }, - var sr = moment.defineLocale('sr', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( - '_' - ), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( - '_' - ), - weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm', - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay: '[juče u] LT', - lastWeek: function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT', - ]; - return lastWeekDays[this.day()]; - }, - sameElse: 'L', - }, - relativeTime: { - future: 'za %s', - past: 'pre %s', - s: 'nekoliko sekundi', - ss: translator.translate, - m: translator.translate, - mm: translator.translate, - h: translator.translate, - hh: translator.translate, - d: 'dan', - dd: translator.translate, - M: 'mesec', - MM: translator.translate, - y: 'godinu', - yy: translator.translate, - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); + "function": function (lhs, rhs) { + var args = this.parse(rhs); + return [this.parse(lhs), "(", args, ")"].join(""); + }, - return sr; + "string": function (lhs) { + return "'" + lhs + "'"; + }, -}))); + "number": function (lhs) { + return lhs; + }, + + "boolean": function (lhs) { + return lhs; + }, + regexp: function (lhs) { + return lhs; + }, -/***/ }), + identifier: function (lhs) { + return lhs; + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + "null": function () { + return "null"; + }, -//! moment.js locale configuration -//! locale : siSwati [ss] -//! author : Nicolai Davies : https://github.com/nicolaidavies + logicalNot: function (lhs) { + return ["!(", this.parse(lhs), ")"].join(""); + } +}; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var matcherCount = 0; +var toJs = exports.toJs = function (rule, scope, alias, equality, wrap) { + /*jshint evil:true*/ + var js = lang.parse(rule); + scope = scope || {}; + var vars = lang.getIdentifiers(rule); + var closureVars = ["var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;"], funcVars = []; + extd(vars).filter(function (v) { + var ret = ["var ", v, " = "]; + if (definedFuncs.hasOwnProperty(v)) { + ret.push("definedFuncs['", v, "']"); + } else if (scope.hasOwnProperty(v)) { + ret.push("scope['", v, "']"); + } else { + return true; + } + ret.push(";"); + closureVars.push(ret.join("")); + return false; + }).forEach(function (v) { + var ret = ["var ", v, " = "]; + if (equality || v !== alias) { + ret.push("fact." + v); + } else if (v === alias) { + ret.push("hash.", v, ""); + } + ret.push(";"); + funcVars.push(ret.join("")); + }); + var closureBody = closureVars.join("") + "return function matcher" + (matcherCount++) + (!equality ? "(fact, hash){" : "(fact){") + funcVars.join("") + " return " + (wrap ? wrap(js) : js) + ";}"; + var f = new Function("definedFuncs, scope", closureBody)(definedFuncs, scope); + //console.log(f.toString()); + return f; +}; - //! moment.js locale configuration +exports.getMatcher = function (rule, options, equality) { + options = options || {}; + return toJs(rule, options.scope, options.alias, equality, function (src) { + return "!!(" + src + ")"; + }); +}; - var ss = moment.defineLocale('ss', { - months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( - '_' - ), - monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), - weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( - '_' - ), - weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), - weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', - }, - calendar: { - sameDay: '[Namuhla nga] LT', - nextDay: '[Kusasa nga] LT', - nextWeek: 'dddd [nga] LT', - lastDay: '[Itolo nga] LT', - lastWeek: 'dddd [leliphelile] [nga] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'nga %s', - past: 'wenteka nga %s', - s: 'emizuzwana lomcane', - ss: '%d mzuzwana', - m: 'umzuzu', - mm: '%d emizuzu', - h: 'lihora', - hh: '%d emahora', - d: 'lilanga', - dd: '%d emalanga', - M: 'inyanga', - MM: '%d tinyanga', - y: 'umnyaka', - yy: '%d iminyaka', - }, - meridiemParse: /ekuseni|emini|entsambama|ebusuku/, - meridiem: function (hours, minutes, isLower) { - if (hours < 11) { - return 'ekuseni'; - } else if (hours < 15) { - return 'emini'; - } else if (hours < 19) { - return 'entsambama'; - } else { - return 'ebusuku'; - } - }, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ekuseni') { - return hour; - } else if (meridiem === 'emini') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { - if (hour === 0) { - return 0; - } - return hour + 12; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: '%d', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, +exports.getSourceMatcher = function (rule, options, equality) { + options = options || {}; + return toJs(rule, options.scope, options.alias, equality, function (src) { + return src; }); +}; - return ss; +exports.toConstraints = function (constraint, options) { + if (typeof constraint === 'function') { + return [new atoms.CustomConstraint(constraint, options)]; + } + //constraint.split("&&") + return lang.toConstraints(constraint, options); +}; -}))); +exports.equal = function (c1, c2) { + return lang.equal(c1, c2); +}; + +exports.getIdentifiers = function (constraint) { + return lang.getIdentifiers(constraint); +}; +exports.getIndexableProperties = function (constraint) { + return lang.getIndexableProperties(constraint); +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Swedish [sv] -//! author : Jens Alm : https://github.com/ulmus +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +"use strict"; +/* module decorator */ module = __webpack_require__.nmd(module); - //! moment.js locale configuration +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isBoolean = extd.isBoolean, + declare = extd.declare, + indexOf = extd.indexOf, + pPush = Array.prototype.push; - var sv = moment.defineLocale('sv', { - months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( - '_' - ), - monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [kl.] HH:mm', - LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', - lll: 'D MMM YYYY HH:mm', - llll: 'ddd D MMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'om %s', - past: 'för %s sedan', - s: 'några sekunder', - ss: '%d sekunder', - m: 'en minut', - mm: '%d minuter', - h: 'en timme', - hh: '%d timmar', - d: 'en dag', - dd: '%d dagar', - M: 'en månad', - MM: '%d månader', - y: 'ett år', - yy: '%d år', - }, - dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? ':e' - : b === 1 - ? ':a' - : b === 2 - ? ':a' - : b === 3 - ? ':e' - : ':e'; - return number + output; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); +function createContextHash(paths, hashCode) { + var ret = "", + i = -1, + l = paths.length; + while (++i < l) { + ret += paths[i].id + ":"; + } + ret += hashCode; + return ret; +} - return sv; +function merge(h1, h2, aliases) { + var i = -1, l = aliases.length, alias; + while (++i < l) { + alias = aliases[i]; + h1[alias] = h2[alias]; + } +} -}))); +function unionRecency(arr, arr1, arr2) { + pPush.apply(arr, arr1); + var i = -1, l = arr2.length, val, j = arr.length; + while (++i < l) { + val = arr2[i]; + if (indexOf(arr, val) === -1) { + arr[j++] = val; + } + } +} +var Match = declare({ + instance: { -/***/ }), + isMatch: true, + hashCode: "", + facts: null, + factIds: null, + factHash: null, + recency: null, + aliases: null, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + constructor: function () { + this.facts = []; + this.factIds = []; + this.factHash = {}; + this.recency = []; + this.aliases = []; + }, -//! moment.js locale configuration -//! locale : Swahili [sw] -//! author : Fahad Kassim : https://github.com/fadsel + addFact: function (assertable) { + pPush.call(this.facts, assertable); + pPush.call(this.recency, assertable.recency); + pPush.call(this.factIds, assertable.id); + this.hashCode = this.factIds.join(":"); + return this; + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + merge: function (mr) { + var ret = new Match(); + ret.isMatch = mr.isMatch; + pPush.apply(ret.facts, this.facts); + pPush.apply(ret.facts, mr.facts); + pPush.apply(ret.aliases, this.aliases); + pPush.apply(ret.aliases, mr.aliases); + ret.hashCode = this.hashCode + ":" + mr.hashCode; + merge(ret.factHash, this.factHash, this.aliases); + merge(ret.factHash, mr.factHash, mr.aliases); + unionRecency(ret.recency, this.recency, mr.recency); + return ret; + } + } +}); - //! moment.js locale configuration +var Context = declare({ + instance: { + match: null, + factHash: null, + aliases: null, + fact: null, + hashCode: null, + paths: null, + pathsHash: null, - var sw = moment.defineLocale('sw', { - months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( - '_' - ), - monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), - weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( - '_' - ), - weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), - weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', + constructor: function (fact, paths, mr) { + this.fact = fact; + if (mr) { + this.match = mr; + } else { + this.match = new Match().addFact(fact); + } + this.factHash = this.match.factHash; + this.aliases = this.match.aliases; + this.hashCode = this.match.hashCode; + if (paths) { + this.paths = paths; + this.pathsHash = createContextHash(paths, this.hashCode); + } else { + this.pathsHash = this.hashCode; + } }, - calendar: { - sameDay: '[leo saa] LT', - nextDay: '[kesho saa] LT', - nextWeek: '[wiki ijayo] dddd [saat] LT', - lastDay: '[jana] LT', - lastWeek: '[wiki iliyopita] dddd [saat] LT', - sameElse: 'L', + + "set": function (key, value) { + this.factHash[key] = value; + this.aliases.push(key); + return this; }, - relativeTime: { - future: '%s baadaye', - past: 'tokea %s', - s: 'hivi punde', - ss: 'sekunde %d', - m: 'dakika moja', - mm: 'dakika %d', - h: 'saa limoja', - hh: 'masaa %d', - d: 'siku moja', - dd: 'siku %d', - M: 'mwezi mmoja', - MM: 'miezi %d', - y: 'mwaka mmoja', - yy: 'miaka %d', + + isMatch: function (isMatch) { + if (isBoolean(isMatch)) { + this.match.isMatch = isMatch; + } else { + return this.match.isMatch; + } + return this; }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. + + mergeMatch: function (merge) { + var match = this.match = this.match.merge(merge); + this.factHash = match.factHash; + this.hashCode = match.hashCode; + this.aliases = match.aliases; + return this; }, - }); - return sw; + clone: function (fact, paths, match) { + return new Context(fact || this.fact, paths || this.path, match || this.match); + } + } +}).as(module); + -}))); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tamil [ta] -//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + Promise = extd.Promise, + nextTick = __webpack_require__(/*! ./nextTick */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js"), + isPromiseLike = extd.isPromiseLike; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +Promise.extend({ + instance: { - //! moment.js locale configuration + looping: false, - var symbolMap = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦', + constructor: function (flow, matchUntilHalt) { + this._super([]); + this.flow = flow; + this.agenda = flow.agenda; + this.rootNode = flow.rootNode; + this.matchUntilHalt = !!(matchUntilHalt); + extd.bindAll(this, ["onAlter", "callNext"]); }, - numberMap = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0', - }; - var ta = moment.defineLocale('ta', { - months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( - '_' - ), - monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( - '_' - ), - weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( - '_' - ), - weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( - '_' - ), - weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, HH:mm', - LLLL: 'dddd, D MMMM YYYY, HH:mm', - }, - calendar: { - sameDay: '[இன்று] LT', - nextDay: '[நாளை] LT', - nextWeek: 'dddd, LT', - lastDay: '[நேற்று] LT', - lastWeek: '[கடந்த வாரம்] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s இல்', - past: '%s முன்', - s: 'ஒரு சில விநாடிகள்', - ss: '%d விநாடிகள்', - m: 'ஒரு நிமிடம்', - mm: '%d நிமிடங்கள்', - h: 'ஒரு மணி நேரம்', - hh: '%d மணி நேரம்', - d: 'ஒரு நாள்', - dd: '%d நாட்கள்', - M: 'ஒரு மாதம்', - MM: '%d மாதங்கள்', - y: 'ஒரு வருடம்', - yy: '%d ஆண்டுகள்', + halt: function () { + this.__halted = true; + if (!this.looping) { + this.callback(); + } }, - dayOfMonthOrdinalParse: /\d{1,2}வது/, - ordinal: function (number) { - return number + 'வது'; + + onAlter: function () { + this.flowAltered = true; + if (!this.looping && this.matchUntilHalt && !this.__halted) { + this.callNext(); + } }, - preparse: function (string) { - return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { - return numberMap[match]; - }); + + setup: function () { + var flow = this.flow; + this.rootNode.resetCounter(); + flow.on("assert", this.onAlter); + flow.on("modify", this.onAlter); + flow.on("retract", this.onAlter); }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); + + tearDown: function () { + var flow = this.flow; + flow.removeListener("assert", this.onAlter); + flow.removeListener("modify", this.onAlter); + flow.removeListener("retract", this.onAlter); }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem: function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } + + __handleAsyncNext: function (next) { + var self = this, agenda = self.agenda; + return next.then(function () { + self.looping = false; + if (!agenda.isEmpty()) { + if (self.flowAltered) { + self.rootNode.incrementCounter(); + self.flowAltered = false; + } + if (!self.__halted) { + self.callNext(); + } else { + self.callback(); + } + } else if (!self.matchUntilHalt || self.__halted) { + self.callback(); + } + self = null; + }, this.errback); }, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; + + __handleSyncNext: function (next) { + this.looping = false; + if (!this.agenda.isEmpty()) { + if (this.flowAltered) { + this.rootNode.incrementCounter(); + this.flowAltered = false; + } } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; + if (next && !this.__halted) { + nextTick(this.callNext); + } else if (!this.matchUntilHalt || this.__halted) { + this.callback(); } + return next; }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. + + callback: function () { + this.tearDown(); + this._super(arguments); }, - }); - return ta; -}))); + callNext: function () { + this.looping = true; + var next = this.agenda.fireNext(); + return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next); + }, + execute: function () { + this.setup(); + this.callNext(); + return this; + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Telugu [te] -//! author : Krishna Chaitanya Thota : https://github.com/kcthota +var arr = __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js"), + unique = arr.unique, + indexOf = arr.indexOf, + map = arr.map, + pSlice = Array.prototype.slice, + pSplice = Array.prototype.splice; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +function plucked(prop) { + var exec = prop.match(/(\w+)\(\)$/); + if (exec) { + prop = exec[1]; + return function (item) { + return item[prop](); + }; + } else { + return function (item) { + return item[prop]; + }; + } +} - //! moment.js locale configuration +function plucker(prop) { + prop = prop.split("."); + if (prop.length === 1) { + return plucked(prop[0]); + } else { + var pluckers = map(prop, function (prop) { + return plucked(prop); + }); + var l = pluckers.length; + return function (item) { + var i = -1, res = item; + while (++i < l) { + res = pluckers[i](res); + } + return res; + }; + } +} - var te = moment.defineLocale('te', { - months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( - '_' - ), - monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( - '_' - ), - weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), - weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), - longDateFormat: { - LT: 'A h:mm', - LTS: 'A h:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm', - LLLL: 'dddd, D MMMM YYYY, A h:mm', - }, - calendar: { - sameDay: '[నేడు] LT', - nextDay: '[రేపు] LT', - nextWeek: 'dddd, LT', - lastDay: '[నిన్న] LT', - lastWeek: '[గత] dddd, LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s లో', - past: '%s క్రితం', - s: 'కొన్ని క్షణాలు', - ss: '%d సెకన్లు', - m: 'ఒక నిమిషం', - mm: '%d నిమిషాలు', - h: 'ఒక గంట', - hh: '%d గంటలు', - d: 'ఒక రోజు', - dd: '%d రోజులు', - M: 'ఒక నెల', - MM: '%d నెలలు', - y: 'ఒక సంవత్సరం', - yy: '%d సంవత్సరాలు', - }, - dayOfMonthOrdinalParse: /\d{1,2}వ/, - ordinal: '%dవ', - meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; +function intersection(a, b) { + a = pSlice.call(a); + var aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) === -1) { + pSplice.call(a, i--, 1); + l--; + } + } + return a; +} + +function inPlaceIntersection(a, b) { + var aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) === -1) { + pSplice.call(a, i--, 1); + l--; + } + } + return a; +} + +function inPlaceDifference(a, b) { + var aOne, i = -1, l; + l = a.length; + while (++i < l) { + aOne = a[i]; + if (indexOf(b, aOne) !== -1) { + pSplice.call(a, i--, 1); + l--; + } + } + return a; +} + +function diffArr(arr1, arr2) { + var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found; + if (l2 > l1) { + ret = arr1.slice(); + while (++i < l2) { + a = arr2[i]; + j = -1; + l1 = ret.length; + while (++j < l1) { + if (ret[j] === a) { + ret.splice(j, 1); + break; + } } - if (meridiem === 'రాత్రి') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ఉదయం') { - return hour; - } else if (meridiem === 'మధ్యాహ్నం') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'సాయంత్రం') { - return hour + 12; + } + } else { + while (++i < l1) { + a = arr1[i]; + j = -1; + found = false; + while (++j < l2) { + if (arr2[j] === a) { + found = true; + break; + } } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'రాత్రి'; - } else if (hour < 10) { - return 'ఉదయం'; - } else if (hour < 17) { - return 'మధ్యాహ్నం'; - } else if (hour < 20) { - return 'సాయంత్రం'; - } else { - return 'రాత్రి'; + if (!found) { + ret.push(a); } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }, - }); + } + } + return ret; +} - return te; +function diffHash(h1, h2) { + var ret = {}; + for (var i in h1) { + if (!hasOwnProperty.call(h2, i)) { + ret[i] = h1[i]; + } + } + return ret; +} + + +function union(arr1, arr2) { + return unique(arr1.concat(arr2)); +} + +module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")() + .register(__webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js")) + .register(arr) + .register(__webpack_require__(/*! object-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js")) + .register(__webpack_require__(/*! promise-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js")) + .register(__webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register("intersection", intersection) + .register("inPlaceIntersection", inPlaceIntersection) + .register("inPlaceDifference", inPlaceDifference) + .register("diffArr", diffArr) + .register("diffHash", diffHash) + .register("unionArr", union) + .register("plucker", plucker) + .register("HashTable", __webpack_require__(/*! ht */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js")) + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! leafy */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js")) + .register("LinkedList", __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js")); -}))); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tetun Dili (East Timor) [tet] -//! author : Joshua Brooks : https://github.com/joshbrooks -//! author : Onorio De J. Afonso : https://github.com/marobo -//! author : Sonia Simoes : https://github.com/soniasimoes +"use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + bind = extd.bind, + declare = extd.declare, + nodes = __webpack_require__(/*! ./nodes */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js"), + EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter, + wm = __webpack_require__(/*! ./workingMemory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js"), + WorkingMemory = wm.WorkingMemory, + ExecutionStragegy = __webpack_require__(/*! ./executionStrategy */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js"), + AgendaTree = __webpack_require__(/*! ./agenda */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js"); - //! moment.js locale configuration +module.exports = declare(EventEmitter, { - var tet = moment.defineLocale('tet', { - months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( - '_' - ), - monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), - weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), - weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', + instance: { + + name: null, + + executionStrategy: null, + + constructor: function (name, conflictResolutionStrategy) { + this.env = null; + this.name = name; + this.__rules = {}; + this.conflictResolutionStrategy = conflictResolutionStrategy; + this.workingMemory = new WorkingMemory(); + this.agenda = new AgendaTree(this, conflictResolutionStrategy); + this.agenda.on("fire", bind(this, "emit", "fire")); + this.agenda.on("focused", bind(this, "emit", "focused")); + this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda); + extd.bindAll(this, "halt", "assert", "retract", "modify", "focus", + "emit", "getFacts", "getFact"); }, - calendar: { - sameDay: '[Ohin iha] LT', - nextDay: '[Aban iha] LT', - nextWeek: 'dddd [iha] LT', - lastDay: '[Horiseik iha] LT', - lastWeek: 'dddd [semana kotuk] [iha] LT', - sameElse: 'L', + + getFacts: function (Type) { + var ret; + if (Type) { + ret = this.workingMemory.getFactsByType(Type); + } else { + ret = this.workingMemory.getFacts(); + } + return ret; }, - relativeTime: { - future: 'iha %s', - past: '%s liuba', - s: 'segundu balun', - ss: 'segundu %d', - m: 'minutu ida', - mm: 'minutu %d', - h: 'oras ida', - hh: 'oras %d', - d: 'loron ida', - dd: 'loron %d', - M: 'fulan ida', - MM: 'fulan %d', - y: 'tinan ida', - yy: 'tinan %d', + + getFact: function (Type) { + var ret; + if (Type) { + ret = this.workingMemory.getFactsByType(Type); + } else { + ret = this.workingMemory.getFacts(); + } + return ret && ret[0]; + }, + + focus: function (focused) { + this.agenda.setFocus(focused); + return this; + }, + + halt: function () { + this.executionStrategy.halt(); + return this; + }, + + dispose: function () { + this.workingMemory.dispose(); + this.agenda.dispose(); + this.rootNode.dispose(); + }, + + assert: function (fact) { + this.rootNode.assertFact(this.workingMemory.assertFact(fact)); + this.emit("assert", fact); + return fact; + }, + + // This method is called to remove an existing fact from working memory + retract: function (fact) { + //fact = this.workingMemory.getFact(fact); + this.rootNode.retractFact(this.workingMemory.retractFact(fact)); + this.emit("retract", fact); + return fact; }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; + + // This method is called to alter an existing fact. It is essentially a + // retract followed by an assert. + modify: function (fact, cb) { + //fact = this.workingMemory.getFact(fact); + if ("function" === typeof cb) { + cb.call(fact, fact); + } + this.rootNode.modifyFact(this.workingMemory.modifyFact(fact)); + this.emit("modify", fact); + return fact; }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + print: function () { + this.rootNode.print(); }, - }); - return tet; + containsRule: function (name) { + return this.rootNode.containsRule(name); + }, -}))); + rule: function (rule) { + this.rootNode.assertRule(rule); + }, + + matchUntilHalt: function (cb) { + return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise(); + }, + + match: function (cb) { + return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise(); + } + } +}); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tajik [tg] -//! author : Orif N. Jr. : https://github.com/orif-jr +"use strict"; +/* module decorator */ module = __webpack_require__.nmd(module); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + instanceOf = extd.instanceOf, + forEach = extd.forEach, + declare = extd.declare, + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, + conflictStrategies = __webpack_require__(/*! ./conflict */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js"), + conflictResolution = conflictStrategies.strategy(["salience", "activationRecency"]), + rule = __webpack_require__(/*! ./rule */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + Flow = __webpack_require__(/*! ./flow */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js"); - //! moment.js locale configuration +var flows = {}; +var FlowContainer = declare({ - var suffixes = { - 0: '-ум', - 1: '-ум', - 2: '-юм', - 3: '-юм', - 4: '-ум', - 5: '-ум', - 6: '-ум', - 7: '-ум', - 8: '-ум', - 9: '-ум', - 10: '-ум', - 12: '-ум', - 13: '-ум', - 20: '-ум', - 30: '-юм', - 40: '-ум', - 50: '-ум', - 60: '-ум', - 70: '-ум', - 80: '-ум', - 90: '-ум', - 100: '-ум', - }; + instance: { - var tg = moment.defineLocale('tg', { - months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( - '_' - ), - monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( - '_' - ), - weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), - weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Имрӯз соати] LT', - nextDay: '[Пагоҳ соати] LT', - lastDay: '[Дирӯз соати] LT', - nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', - lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', - sameElse: 'L', + constructor: function (name, cb) { + this.name = name; + this.cb = cb; + this.__rules = []; + this.__defined = {}; + this.conflictResolutionStrategy = conflictResolution; + if (cb) { + cb.call(this, this); + } + if (!flows.hasOwnProperty(name)) { + flows[name] = this; + } else { + throw new Error("Flow with " + name + " already defined"); + } }, - relativeTime: { - future: 'баъди %s', - past: '%s пеш', - s: 'якчанд сония', - m: 'як дақиқа', - mm: '%d дақиқа', - h: 'як соат', - hh: '%d соат', - d: 'як рӯз', - dd: '%d рӯз', - M: 'як моҳ', - MM: '%d моҳ', - y: 'як сол', - yy: '%d сол', + + conflictResolution: function (strategies) { + this.conflictResolutionStrategy = conflictStrategies.strategy(strategies); + return this; }, - meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'шаб') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'субҳ') { - return hour; - } else if (meridiem === 'рӯз') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'бегоҳ') { - return hour + 12; + + getDefined: function (name) { + var ret = this.__defined[name.toLowerCase()]; + if (!ret) { + throw new Error(name + " flow class is not defined"); } + return ret; }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'шаб'; - } else if (hour < 11) { - return 'субҳ'; - } else if (hour < 16) { - return 'рӯз'; - } else if (hour < 19) { - return 'бегоҳ'; - } else { - return 'шаб'; + + addDefined: function (name, cls) { + //normalize + this.__defined[name.toLowerCase()] = cls; + return cls; + }, + + rule: function () { + this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments)); + return this; + }, + + getSession: function () { + var flow = new Flow(this.name, this.conflictResolutionStrategy); + forEach(this.__rules, function (rule) { + flow.rule(rule); + }); + flow.assert(new InitialFact()); + for (var i = 0, l = arguments.length; i < l; i++) { + flow.assert(arguments[i]); } + return flow; }, - dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/, - ordinal: function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); + + containsRule: function (name) { + return extd.some(this.__rules, function (rule) { + return rule.name === name; + }); + } + + }, + + "static": { + getFlow: function (name) { + return flows[name]; }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 1th is the first week of the year. + + hasFlow: function (name) { + return extd.has(flows, name); }, - }); - return tg; + deleteFlow: function (name) { + if (instanceOf(name, FlowContainer)) { + name = name.name; + } + delete flows[name]; + return FlowContainer; + }, -}))); + deleteFlows: function () { + for (var name in flows) { + if (name in flows) { + delete flows[name]; + } + } + return FlowContainer; + }, + + create: function (name, cb) { + return new FlowContainer(name, cb); + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Thai [th] -//! author : Kridsada Thanabulpong : https://github.com/sirn +"use strict"; +/** + * + * @projectName nools + * @github https://github.com/C2FO/nools + * @includeDoc [Examples] ../docs-md/examples.md + * @includeDoc [Change Log] ../history.md + * @header [../readme.md] + */ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + fs = __webpack_require__(/*! fs */ "fs"), + path = __webpack_require__(/*! path */ "path"), + compile = __webpack_require__(/*! ./compile */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js"), + FlowContainer = __webpack_require__(/*! ./flowContainer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js"); - var th = moment.defineLocale('th', { - months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( - '_' - ), - monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'H:mm', - LTS: 'H:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY เวลา H:mm', - LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', - }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; - } - }, - calendar: { - sameDay: '[วันนี้ เวลา] LT', - nextDay: '[พรุ่งนี้ เวลา] LT', - nextWeek: 'dddd[หน้า เวลา] LT', - lastDay: '[เมื่อวานนี้ เวลา] LT', - lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'อีก %s', - past: '%sที่แล้ว', - s: 'ไม่กี่วินาที', - ss: '%d วินาที', - m: '1 นาที', - mm: '%d นาที', - h: '1 ชั่วโมง', - hh: '%d ชั่วโมง', - d: '1 วัน', - dd: '%d วัน', - M: '1 เดือน', - MM: '%d เดือน', - y: '1 ปี', - yy: '%d ปี', - }, - }); +function isNoolsFile(file) { + return (/\.nools$/).test(file); +} - return th; +function parse(source) { + var ret; + if (isNoolsFile(source)) { + ret = compile.parse(fs.readFileSync(source, "utf8"), source); + } else { + ret = compile.parse(source); + } + return ret; +} -}))); +exports.Flow = FlowContainer; + +exports.getFlow = FlowContainer.getFlow; +exports.hasFlow = FlowContainer.hasFlow; + +exports.deleteFlow = function (name) { + FlowContainer.deleteFlow(name); + return this; +}; + +exports.deleteFlows = function () { + FlowContainer.deleteFlows(); + return this; +}; + +exports.flow = FlowContainer.create; + +exports.compile = function (file, options, cb) { + if (extd.isFunction(options)) { + cb = options; + options = {}; + } else { + options = options || {}; + } + if (extd.isString(file)) { + options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null); + file = parse(file); + } + if (!options.name) { + throw new Error("Name required when compiling nools source"); + } + return compile.compile(file, options, cb, FlowContainer); +}; + +exports.transpile = function (file, options) { + options = options || {}; + if (extd.isString(file)) { + options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null); + file = parse(file); + } + return compile.transpile(file, options); +}; +exports.parse = parse; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Tagalog (Philippines) [tl-ph] -//! author : Dan Hagman : https://github.com/hagmandan +/* module decorator */ module = __webpack_require__.nmd(module); +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js"); +declare({ -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + instance: { + constructor: function () { + this.head = null; + this.tail = null; + this.length = null; + }, - //! moment.js locale configuration + push: function (data) { + var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null}; + if (tail) { + this.tail.next = node; + } + this.tail = node; + if (!head) { + this.head = node; + } + this.length++; + return node; + }, - var tlPh = moment.defineLocale('tl-ph', { - months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( - '_' - ), - monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( - '_' - ), - weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'MM/D/YYYY', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY HH:mm', - LLLL: 'dddd, MMMM DD, YYYY HH:mm', + remove: function (node) { + if (node.prev) { + node.prev.next = node.next; + } else { + this.head = node.next; + } + if (node.next) { + node.next.prev = node.prev; + } else { + this.tail = node.prev; + } + //node.data = node.prev = node.next = null; + this.length--; }, - calendar: { - sameDay: 'LT [ngayong araw]', - nextDay: '[Bukas ng] LT', - nextWeek: 'LT [sa susunod na] dddd', - lastDay: 'LT [kahapon]', - lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L', + + forEach: function (cb) { + var head = {next: this.head}; + while ((head = head.next)) { + cb(head.data); + } }, - relativeTime: { - future: 'sa loob ng %s', - past: '%s ang nakalipas', - s: 'ilang segundo', - ss: '%d segundo', - m: 'isang minuto', - mm: '%d minuto', - h: 'isang oras', - hh: '%d oras', - d: 'isang araw', - dd: '%d araw', - M: 'isang buwan', - MM: '%d buwan', - y: 'isang taon', - yy: '%d taon', + + toArray: function () { + var head = {next: this.head}, ret = []; + while ((head = head.next)) { + ret.push(head); + } + return ret; }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: function (number) { - return number; + + removeByData: function (data) { + var head = {next: this.head}; + while ((head = head.next)) { + if (head.data === data) { + this.remove(head); + break; + } + } }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + getByData: function (data) { + var head = {next: this.head}; + while ((head = head.next)) { + if (head.data === data) { + return head; + } + } }, - }); - return tlPh; + clear: function () { + this.head = this.tail = null; + this.length = 0; + } -}))); + } + +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js ***! + \************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Klingon [tlh] -//! author : Dominika Kruk : https://github.com/amaranthrose +/*global setImmediate, window, MessageChannel*/ +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); +var nextTick; +if (typeof setImmediate === "function") { + // In IE10, or use https://github.com/NobleJS/setImmediate + if (typeof window !== "undefined") { + nextTick = extd.bind(window, setImmediate); + } else { + nextTick = setImmediate; + } +} else if (typeof process !== "undefined") { + // node + nextTick = process.nextTick; +} else if (typeof MessageChannel !== "undefined") { + // modern browsers + // http://www.nonblocking.io/2011/06/windownexttick.html + var channel = new MessageChannel(); + // linked list of tasks (single, with head node) + var head = {}, tail = head; + channel.port1.onmessage = function () { + head = head.next; + var task = head.task; + delete head.task; + task(); + }; + nextTick = function (task) { + tail = tail.next = {task: task}; + channel.port2.postMessage(0); + }; +} else { + // old browsers + nextTick = function (task) { + setTimeout(task, 0); + }; +} -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +module.exports = nextTick; - //! moment.js locale configuration +/***/ }), - var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function translateFuture(output) { - var time = output; - time = - output.indexOf('jaj') !== -1 - ? time.slice(0, -3) + 'leS' - : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'waQ' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'nem' - : time + ' pIq'; - return time; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + intersection = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js").intersection; - function translatePast(output) { - var time = output; - time = - output.indexOf('jaj') !== -1 - ? time.slice(0, -3) + 'Hu’' - : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'wen' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'ben' - : time + ' ret'; - return time; - } +Node.extend({ + instance: { - function translate(number, withoutSuffix, string, isFuture) { - var numberNoun = numberAsNoun(number); - switch (string) { - case 'ss': - return numberNoun + ' lup'; - case 'mm': - return numberNoun + ' tup'; - case 'hh': - return numberNoun + ' rep'; - case 'dd': - return numberNoun + ' jaj'; - case 'MM': - return numberNoun + ' jar'; - case 'yy': - return numberNoun + ' DIS'; - } - } + __propagatePaths: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths; + while (--i > -1) { + entry = entrySet[i]; + outNode = entry.key; + paths = entry.value; + if ((continuingPaths = intersection(paths, context.paths)).length) { + outNode[method](context.clone(null, continuingPaths, null)); + } + } + }, - function numberAsNoun(number) { - var hundred = Math.floor((number % 1000) / 100), - ten = Math.floor((number % 100) / 10), - one = number % 10, - word = ''; - if (hundred > 0) { - word += numbersNouns[hundred] + 'vatlh'; - } - if (ten > 0) { - word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; - } - if (one > 0) { - word += (word !== '' ? ' ' : '') + numbersNouns[one]; + __propagateNoPaths: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length; + while (--i > -1) { + entrySet[i].key[method](context); + } + }, + + __propagate: function (method, context) { + if (context.paths) { + this.__propagatePaths(method, context); + } else { + this.__propagateNoPaths(method, context); + } } - return word === '' ? 'pagh' : word; } +}).as(module); - var tlh = moment.defineLocale('tlh', { - months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split( - '_' - ), - monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( - '_' - ), - weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( - '_' - ), - weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( - '_' - ), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); + +AlphaNode.extend({ + instance: { + + constructor: function () { + this._super(arguments); + this.alias = this.constraint.get("alias"); }, - calendar: { - sameDay: '[DaHjaj] LT', - nextDay: '[wa’leS] LT', - nextWeek: 'LLL', - lastDay: '[wa’Hu’] LT', - lastWeek: 'LLL', - sameElse: 'L', + + toString: function () { + return "AliasNode" + this.__count; }, - relativeTime: { - future: translateFuture, - past: translatePast, - s: 'puS lup', - ss: translate, - m: 'wa’ tup', - mm: translate, - h: 'wa’ rep', - hh: translate, - d: 'wa’ jaj', - dd: translate, - M: 'wa’ jar', - MM: translate, - y: 'wa’ DIS', - yy: translate, + + assert: function (context) { + return this.__propagate("assert", context.set(this.alias, context.fact.object)); }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + modify: function (context) { + return this.__propagate("modify", context.set(this.alias, context.fact.object)); }, - }); - return tlh; + retract: function (context) { + return this.__propagate("retract", context.set(this.alias, context.fact.object)); + }, -}))); + equal: function (other) { + return other instanceof this._static && this.alias === other.alias; + } + } +}).as(module); + +/***/ }), + +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* module decorator */ module = __webpack_require__.nmd(module); + +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"); + +Node.extend({ + instance: { + constructor: function (constraint) { + this._super([]); + this.constraint = constraint; + this.constraintAssert = this.constraint.assert; + }, + + toString: function () { + return "AlphaNode " + this.__count; + }, + equal: function (constraint) { + return this.constraint.equal(constraint.constraint); + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Turkish [tr] -//! authors : Erhan Gundogan : https://github.com/erhangundogan, -//! Burak Yiğit Kaya: https://github.com/BYK +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + keys = extd.hash.keys, + Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + LeftMemory = __webpack_require__(/*! ./misc/leftMemory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js"), RightMemory = __webpack_require__(/*! ./misc/rightMemory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +Node.extend({ - //! moment.js locale configuration + instance: { - var suffixes = { - 1: "'inci", - 5: "'inci", - 8: "'inci", - 70: "'inci", - 80: "'inci", - 2: "'nci", - 7: "'nci", - 20: "'nci", - 50: "'nci", - 3: "'üncü", - 4: "'üncü", - 100: "'üncü", - 6: "'ncı", - 9: "'uncu", - 10: "'uncu", - 30: "'uncu", - 60: "'ıncı", - 90: "'ıncı", - }; + nodeType: "BetaNode", - var tr = moment.defineLocale('tr', { - months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( - '_' - ), - monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( - '_' - ), - weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'öö' : 'ÖÖ'; - } else { - return isLower ? 'ös' : 'ÖS'; + constructor: function () { + this._super([]); + this.leftMemory = {}; + this.rightMemory = {}; + this.leftTuples = new LeftMemory(); + this.rightTuples = new RightMemory(); + }, + + __propagate: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length, entry, outNode; + while (--i > -1) { + entry = entrySet[i]; + outNode = entry.key; + outNode[method](context); } }, - meridiemParse: /öö|ÖÖ|ös|ÖS/, - isPM: function (input) { - return input === 'ös' || input === 'ÖS'; + + dispose: function () { + this.leftMemory = {}; + this.rightMemory = {}; + this.leftTuples.clear(); + this.rightTuples.clear(); }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', + + disposeLeft: function (fact) { + this.leftMemory = {}; + this.leftTuples.clear(); + this.propagateDispose(fact); }, - calendar: { - sameDay: '[bugün saat] LT', - nextDay: '[yarın saat] LT', - nextWeek: '[gelecek] dddd [saat] LT', - lastDay: '[dün] LT', - lastWeek: '[geçen] dddd [saat] LT', - sameElse: 'L', + + disposeRight: function (fact) { + this.rightMemory = {}; + this.rightTuples.clear(); + this.propagateDispose(fact); }, - relativeTime: { - future: '%s sonra', - past: '%s önce', - s: 'birkaç saniye', - ss: '%d saniye', - m: 'bir dakika', - mm: '%d dakika', - h: 'bir saat', - hh: '%d saat', - d: 'bir gün', - dd: '%d gün', - M: 'bir ay', - MM: '%d ay', - y: 'bir yıl', - yy: '%d yıl', + + hashCode: function () { + return this.nodeType + " " + this.__count; }, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'Do': - case 'DD': - return number; - default: - if (number === 0) { - // special case for zero - return number + "'ıncı"; - } - var a = number % 10, - b = (number % 100) - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); + + toString: function () { + return this.nodeType + " " + this.__count; + }, + + retractLeft: function (context) { + context = this.removeFromLeftMemory(context).data; + var rightMatches = context.rightMatches, + hashCodes = keys(rightMatches), + i = -1, + l = hashCodes.length; + while (++i < l) { + this.__propagate("retract", rightMatches[hashCodes[i]].clone()); } }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. + + retractRight: function (context) { + context = this.removeFromRightMemory(context).data; + var leftMatches = context.leftMatches, + hashCodes = keys(leftMatches), + i = -1, + l = hashCodes.length; + while (++i < l) { + this.__propagate("retract", leftMatches[hashCodes[i]].clone()); + } }, - }); - return tr; + assertLeft: function (context) { + this.__addToLeftMemory(context); + var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length; + while (++i < l) { + this.propagateFromLeft(context, rm[i].data); + } + }, -}))); + assertRight: function (context) { + this.__addToRightMemory(context); + var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length; + while (++i < l) { + this.propagateFromRight(context, lm[i].data); + } + }, + modifyLeft: function (context) { + var previousContext = this.removeFromLeftMemory(context).data; + this.__addToLeftMemory(context); + var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches; + if (!l) { + this.propagateRetractModifyFromLeft(previousContext); + } else { + rightMatches = previousContext.rightMatches; + while (++i < l) { + this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data); + } -/***/ }), + } + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + modifyRight: function (context) { + var previousContext = this.removeFromRightMemory(context).data; + this.__addToRightMemory(context); + var lm = this.leftTuples.getLeftMemory(context); + if (!lm.length) { + this.propagateRetractModifyFromRight(previousContext); + } else { + var leftMatches = previousContext.leftMatches, i = -1, l = lm.length; + while (++i < l) { + this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data); + } + } + }, -//! moment.js locale configuration -//! locale : Talossan [tzl] -//! author : Robin van der Vliet : https://github.com/robin0van0der0v -//! author : Iustì Canun + propagateFromLeft: function (context, rc) { + this.__propagate("assert", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match)))); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + propagateFromRight: function (context, lc) { + this.__propagate("assert", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match)))); + }, - //! moment.js locale configuration + propagateRetractModifyFromLeft: function (context) { + var rightMatches = context.rightMatches, + hashCodes = keys(rightMatches), + l = hashCodes.length, + i = -1; + while (++i < l) { + this.__propagate("retract", rightMatches[hashCodes[i]].clone()); + } + }, - // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. - // This is currently too difficult (maybe even impossible) to add. - var tzl = moment.defineLocale('tzl', { - months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( - '_' - ), - monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat: { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM [dallas] YYYY', - LLL: 'D. MMMM [dallas] YYYY HH.mm', - LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', + propagateRetractModifyFromRight: function (context) { + var leftMatches = context.leftMatches, + hashCodes = keys(leftMatches), + l = hashCodes.length, + i = -1; + while (++i < l) { + this.__propagate("retract", leftMatches[hashCodes[i]].clone()); + } }, - meridiemParse: /d\'o|d\'a/i, - isPM: function (input) { - return "d'o" === input.toLowerCase(); + + propagateAssertModifyFromLeft: function (context, rightMatches, rm) { + var factId = rm.hashCode; + if (factId in rightMatches) { + this.__propagate("modify", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match)))); + } else { + this.propagateFromLeft(context, rm); + } }, - meridiem: function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? "d'o" : "D'O"; + + propagateAssertModifyFromRight: function (context, leftMatches, lm) { + var factId = lm.hashCode; + if (factId in leftMatches) { + this.__propagate("modify", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match)))); } else { - return isLower ? "d'a" : "D'A"; + this.propagateFromRight(context, lm); } }, - calendar: { - sameDay: '[oxhi à] LT', - nextDay: '[demà à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[ieiri à] LT', - lastWeek: '[sür el] dddd [lasteu à] LT', - sameElse: 'L', + + removeFromRightMemory: function (context) { + var hashCode = context.hashCode, ret; + context = this.rightMemory[hashCode] || null; + var tuples = this.rightTuples; + if (context) { + var leftMemory = this.leftMemory; + ret = context.data; + var leftMatches = ret.leftMatches; + tuples.remove(context); + var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length; + while (++i < l) { + delete leftMemory[hashCodes[i]].data.rightMatches[hashCode]; + } + delete this.rightMemory[hashCode]; + } + return context; }, - relativeTime: { - future: 'osprei %s', - past: 'ja%s', - s: processRelativeTime, - ss: processRelativeTime, - m: processRelativeTime, - mm: processRelativeTime, - h: processRelativeTime, - hh: processRelativeTime, - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, + + removeFromLeftMemory: function (context) { + var hashCode = context.hashCode; + context = this.leftMemory[hashCode] || null; + if (context) { + var rightMemory = this.rightMemory; + var rightMatches = context.data.rightMatches; + this.leftTuples.remove(context); + var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length; + while (++i < l) { + delete rightMemory[hashCodes[i]].data.leftMatches[hashCode]; + } + delete this.leftMemory[hashCode]; + } + return context; }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + getRightMemoryMatches: function (context) { + var lm = this.leftMemory[context.hashCode], ret = {}; + if (lm) { + ret = lm.rightMatches; + } + return ret; }, - }); - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - s: ['viensas secunds', "'iensas secunds"], - ss: [number + ' secunds', '' + number + ' secunds'], - m: ["'n míut", "'iens míut"], - mm: [number + ' míuts', '' + number + ' míuts'], - h: ["'n þora", "'iensa þora"], - hh: [number + ' þoras', '' + number + ' þoras'], - d: ["'n ziua", "'iensa ziua"], - dd: [number + ' ziuas', '' + number + ' ziuas'], - M: ["'n mes", "'iens mes"], - MM: [number + ' mesen', '' + number + ' mesen'], - y: ["'n ar", "'iens ar"], - yy: [number + ' ars', '' + number + ' ars'], - }; - return isFuture - ? format[key][0] - : withoutSuffix - ? format[key][0] - : format[key][1]; - } + __addToMemoryMatches: function (rightContext, leftContext, createdContext) { + var rightFactId = rightContext.hashCode, + rm = this.rightMemory[rightFactId], + lm, leftFactId = leftContext.hashCode; + if (rm) { + rm = rm.data; + if (leftFactId in rm.leftMatches) { + throw new Error("Duplicate left fact entry"); + } + rm.leftMatches[leftFactId] = createdContext; + } + lm = this.leftMemory[leftFactId]; + if (lm) { + lm = lm.data; + if (rightFactId in lm.rightMatches) { + throw new Error("Duplicate right fact entry"); + } + lm.rightMatches[rightFactId] = createdContext; + } + return createdContext; + }, - return tzl; + __addToRightMemory: function (context) { + var hashCode = context.hashCode, rm = this.rightMemory; + if (hashCode in rm) { + return false; + } + rm[hashCode] = this.rightTuples.push(context); + context.leftMatches = {}; + return true; + }, -}))); + __addToLeftMemory: function (context) { + var hashCode = context.hashCode, lm = this.leftMemory; + if (hashCode in lm) { + return false; + } + lm[hashCode] = this.leftTuples.push(context); + context.rightMatches = {}; + return true; + } + } + +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Central Atlas Tamazight Latin [tzm-latn] -//! author : Abdel Said : https://github.com/abdelsaid +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); - //! moment.js locale configuration +AlphaNode.extend({ + instance: { - var tzmLatn = moment.defineLocale('tzm-latn', { - months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( - '_' - ), - monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( - '_' - ), - weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'dadkh s yan %s', - past: 'yan %s', - s: 'imik', - ss: '%d imik', - m: 'minuḍ', - mm: '%d minuḍ', - h: 'saɛa', - hh: '%d tassaɛin', - d: 'ass', - dd: '%d ossan', - M: 'ayowr', - MM: '%d iyyirn', - y: 'asgas', - yy: '%d isgasn', + constructor: function () { + this.memory = {}; + this._super(arguments); + this.constraintAssert = this.constraint.assert; }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. + + assert: function (context) { + if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) { + this.__propagate("assert", context); + } }, - }); - return tzmLatn; + modify: function (context) { + var memory = this.memory, + hashCode = context.pathsHash, + wasMatch = memory[hashCode]; + if ((memory[hashCode] = this.constraintAssert(context.factHash))) { + this.__propagate(wasMatch ? "modify" : "assert", context); + } else if (wasMatch) { + this.__propagate("retract", context); + } + }, -}))); + retract: function (context) { + var hashCode = context.pathsHash, + memory = this.memory; + if (memory[hashCode]) { + this.__propagate("retract", context); + } + delete memory[hashCode]; + }, + toString: function () { + return "EqualityNode" + this.__count; + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js ***! - \****************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js": +/*!************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js ***! + \************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Central Atlas Tamazight [tzm] -//! author : Abdel Said : https://github.com/abdelsaid +/* module decorator */ module = __webpack_require__.nmd(module); +var FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + isDefined = extd.isDefined, + isArray = extd.isArray; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +FromNotNode.extend({ + instance: { - //! moment.js locale configuration + nodeType: "ExistsFromNode", - var tzm = moment.defineLocale('tzm', { - months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( - '_' - ), - monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( - '_' - ), - weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L', + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + if (ctx.blocked) { + this.__propagate("retract", ctx.clone()); + } + } }, - relativeTime: { - future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past: 'ⵢⴰⵏ %s', - s: 'ⵉⵎⵉⴽ', - ss: '%d ⵉⵎⵉⴽ', - m: 'ⵎⵉⵏⵓⴺ', - mm: '%d ⵎⵉⵏⵓⴺ', - h: 'ⵙⴰⵄⴰ', - hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d: 'ⴰⵙⵙ', - dd: '%d oⵙⵙⴰⵏ', - M: 'ⴰⵢoⵓⵔ', - MM: '%d ⵉⵢⵢⵉⵔⵏ', - y: 'ⴰⵙⴳⴰⵙ', - yy: '%d ⵉⵙⴳⴰⵙⵏ', + + __modify: function (context, leftContext) { + var leftContextBlocked = leftContext.blocked; + var fh = context.factHash, o = this.from(fh); + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + break; + } + } + } else if (isDefined(o)) { + context.blocked = this.__isMatch(context, o, true); + } + var newContextBlocked = context.blocked; + if (newContextBlocked) { + if (leftContextBlocked) { + this.__propagate("modify", context.clone()); + } else { + this.__propagate("assert", context.clone()); + } + } else if (leftContextBlocked) { + this.__propagate("retract", context.clone()); + } + }, - week: { - dow: 6, // Saturday is the first day of the week. - doy: 12, // The week that contains Jan 12th is the first week of the year. + + __findMatches: function (context) { + var fh = context.factHash, o = this.from(fh), isMatch = false; + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + this.__propagate("assert", context.clone()); + return; + } + } + } else if (isDefined(o) && (this.__isMatch(context, o, true))) { + context.blocked = true; + this.__propagate("assert", context.clone()); + } + return isMatch; }, - }); - return tzm; + __isMatch: function (oc, o, add) { + var ret = false; + if (this.type(o)) { + var createdFact = this.workingMemory.getFactHandle(o); + var context = new Context(createdFact, null, null) + .mergeMatch(oc.match) + .set(this.alias, o); + if (add) { + var fm = this.fromMemory[createdFact.id]; + if (!fm) { + fm = this.fromMemory[createdFact.id] = {}; + } + fm[oc.hashCode] = oc; + } + var fh = context.factHash; + var eqConstraints = this.__equalityConstraints; + for (var i = 0, l = eqConstraints.length; i < l; i++) { + if (eqConstraints[i](fh)) { + ret = true; + } else { + ret = false; + break; + } + } + } + return ret; + }, -}))); + assertLeft: function (context) { + this.__addToLeftMemory(context); + this.__findMatches(context); + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js language configuration -//! locale : Uyghur (China) [ug-cn] -//! author: boyaq : https://github.com/boyaq +/* module decorator */ module = __webpack_require__.nmd(module); +var NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js language configuration +NotNode.extend({ + instance: { - var ugCn = moment.defineLocale('ug-cn', { - months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( - '_' - ), - monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( - '_' - ), - weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split( - '_' - ), - weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), - weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', - LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - }, - meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - meridiem === 'يېرىم كېچە' || - meridiem === 'سەھەر' || - meridiem === 'چۈشتىن بۇرۇن' - ) { - return hour; - } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') { - return hour + 12; - } else { - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return 'يېرىم كېچە'; - } else if (hm < 900) { - return 'سەھەر'; - } else if (hm < 1130) { - return 'چۈشتىن بۇرۇن'; - } else if (hm < 1230) { - return 'چۈش'; - } else if (hm < 1800) { - return 'چۈشتىن كېيىن'; - } else { - return 'كەچ'; - } + nodeType: "ExistsNode", + + blockedContext: function (leftContext, rightContext) { + leftContext.blocker = rightContext; + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext)); + this.__propagate("assert", this.__cloneContext(leftContext)); }, - calendar: { - sameDay: '[بۈگۈن سائەت] LT', - nextDay: '[ئەتە سائەت] LT', - nextWeek: '[كېلەركى] dddd [سائەت] LT', - lastDay: '[تۆنۈگۈن] LT', - lastWeek: '[ئالدىنقى] dddd [سائەت] LT', - sameElse: 'L', + + notBlockedContext: function (leftContext, propagate) { + this.__addToLeftMemory(leftContext); + propagate && this.__propagate("retract", this.__cloneContext(leftContext)); }, - relativeTime: { - future: '%s كېيىن', - past: '%s بۇرۇن', - s: 'نەچچە سېكونت', - ss: '%d سېكونت', - m: 'بىر مىنۇت', - mm: '%d مىنۇت', - h: 'بىر سائەت', - hh: '%d سائەت', - d: 'بىر كۈن', - dd: '%d كۈن', - M: 'بىر ئاي', - MM: '%d ئاي', - y: 'بىر يىل', - yy: '%d يىل', + + propagateFromLeft: function (leftContext) { + this.notBlockedContext(leftContext, false); }, - dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '-كۈنى'; - case 'w': - case 'W': - return number + '-ھەپتە'; - default: - return number; + + retractLeft: function (context) { + var ctx; + if (!this.removeFromLeftMemory(context)) { + if ((ctx = this.removeFromLeftBlockedMemory(context))) { + this.__propagate("retract", this.__cloneContext(ctx.data)); + } else { + throw new Error(); + } } }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 1st is the first week of the year. - }, - }); + + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context), + leftContext, + thisConstraint = this.constraint, + rightTuples = this.rightTuples, + l = rightTuples.length, + isBlocked = false, + node, rc, blocker; + if (!ctx) { + //blocked before + ctx = this.removeFromLeftBlockedMemory(context); + isBlocked = true; + } + if (ctx) { + leftContext = ctx.data; - return ugCn; + if (leftContext && leftContext.blocker) { + //we were blocked before so only check nodes previous to our blocker + blocker = this.rightMemory[leftContext.blocker.hashCode]; + } + if (blocker) { + if (thisConstraint.isMatch(context, rc = blocker.data)) { + //propogate as a modify or assert + this.__propagate(!isBlocked ? "assert" : "modify", this.__cloneContext(leftContext)); + context.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context = null; + } + if (context) { + node = {next: blocker.next}; + } + } else { + node = {next: rightTuples.head}; + } + if (context && l) { + node = {next: rightTuples.head}; + //we were propagated before + while ((node = node.next)) { + if (thisConstraint.isMatch(context, rc = node.data)) { + //we cant be proagated so retract previous -}))); + //we were asserted before so retract + this.__propagate(!isBlocked ? "assert" : "modify", this.__cloneContext(leftContext)); + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context.blocker = rc; + context = null; + break; + } + } + } + if (context) { + //we can still be propogated + this.__addToLeftMemory(context); + if (isBlocked) { + //we were blocked so retract + this.__propagate("retract", this.__cloneContext(context)); + } -/***/ }), + } + } else { + throw new Error(); + } -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + }, -//! moment.js locale configuration -//! locale : Ukrainian [uk] -//! author : zemlanin : https://github.com/zemlanin -//! Author : Menelion Elensúle : https://github.com/Oire + modifyRight: function (context) { + var ctx = this.removeFromRightMemory(context); + if (ctx) { + var rightContext = ctx.data, + leftTuples = this.leftTuples, + leftTuplesLength = leftTuples.length, + leftContext, + thisConstraint = this.constraint, + node, + blocking = rightContext.blocking; + this.__addToRightMemory(context); + context.blocking = new LinkedList(); + if (leftTuplesLength || blocking.length) { + if (blocking.length) { + var rc; + //check old blocked contexts + //check if the same contexts blocked before are still blocked + var blockingNode = {next: blocking.head}; + while ((blockingNode = blockingNode.next)) { + leftContext = blockingNode.data; + leftContext.blocker = null; + if (thisConstraint.isMatch(leftContext, context)) { + leftContext.blocker = context; + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + this.__propagate("assert", this.__cloneContext(leftContext)); + leftContext = null; + } else { + //we arent blocked anymore + leftContext.blocker = null; + node = ctx; + while ((node = node.next)) { + if (thisConstraint.isMatch(leftContext, rc = node.data)) { + leftContext.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(leftContext)); + this.__propagate("assert", this.__cloneContext(leftContext)); + leftContext = null; + break; + } + } + if (leftContext) { + this.__addToLeftMemory(leftContext); + } + } + } + } -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + if (leftTuplesLength) { + //check currently left tuples in memory + node = {next: leftTuples.head}; + while ((node = node.next)) { + leftContext = node.data; + if (thisConstraint.isMatch(leftContext, context)) { + this.__propagate("assert", this.__cloneContext(leftContext)); + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + leftContext.blocker = context; + } + } + } + + + } + } else { + throw new Error(); + } - //! moment.js locale configuration - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 - ? forms[0] - : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', - mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', - hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', - dd: 'день_дні_днів', - MM: 'місяць_місяці_місяців', - yy: 'рік_роки_років', - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } else { - return number + ' ' + plural(format[key], +number); } } - function weekdaysCaseReplace(m, format) { - var weekdays = { - nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( - '_' - ), - accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( - '_' - ), - genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( - '_' - ), - }, - nounCase; +}).as(module); - if (m === true) { - return weekdays['nominative'] - .slice(1, 7) - .concat(weekdays['nominative'].slice(0, 1)); - } - if (!m) { - return weekdays['nominative']; - } +/***/ }), - nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) - ? 'accusative' - : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) - ? 'genitive' - : 'nominative'; - return weekdays[nounCase][m.day()]; - } - function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + EqualityConstraint = constraint.EqualityConstraint, + HashConstraint = constraint.HashConstraint, + ReferenceConstraint = constraint.ReferenceConstraint, + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + isDefined = extd.isDefined, + isEmpty = extd.isEmpty, + forEach = extd.forEach, + isArray = extd.isArray; + +var DEFAULT_MATCH = { + isMatch: function () { + return false; } +}; - var uk = moment.defineLocale('uk', { - months: { - format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( - '_' - ), - standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( - '_' - ), +JoinNode.extend({ + instance: { + + nodeType: "FromNode", + + constructor: function (pattern, wm) { + this._super(arguments); + this.workingMemory = wm; + this.fromMemory = {}; + this.pattern = pattern; + this.type = pattern.get("constraints")[0].assert; + this.alias = pattern.get("alias"); + this.from = pattern.from.assert; + var eqConstraints = this.__equalityConstraints = []; + var vars = []; + forEach(this.constraints = this.pattern.get("constraints").slice(1), function (c) { + if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) { + eqConstraints.push(c.assert); + } else if (c instanceof HashConstraint) { + vars = vars.concat(c.get("variables")); + } + }); + this.__variables = vars; }, - monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( - '_' - ), - weekdays: weekdaysCaseReplace, - weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D MMMM YYYY р.', - LLL: 'D MMMM YYYY р., HH:mm', - LLLL: 'dddd, D MMMM YYYY р., HH:mm', + + __createMatches: function (context) { + var fh = context.factHash, o = this.from(fh); + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + this.__checkMatch(context, o[i], true); + } + } else if (isDefined(o)) { + this.__checkMatch(context, o, true); + } }, - calendar: { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); + + __checkMatch: function (context, o, propogate) { + var newContext; + if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) { + this.__propagate("assert", newContext.clone()); + } + return newContext; + }, + + __createMatch: function (lc, o) { + if (this.type(o)) { + var createdFact = this.workingMemory.getFactHandle(o, true), + createdContext, + rc = new Context(createdFact, null, null) + .set(this.alias, o), + createdFactId = createdFact.id; + var fh = rc.factHash, lcFh = lc.factHash; + for (var key in lcFh) { + fh[key] = lcFh[key]; } - }, - sameElse: 'L', + var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length; + while (++i < l) { + if (!eqConstraints[i](fh, fh)) { + createdContext = DEFAULT_MATCH; + break; + } + } + var fm = this.fromMemory[createdFactId]; + if (!fm) { + fm = this.fromMemory[createdFactId] = {}; + } + if (!createdContext) { + var prop; + i = -1; + l = vars.length; + while (++i < l) { + prop = vars[i]; + fh[prop] = o[prop]; + } + lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match)); + } + fm[lc.hashCode] = [lc, createdContext]; + return createdContext; + } + return DEFAULT_MATCH; }, - relativeTime: { - future: 'за %s', - past: '%s тому', - s: 'декілька секунд', - ss: relativeTimeWithPlural, - m: relativeTimeWithPlural, - mm: relativeTimeWithPlural, - h: 'годину', - hh: relativeTimeWithPlural, - d: 'день', - dd: relativeTimeWithPlural, - M: 'місяць', - MM: relativeTimeWithPlural, - y: 'рік', - yy: relativeTimeWithPlural, + + retractRight: function () { + throw new Error("Shouldnt have gotten here"); }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); + + removeFromFromMemory: function (context) { + var factId = context.fact.id; + var fm = this.fromMemory[factId]; + if (fm) { + var entry; + for (var i in fm) { + entry = fm[i]; + if (entry[1] === context) { + delete fm[i]; + if (isEmpty(fm)) { + delete this.fromMemory[factId]; + } + break; + } + } + } + }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; + + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + var fromMatches = ctx.fromMatches; + for (var i in fromMatches) { + this.removeFromFromMemory(fromMatches[i]); + this.__propagate("retract", fromMatches[i].clone()); + } + } + }, + + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact; + if (ctx) { + this.__addToLeftMemory(context); + + var leftContext = ctx.data, + fromMatches = (context.fromMatches = {}), + rightMatches = leftContext.fromMatches, + o = this.from(context.factHash); + + if (isArray(o)) { + for (i = 0, l = o.length; i < l; i++) { + newContext = this.__checkMatch(context, o[i], false); + if (newContext.isMatch()) { + factId = newContext.fact.id; + if (factId in rightMatches) { + this.__propagate("modify", newContext.clone()); + } else { + this.__propagate("assert", newContext.clone()); + } + } + } + } else if (isDefined(o)) { + newContext = this.__checkMatch(context, o, false); + if (newContext.isMatch()) { + factId = newContext.fact.id; + if (factId in rightMatches) { + this.__propagate("modify", newContext.clone()); + } else { + this.__propagate("assert", newContext.clone()); + } + } + } + for (i in rightMatches) { + if (!(i in fromMatches)) { + this.removeFromFromMemory(rightMatches[i]); + this.__propagate("retract", rightMatches[i].clone()); + } + } } else { - return 'вечора'; + this.assertLeft(context); } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; + fact = context.fact; + factId = fact.id; + var fm = this.fromMemory[factId]; + this.fromMemory[factId] = {}; + if (fm) { + var lc, entry, cc, createdIsMatch, factObject = fact.object; + for (i in fm) { + entry = fm[i]; + lc = entry[0]; + cc = entry[1]; + createdIsMatch = cc.isMatch(); + if (lc.hashCode !== context.hashCode) { + newContext = this.__createMatch(lc, factObject, false); + if (createdIsMatch) { + this.__propagate("retract", cc.clone()); + } + if (newContext.isMatch()) { + this.__propagate(createdIsMatch ? "modify" : "assert", newContext.clone()); + } + + } + } } }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. - }, - }); - return uk; + assertLeft: function (context) { + this.__addToLeftMemory(context); + context.fromMatches = {}; + this.__createMatches(context); + }, -}))); + assertRight: function () { + throw new Error("Shouldnt have gotten here"); + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Urdu [ur] -//! author : Sawood Alam : https://github.com/ibnesayeed -//! author : Zack : https://github.com/ZackVision +/* module decorator */ module = __webpack_require__.nmd(module); +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + EqualityConstraint = constraint.EqualityConstraint, + HashConstraint = constraint.HashConstraint, + ReferenceConstraint = constraint.ReferenceConstraint, + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + isDefined = extd.isDefined, + forEach = extd.forEach, + isArray = extd.isArray; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +JoinNode.extend({ + instance: { - //! moment.js locale configuration + nodeType: "FromNotNode", - var months = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر', - ], - days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; + constructor: function (pattern, workingMemory) { + this._super(arguments); + this.workingMemory = workingMemory; + this.pattern = pattern; + this.type = pattern.get("constraints")[0].assert; + this.alias = pattern.get("alias"); + this.from = pattern.from.assert; + this.fromMemory = {}; + var eqConstraints = this.__equalityConstraints = []; + var vars = []; + forEach(this.constraints = this.pattern.get("constraints").slice(1), function (c) { + if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) { + eqConstraints.push(c.assert); + } else if (c instanceof HashConstraint) { + vars = vars.concat(c.get("variables")); + } + }); + this.__variables = vars; - var ur = moment.defineLocale('ur', { - months: months, - monthsShort: months, - weekdays: days, - weekdaysShort: days, - weekdaysMin: days, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd، D MMMM YYYY HH:mm', - }, - meridiemParse: /صبح|شام/, - isPM: function (input) { - return 'شام' === input; }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; + + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + if (!ctx.blocked) { + this.__propagate("retract", ctx.clone()); + } } - return 'شام'; }, - calendar: { - sameDay: '[آج بوقت] LT', - nextDay: '[کل بوقت] LT', - nextWeek: 'dddd [بوقت] LT', - lastDay: '[گذشتہ روز بوقت] LT', - lastWeek: '[گذشتہ] dddd [بوقت] LT', - sameElse: 'L', + + __modify: function (context, leftContext) { + var leftContextBlocked = leftContext.blocked; + var fh = context.factHash, o = this.from(fh); + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + break; + } + } + } else if (isDefined(o)) { + context.blocked = this.__isMatch(context, o, true); + } + var newContextBlocked = context.blocked; + if (!newContextBlocked) { + if (leftContextBlocked) { + this.__propagate("assert", context.clone()); + } else { + this.__propagate("modify", context.clone()); + } + } else if (!leftContextBlocked) { + this.__propagate("retract", leftContext.clone()); + } + }, - relativeTime: { - future: '%s بعد', - past: '%s قبل', - s: 'چند سیکنڈ', - ss: '%d سیکنڈ', - m: 'ایک منٹ', - mm: '%d منٹ', - h: 'ایک گھنٹہ', - hh: '%d گھنٹے', - d: 'ایک دن', - dd: '%d دن', - M: 'ایک ماہ', - MM: '%d ماہ', - y: 'ایک سال', - yy: '%d سال', + + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + this.__addToLeftMemory(context); + this.__modify(context, ctx.data); + } else { + throw new Error(); + } + var fm = this.fromMemory[context.fact.id]; + this.fromMemory[context.fact.id] = {}; + if (fm) { + for (var i in fm) { + // update any contexts associated with this fact + if (i !== context.hashCode) { + var lc = fm[i]; + ctx = this.removeFromLeftMemory(lc); + if (ctx) { + lc = lc.clone(); + lc.blocked = false; + this.__addToLeftMemory(lc); + this.__modify(lc, ctx.data); + } + } + } + } }, - preparse: function (string) { - return string.replace(/،/g, ','); + + __findMatches: function (context) { + var fh = context.factHash, o = this.from(fh), isMatch = false; + if (isArray(o)) { + for (var i = 0, l = o.length; i < l; i++) { + if (this.__isMatch(context, o[i], true)) { + context.blocked = true; + return; + } + } + this.__propagate("assert", context.clone()); + } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) { + this.__propagate("assert", context.clone()); + } + return isMatch; }, - postformat: function (string) { - return string.replace(/,/g, '،'); + + __isMatch: function (oc, o, add) { + var ret = false; + if (this.type(o)) { + var createdFact = this.workingMemory.getFactHandle(o); + var context = new Context(createdFact, null) + .mergeMatch(oc.match) + .set(this.alias, o); + if (add) { + var fm = this.fromMemory[createdFact.id]; + if (!fm) { + fm = this.fromMemory[createdFact.id] = {}; + } + fm[oc.hashCode] = oc; + } + var fh = context.factHash; + var eqConstraints = this.__equalityConstraints; + for (var i = 0, l = eqConstraints.length; i < l; i++) { + if (eqConstraints[i](fh, fh)) { + ret = true; + } else { + ret = false; + break; + } + } + } + return ret; }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + assertLeft: function (context) { + this.__addToLeftMemory(context); + this.__findMatches(context); }, - }); - return ur; + assertRight: function () { + throw new Error("Shouldnt have gotten here"); + }, -}))); + retractRight: function () { + throw new Error("Shouldnt have gotten here"); + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js ***! - \********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Uzbek Latin [uz-latn] -//! author : Rasulbek Mirzayev : github.com/Rasulbeeek +"use strict"; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + some = extd.some, + declare = extd.declare, + pattern = __webpack_require__(/*! ../pattern.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + ObjectPattern = pattern.ObjectPattern, + FromPattern = pattern.FromPattern, + FromNotPattern = pattern.FromNotPattern, + ExistsPattern = pattern.ExistsPattern, + FromExistsPattern = pattern.FromExistsPattern, + NotPattern = pattern.NotPattern, + CompositePattern = pattern.CompositePattern, + InitialFactPattern = pattern.InitialFactPattern, + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + HashConstraint = constraints.HashConstraint, + ReferenceConstraint = constraints.ReferenceConstraint, + AliasNode = __webpack_require__(/*! ./aliasNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js"), + EqualityNode = __webpack_require__(/*! ./equalityNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js"), + JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + FromNode = __webpack_require__(/*! ./fromNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js"), + FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + ExistsNode = __webpack_require__(/*! ./existsNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js"), + ExistsFromNode = __webpack_require__(/*! ./existsFromNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js"), + LeftAdapterNode = __webpack_require__(/*! ./leftAdapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js"), + RightAdapterNode = __webpack_require__(/*! ./rightAdapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js"), + TypeNode = __webpack_require__(/*! ./typeNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js"), + TerminalNode = __webpack_require__(/*! ./terminalNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js"), + PropertyNode = __webpack_require__(/*! ./propertyNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js"); - //! moment.js locale configuration +function hasRefernceConstraints(pattern) { + return some(pattern.constraints || [], function (c) { + return c instanceof ReferenceConstraint; + }); +} - var uzLatn = moment.defineLocale('uz-latn', { - months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( - '_' - ), - monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), - weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( - '_' - ), - weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), - weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'D MMMM YYYY, dddd HH:mm', - }, - calendar: { - sameDay: '[Bugun soat] LT [da]', - nextDay: '[Ertaga] LT [da]', - nextWeek: 'dddd [kuni soat] LT [da]', - lastDay: '[Kecha soat] LT [da]', - lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", - sameElse: 'L', +declare({ + instance: { + constructor: function (wm, agendaTree) { + this.terminalNodes = []; + this.joinNodes = []; + this.nodes = []; + this.constraints = []; + this.typeNodes = []; + this.__ruleCount = 0; + this.bucket = { + counter: 0, + recency: 0 + }; + this.agendaTree = agendaTree; + this.workingMemory = wm; }, - relativeTime: { - future: 'Yaqin %s ichida', - past: 'Bir necha %s oldin', - s: 'soniya', - ss: '%d soniya', - m: 'bir daqiqa', - mm: '%d daqiqa', - h: 'bir soat', - hh: '%d soat', - d: 'bir kun', - dd: '%d kun', - M: 'bir oy', - MM: '%d oy', - y: 'bir yil', - yy: '%d yil', + + assertRule: function (rule) { + var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree); + this.__addToNetwork(rule, rule.pattern, terminalNode); + this.__mergeJoinNodes(); + this.terminalNodes.push(terminalNode); }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 7th is the first week of the year. + + resetCounter: function () { + this.bucket.counter = 0; }, - }); - return uzLatn; + incrementCounter: function () { + this.bucket.counter++; + }, -}))); + assertFact: function (fact) { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].assert(fact); + } + }, + retractFact: function (fact) { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].retract(fact); + } + }, -/***/ }), + modifyFact: function (fact) { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].modify(fact); + } + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Uzbek [uz] -//! author : Sardor Muminov : https://github.com/muminoff + containsRule: function (name) { + return some(this.terminalNodes, function (n) { + return n.rule.name === name; + }); + }, -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + dispose: function () { + var typeNodes = this.typeNodes, i = typeNodes.length - 1; + for (; i >= 0; i--) { + typeNodes[i].dispose(); + } + }, - //! moment.js locale configuration + __mergeJoinNodes: function () { + var joinNodes = this.joinNodes; + for (var i = 0; i < joinNodes.length; i++) { + var j1 = joinNodes[i], j2 = joinNodes[i + 1]; + if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) { + j1.merge(j2); + joinNodes.splice(i + 1, 1); + } + } + }, - var uz = moment.defineLocale('uz', { - months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( - '_' - ), - monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'D MMMM YYYY, dddd HH:mm', + __checkEqual: function (node) { + var constraints = this.constraints, i = constraints.length - 1; + for (; i >= 0; i--) { + var n = constraints[i]; + if (node.equal(n)) { + return n; + } + } + constraints.push(node); + return node; }, - calendar: { - sameDay: '[Бугун соат] LT [да]', - nextDay: '[Эртага] LT [да]', - nextWeek: 'dddd [куни соат] LT [да]', - lastDay: '[Кеча соат] LT [да]', - lastWeek: '[Утган] dddd [куни соат] LT [да]', - sameElse: 'L', + + __createTypeNode: function (rule, pattern) { + var ret = new TypeNode(pattern.get("constraints")[0]); + var constraints = this.typeNodes, i = constraints.length - 1; + for (; i >= 0; i--) { + var n = constraints[i]; + if (ret.equal(n)) { + return n; + } + } + constraints.push(ret); + return ret; }, - relativeTime: { - future: 'Якин %s ичида', - past: 'Бир неча %s олдин', - s: 'фурсат', - ss: '%d фурсат', - m: 'бир дакика', - mm: '%d дакика', - h: 'бир соат', - hh: '%d соат', - d: 'бир кун', - dd: '%d кун', - M: 'бир ой', - MM: '%d ой', - y: 'бир йил', - yy: '%d йил', + + __createEqualityNode: function (rule, constraint) { + return this.__checkEqual(new EqualityNode(constraint)).addRule(rule); }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 7, // The week that contains Jan 4th is the first week of the year. + + __createPropertyNode: function (rule, constraint) { + return this.__checkEqual(new PropertyNode(constraint)).addRule(rule); }, - }); - return uz; + __createAliasNode: function (rule, pattern) { + return this.__checkEqual(new AliasNode(pattern)).addRule(rule); + }, -}))); + __createAdapterNode: function (rule, side) { + return (side === "left" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule); + }, + __createJoinNode: function (rule, pattern, outNode, side) { + var joinNode; + if (pattern.rightPattern instanceof NotPattern) { + joinNode = new NotNode(); + } else if (pattern.rightPattern instanceof FromExistsPattern) { + joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory); + } else if (pattern.rightPattern instanceof ExistsPattern) { + joinNode = new ExistsNode(); + } else if (pattern.rightPattern instanceof FromNotPattern) { + joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory); + } else if (pattern.rightPattern instanceof FromPattern) { + joinNode = new FromNode(pattern.rightPattern, this.workingMemory); + } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) { + joinNode = new BetaNode(); + this.joinNodes.push(joinNode); + } else { + joinNode = new JoinNode(); + this.joinNodes.push(joinNode); + } + joinNode["__rule__"] = rule; + var parentNode = joinNode; + if (outNode instanceof BetaNode) { + var adapterNode = this.__createAdapterNode(rule, side); + parentNode.addOutNode(adapterNode, pattern); + parentNode = adapterNode; + } + parentNode.addOutNode(outNode, pattern); + return joinNode.addRule(rule); + }, -/***/ }), + __addToNetwork: function (rule, pattern, outNode, side) { + if (pattern instanceof ObjectPattern) { + if (!(pattern instanceof InitialFactPattern) && (!side || side === "left")) { + this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side); + } else { + this.__createAlphaNode(rule, pattern, outNode, side); + } + } else if (pattern instanceof CompositePattern) { + this.__createBetaNode(rule, pattern, outNode, side); + } + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + __createBetaNode: function (rule, pattern, outNode, side) { + var joinNode = this.__createJoinNode(rule, pattern, outNode, side); + this.__addToNetwork(rule, pattern.rightPattern, joinNode, "right"); + this.__addToNetwork(rule, pattern.leftPattern, joinNode, "left"); + outNode.addParentNode(joinNode); + return joinNode; + }, -//! moment.js locale configuration -//! locale : Vietnamese [vi] -//! author : Bang Nguyen : https://github.com/bangnk -//! author : Chien Kira : https://github.com/chienkira -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + __createAlphaNode: function (rule, pattern, outNode, side) { + var typeNode, parentNode; + if (!(pattern instanceof FromPattern)) { - //! moment.js locale configuration + var constraints = pattern.get("constraints"); + typeNode = this.__createTypeNode(rule, pattern); + var aliasNode = this.__createAliasNode(rule, pattern); + typeNode.addOutNode(aliasNode, pattern); + aliasNode.addParentNode(typeNode); + parentNode = aliasNode; + var i = constraints.length - 1; + for (; i > 0; i--) { + var constraint = constraints[i], node; + if (constraint instanceof HashConstraint) { + node = this.__createPropertyNode(rule, constraint); + } else if (constraint instanceof ReferenceConstraint) { + outNode.constraint.addConstraint(constraint); + continue; + } else { + node = this.__createEqualityNode(rule, constraint); + } + parentNode.addOutNode(node, pattern); + node.addParentNode(parentNode); + parentNode = node; + } - var vi = moment.defineLocale('vi', { - months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( - '_' - ), - monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( - '_' - ), - weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysParseExact: true, - meridiemParse: /sa|ch/i, - isPM: function (input) { - return /^ch$/i.test(input); - }, - meridiem: function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'sa' : 'SA'; - } else { - return isLower ? 'ch' : 'CH'; + if (outNode instanceof BetaNode) { + var adapterNode = this.__createAdapterNode(rule, side); + adapterNode.addParentNode(parentNode); + parentNode.addOutNode(adapterNode, pattern); + parentNode = adapterNode; + } + outNode.addParentNode(parentNode); + parentNode.addOutNode(outNode, pattern); + return typeNode; } }, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM [năm] YYYY', - LLL: 'D MMMM [năm] YYYY HH:mm', - LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', - l: 'DD/M/YYYY', - ll: 'D MMM YYYY', - lll: 'D MMM YYYY HH:mm', - llll: 'ddd, D MMM YYYY HH:mm', - }, - calendar: { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần trước lúc] LT', - sameElse: 'L', - }, - relativeTime: { - future: '%s tới', - past: '%s trước', - s: 'vài giây', - ss: '%d giây', - m: 'một phút', - mm: '%d phút', - h: 'một giờ', - hh: '%d giờ', - d: 'một ngày', - dd: '%d ngày', - M: 'một tháng', - MM: '%d tháng', - y: 'một năm', - yy: '%d năm', - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal: function (number) { - return number; - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. - }, - }); - return vi; + print: function () { + forEach(this.terminalNodes, function (t) { + t.print(" "); + }); + } + } +}).as(exports, "RootNode"); -}))); -/***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js ***! - \*********************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { -//! moment.js locale configuration -//! locale : Pseudo [x-pseudo] -//! author : Andrew Hood : https://github.com/andrewhood125 -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +/***/ }), - var xPseudo = moment.defineLocale('x-pseudo', { - months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split( - '_' - ), - monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( - '_' - ), - monthsParseExact: true, - weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( - '_' - ), - weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), - weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm', - }, - calendar: { - sameDay: '[T~ódá~ý át] LT', - nextDay: '[T~ómó~rró~w át] LT', - nextWeek: 'dddd [át] LT', - lastDay: '[Ý~ést~érdá~ý át] LT', - lastWeek: '[L~ást] dddd [át] LT', - sameElse: 'L', - }, - relativeTime: { - future: 'í~ñ %s', - past: '%s á~gó', - s: 'á ~féw ~sécó~ñds', - ss: '%d s~écóñ~ds', - m: 'á ~míñ~úté', - mm: '%d m~íñú~tés', - h: 'á~ñ hó~úr', - hh: '%d h~óúrs', - d: 'á ~dáý', - dd: '%d d~áýs', - M: 'á ~móñ~th', - MM: '%d m~óñt~hs', - y: 'á ~ýéár', - yy: '%d ý~éárs', +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* module decorator */ module = __webpack_require__.nmd(module); +var BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + JoinReferenceNode = __webpack_require__(/*! ./joinReferenceNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js"); + +BetaNode.extend({ + + instance: { + constructor: function () { + this._super(arguments); + this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples); }, - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal: function (number) { - var b = number % 10, - output = - ~~((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; + + nodeType: "JoinNode", + + propagateFromLeft: function (context, rm) { + var mr; + if ((mr = this.constraint.match(context, rm)).isMatch) { + this.__propagate("assert", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr))); + } + return this; }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + propagateFromRight: function (context, lm) { + var mr; + if ((mr = this.constraint.match(lm, context)).isMatch) { + this.__propagate("assert", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr))); + } + return this; }, - }); - return xPseudo; + propagateAssertModifyFromLeft: function (context, rightMatches, rm) { + var factId = rm.hashCode, mr; + if (factId in rightMatches) { + mr = this.constraint.match(context, rm); + var mrIsMatch = mr.isMatch; + if (!mrIsMatch) { + this.__propagate("retract", rightMatches[factId].clone()); + } else { + this.__propagate("modify", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr))); + } + } else { + this.propagateFromLeft(context, rm); + } + }, -}))); + propagateAssertModifyFromRight: function (context, leftMatches, lm) { + var factId = lm.hashCode, mr; + if (factId in leftMatches) { + mr = this.constraint.match(lm, context); + var mrIsMatch = mr.isMatch; + if (!mrIsMatch) { + this.__propagate("retract", leftMatches[factId].clone()); + } else { + this.__propagate("modify", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr))); + } + } else { + this.propagateFromRight(context, lm); + } + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js ***! - \***************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js": +/*!***************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js ***! + \***************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Yoruba Nigeria [yo] -//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint; -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +var DEFUALT_CONSTRAINT = { + isDefault: true, + assert: function () { + return true; + }, - //! moment.js locale configuration + equal: function () { + return false; + } +}; - var yo = moment.defineLocale('yo', { - months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( - '_' - ), - monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), - weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), - weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), - weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), - longDateFormat: { - LT: 'h:mm A', - LTS: 'h:mm:ss A', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY h:mm A', - LLLL: 'dddd, D MMMM YYYY h:mm A', +var inversions = { + "gt": "lte", + "gte": "lte", + "lt": "gte", + "lte": "gte", + "eq": "eq", + "neq": "neq" +}; + +function normalizeRightIndexConstraint(rightIndex, indexes, op) { + if (rightIndex === indexes[1]) { + op = inversions[op]; + } + return op; +} + +function normalizeLeftIndexConstraint(leftIndex, indexes, op) { + if (leftIndex === indexes[1]) { + op = inversions[op]; + } + return op; +} + +Node.extend({ + + instance: { + + constraint: DEFUALT_CONSTRAINT, + + constructor: function (leftMemory, rightMemory) { + this._super(arguments); + this.constraint = DEFUALT_CONSTRAINT; + this.constraintAssert = DEFUALT_CONSTRAINT.assert; + this.rightIndexes = []; + this.leftIndexes = []; + this.constraintLength = 0; + this.leftMemory = leftMemory; + this.rightMemory = rightMemory; }, - calendar: { - sameDay: '[Ònì ni] LT', - nextDay: '[Ọ̀la ni] LT', - nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", - lastDay: '[Àna ni] LT', - lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - sameElse: 'L', + + addConstraint: function (constraint) { + if (constraint instanceof ReferenceEqualityConstraint) { + var identifiers = constraint.getIndexableProperties(); + var alias = constraint.get("alias"); + if (identifiers.length === 2 && alias) { + var leftIndex, rightIndex, i = -1, indexes = []; + while (++i < 2) { + var index = identifiers[i]; + if (index.match(new RegExp("^" + alias + "(\\.?)")) === null) { + indexes.push(index); + leftIndex = index; + } else { + indexes.push(index); + rightIndex = index; + } + } + if (leftIndex && rightIndex) { + var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op), + rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op); + this.rightMemory.addIndex(rightIndex, leftIndex, rightOp); + this.leftMemory.addIndex(leftIndex, rightIndex, leftOp); + } + } + } + if (this.constraint.isDefault) { + this.constraint = constraint; + this.isDefault = false; + } else { + this.constraint = this.constraint.merge(constraint); + } + this.constraintAssert = this.constraint.assert; + }, - relativeTime: { - future: 'ní %s', - past: '%s kọjá', - s: 'ìsẹjú aayá die', - ss: 'aayá %d', - m: 'ìsẹjú kan', - mm: 'ìsẹjú %d', - h: 'wákati kan', - hh: 'wákati %d', - d: 'ọjọ́ kan', - dd: 'ọjọ́ %d', - M: 'osù kan', - MM: 'osù %d', - y: 'ọdún kan', - yy: 'ọdún %d', + + equal: function (constraint) { + return this.constraint.equal(constraint.constraint); }, - dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, - ordinal: 'ọjọ́ %d', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + isMatch: function (lc, rc) { + return this.constraintAssert(lc.factHash, rc.factHash); }, - }); - return yo; + match: function (lc, rc) { + var ret = {isMatch: false}; + if (this.constraintAssert(lc.factHash, rc.factHash)) { + ret = lc.match.merge(rc.match); + } + return ret; + } -}))); + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Chinese (China) [zh-cn] -//! author : suupic : https://github.com/suupic -//! author : Zeno Zeng : https://github.com/zenozeng -//! author : uu109 : https://github.com/uu109 - -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //! moment.js locale configuration +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); - var zhCn = moment.defineLocale('zh-cn', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日Ah点mm分', - LLLL: 'YYYY年M月D日ddddAh点mm分', - l: 'YYYY/M/D', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } +Node.extend({ + instance: { + propagateAssert: function (context) { + this.__propagate("assertLeft", context); }, - calendar: { - sameDay: '[今天]LT', - nextDay: '[明天]LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - return '[下]dddLT'; - } else { - return '[本]dddLT'; - } - }, - lastDay: '[昨天]LT', - lastWeek: function (now) { - if (this.week() !== now.week()) { - return '[上]dddLT'; - } else { - return '[本]dddLT'; - } - }, - sameElse: 'L', + + propagateRetract: function (context) { + this.__propagate("retractLeft", context); }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } + + propagateResolve: function (context) { + this.__propagate("retractResolve", context); }, - relativeTime: { - future: '%s后', - past: '%s前', - s: '几秒', - ss: '%d 秒', - m: '1 分钟', - mm: '%d 分钟', - h: '1 小时', - hh: '%d 小时', - d: '1 天', - dd: '%d 天', - M: '1 个月', - MM: '%d 个月', - y: '1 年', - yy: '%d 年', + + propagateModify: function (context) { + this.__propagate("modifyLeft", context); }, - week: { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow: 1, // Monday is the first day of the week. - doy: 4, // The week that contains Jan 4th is the first week of the year. + + retractResolve: function (match) { + this.__propagate("retractResolve", match); }, - }); - return zhCn; + dispose: function (context) { + this.propagateDispose(context); + }, -}))); + toString: function () { + return "LeftAdapterNode " + this.__count; + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js ***! + \**********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { -//! moment.js locale configuration -//! locale : Chinese (Hong Kong) [zh-hk] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris -//! author : Konstantin : https://github.com/skfd -//! author : Anthony : https://github.com/anthonylau +exports.getMemory = (function () { -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; + var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0; - //! moment.js locale configuration + function mergePossibleTuples(ret, a, l) { + var val, j = 0, i = -1; + if (PL < l) { + while (PL && ++i < l) { + if (POSSIBLES_HASH[(val = a[i]).hashCode]) { + ret[j++] = val; + PL--; + } + } + } else { + pPush.apply(ret, a); + } + PL = 0; + POSSIBLES_HASH = {}; + } - var zhHk = moment.defineLocale('zh-hk', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日dddd HH:mm', - l: 'YYYY/M/D', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; + + function mergeNotPossibleTuples(ret, a, l) { + var val, j = 0, i = -1; + if (NPL < l) { + while (++i < l) { + if (!NPL) { + ret[j++] = a[i]; + } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) { + ret[j++] = val; + } else { + NPL--; + } } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; + } + NPL = 0; + NOT_POSSIBLES_HASH = {}; + } + + function mergeBothTuples(ret, a, l) { + if (PL === l) { + mergeNotPossibles(ret, a, l); + } else if (NPL < l) { + var val, j = 0, i = -1, hashCode; + while (++i < l) { + if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) { + ret[j++] = val; + } } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1200) { - return '上午'; - } else if (hm === 1200) { - return '中午'; - } else if (hm < 1800) { - return '下午'; + } + NPL = 0; + NOT_POSSIBLES_HASH = {}; + PL = 0; + POSSIBLES_HASH = {}; + } + + function mergePossiblesAndNotPossibles(a, l) { + var ret = EMPTY_ARRAY; + if (l) { + if (NPL || PL) { + ret = []; + if (!NPL) { + mergePossibleTuples(ret, a, l); + } else if (!PL) { + mergeNotPossibleTuples(ret, a, l); + } else { + mergeBothTuples(ret, a, l); + } } else { - return '晚上'; - } - }, - calendar: { - sameDay: '[今天]LT', - nextDay: '[明天]LT', - nextWeek: '[下]ddddLT', - lastDay: '[昨天]LT', - lastWeek: '[上]ddddLT', - sameElse: 'L', - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '週'; - default: - return number; + ret = a; } - }, - relativeTime: { - future: '%s後', - past: '%s前', - s: '幾秒', - ss: '%d 秒', - m: '1 分鐘', - mm: '%d 分鐘', - h: '1 小時', - hh: '%d 小時', - d: '1 天', - dd: '%d 天', - M: '1 個月', - MM: '%d 個月', - y: '1 年', - yy: '%d 年', - }, - }); - - return zhHk; + } + return ret; + } -}))); + function getRangeTuples(op, currEntry, val) { + var ret; + if (op === "gt") { + ret = currEntry.findGT(val); + } else if (op === "gte") { + ret = currEntry.findGTE(val); + } else if (op === "lt") { + ret = currEntry.findLT(val); + } else if (op === "lte") { + ret = currEntry.findLTE(val); + } + return ret; + } + function mergeNotPossibles(tuples, tl) { + if (tl) { + var j = -1, hashCode; + while (++j < tl) { + hashCode = tuples[j].hashCode; + if (!NOT_POSSIBLES_HASH[hashCode]) { + NOT_POSSIBLES_HASH[hashCode] = true; + NPL++; + } + } + } + } -/***/ }), + function mergePossibles(tuples, tl) { + if (tl) { + var j = -1, hashCode; + while (++j < tl) { + hashCode = tuples[j].hashCode; + if (!POSSIBLES_HASH[hashCode]) { + POSSIBLES_HASH[hashCode] = true; + PL++; + } + } + } + } -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + return function _getMemory(entry, factHash, indexes) { + var i = -1, l = indexes.length, + ret = entry.tuples, + rl = ret.length, + intersected = false, + tables = entry.tables, + index, val, op, nextEntry, currEntry, tuples, tl; + while (++i < l && rl) { + index = indexes[i]; + val = index[3](factHash); + op = index[4]; + currEntry = tables[index[0]]; + if (op === "eq" || op === "seq") { + if ((nextEntry = currEntry.get(val))) { + rl = (ret = (entry = nextEntry).tuples).length; + tables = nextEntry.tables; + } else { + rl = (ret = EMPTY_ARRAY).length; + } + } else if (op === "neq" || op === "sneq") { + if ((nextEntry = currEntry.get(val))) { + tl = (tuples = nextEntry.tuples).length; + mergeNotPossibles(tuples, tl); + } + } else if (!intersected) { + rl = (ret = getRangeTuples(op, currEntry, val)).length; + intersected = true; + } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) { + mergePossibles(tuples, tl); + } else { + ret = tuples; + rl = tl; + } + } + return mergePossiblesAndNotPossibles(ret, rl); + }; +}()); -//! moment.js locale configuration -//! locale : Chinese (Macau) [zh-mo] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris -//! author : Tan Yuanhong : https://github.com/le0tan +/***/ }), -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - //! moment.js locale configuration +/* module decorator */ module = __webpack_require__.nmd(module); +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); - var zhMo = moment.defineLocale('zh-mo', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日dddd HH:mm', - l: 'D/M/YYYY', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar: { - sameDay: '[今天] LT', - nextDay: '[明天] LT', - nextWeek: '[下]dddd LT', - lastDay: '[昨天] LT', - lastWeek: '[上]dddd LT', - sameElse: 'L', - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '週'; - default: - return number; - } - }, - relativeTime: { - future: '%s內', - past: '%s前', - s: '幾秒', - ss: '%d 秒', - m: '1 分鐘', - mm: '%d 分鐘', - h: '1 小時', - hh: '%d 小時', - d: '1 天', - dd: '%d 天', - M: '1 個月', - MM: '%d 個月', - y: '1 年', - yy: '%d 年', - }, - }); +Memory.extend({ - return zhMo; + instance: { -}))); + getLeftMemory: function (tuple) { + return this.getMemory(tuple); + } + } +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js ***! - \******************************************************************************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -//! moment.js locale configuration -//! locale : Chinese (Taiwan) [zh-tw] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + plucker = extd.plucker, + declare = extd.declare, + getMemory = __webpack_require__(/*! ./helpers */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js").getMemory, + Table = __webpack_require__(/*! ./table */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js"), + TupleEntry = __webpack_require__(/*! ./tupleEntry */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js"); -;(function (global, factory) { - true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js")) : - 0 -}(this, (function (moment) { 'use strict'; - //! moment.js locale configuration +var id = 0; +declare({ - var zhTw = moment.defineLocale('zh-tw', { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( - '_' - ), - monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( - '_' - ), - weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin: '日_一_二_三_四_五_六'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY/MM/DD', - LL: 'YYYY年M月D日', - LLL: 'YYYY年M月D日 HH:mm', - LLLL: 'YYYY年M月D日dddd HH:mm', - l: 'YYYY/M/D', - ll: 'YYYY年M月D日', - lll: 'YYYY年M月D日 HH:mm', - llll: 'YYYY年M月D日dddd HH:mm', + instance: { + length: 0, + + constructor: function () { + this.head = null; + this.tail = null; + this.indexes = []; + this.tables = new TupleEntry(null, new Table(), false); }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; + + push: function (data) { + var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null}; + if (tail) { + this.tail.next = node; } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; + this.tail = node; + if (!head) { + this.head = node; } + this.length++; + this.__index(node); + this.tables.addNode(node); + return node; }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; + + remove: function (node) { + if (node.prev) { + node.prev.next = node.next; } else { - return '晚上'; + this.head = node.next; } + if (node.next) { + node.next.prev = node.prev; + } else { + this.tail = node.prev; + } + this.tables.removeNode(node); + this.__removeFromIndex(node); + this.length--; }, - calendar: { - sameDay: '[今天] LT', - nextDay: '[明天] LT', - nextWeek: '[下]dddd LT', - lastDay: '[昨天] LT', - lastWeek: '[上]dddd LT', - sameElse: 'L', - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '週'; - default: - return number; + + forEach: function (cb) { + var head = {next: this.head}; + while ((head = head.next)) { + cb(head.data); } }, - relativeTime: { - future: '%s後', - past: '%s前', - s: '幾秒', - ss: '%d 秒', - m: '1 分鐘', - mm: '%d 分鐘', - h: '1 小時', - hh: '%d 小時', - d: '1 天', - dd: '%d 天', - M: '1 個月', - MM: '%d 個月', - y: '1 年', - yy: '%d 年', + + toArray: function () { + return this.tables.tuples.slice(); }, - }); - return zhTw; + clear: function () { + this.head = this.tail = null; + this.length = 0; + this.clearIndexes(); + }, -}))); + clearIndexes: function () { + this.tables = {}; + this.indexes.length = 0; + }, + __index: function (node) { + var data = node.data, + factHash = data.factHash, + indexes = this.indexes, + entry = this.tables, + i = -1, l = indexes.length, + tuples, index, val, path, tables, currEntry, prevLookup; + while (++i < l) { + index = indexes[i]; + val = index[2](factHash); + path = index[0]; + tables = entry.tables; + if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) { + tuples = new TupleEntry(val, currEntry, true); + currEntry.set(val, tuples); + } + if (currEntry !== prevLookup) { + node.tuples.push(tuples.addNode(node)); + } + prevLookup = currEntry; + if (index[4] === "eq") { + entry = tuples; + } + } + }, -/***/ }), + __removeFromIndex: function (node) { + var tuples = node.tuples, i = tuples.length; + while (--i >= 0) { + tuples[i].removeNode(node); + } + node.tuples.length = 0; + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$": -/*!************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ sync ^\.\/.*$ ***! - \************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + getMemory: function (tuple) { + var ret; + if (!this.length) { + ret = []; + } else { + ret = getMemory(this.tables, tuple.factHash, this.indexes); + } + return ret; + }, -var map = { - "./af": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js", - "./af.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js", - "./ar": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js", - "./ar-dz": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js", - "./ar-dz.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js", - "./ar-kw": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js", - "./ar-kw.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js", - "./ar-ly": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js", - "./ar-ly.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js", - "./ar-ma": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js", - "./ar-ma.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js", - "./ar-sa": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js", - "./ar-sa.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js", - "./ar-tn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js", - "./ar-tn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js", - "./ar.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js", - "./az": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js", - "./az.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js", - "./be": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js", - "./be.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js", - "./bg": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js", - "./bg.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js", - "./bm": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js", - "./bm.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js", - "./bn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js", - "./bn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js", - "./bo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js", - "./bo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js", - "./br": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js", - "./br.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js", - "./bs": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js", - "./bs.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js", - "./ca": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js", - "./ca.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js", - "./cs": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js", - "./cs.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js", - "./cv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js", - "./cv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js", - "./cy": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js", - "./cy.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js", - "./da": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js", - "./da.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js", - "./de": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js", - "./de-at": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js", - "./de-at.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js", - "./de-ch": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js", - "./de-ch.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js", - "./de.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js", - "./dv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js", - "./dv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js", - "./el": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js", - "./el.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js", - "./en-au": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js", - "./en-au.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js", - "./en-ca": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js", - "./en-ca.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js", - "./en-gb": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js", - "./en-gb.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js", - "./en-ie": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js", - "./en-ie.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js", - "./en-il": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js", - "./en-il.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js", - "./en-in": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js", - "./en-in.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js", - "./en-nz": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js", - "./en-nz.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js", - "./en-sg": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js", - "./en-sg.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js", - "./eo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js", - "./eo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js", - "./es": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js", - "./es-do": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js", - "./es-do.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js", - "./es-us": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js", - "./es-us.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js", - "./es.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js", - "./et": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js", - "./et.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js", - "./eu": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js", - "./eu.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js", - "./fa": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js", - "./fa.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js", - "./fi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js", - "./fi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js", - "./fil": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js", - "./fil.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js", - "./fo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js", - "./fo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js", - "./fr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js", - "./fr-ca": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js", - "./fr-ca.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js", - "./fr-ch": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js", - "./fr-ch.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js", - "./fr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js", - "./fy": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js", - "./fy.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js", - "./ga": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js", - "./ga.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js", - "./gd": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js", - "./gd.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js", - "./gl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js", - "./gl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js", - "./gom-deva": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js", - "./gom-deva.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js", - "./gom-latn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js", - "./gom-latn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js", - "./gu": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js", - "./gu.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js", - "./he": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js", - "./he.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js", - "./hi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js", - "./hi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js", - "./hr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js", - "./hr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js", - "./hu": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js", - "./hu.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js", - "./hy-am": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js", - "./hy-am.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js", - "./id": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js", - "./id.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js", - "./is": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js", - "./is.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js", - "./it": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js", - "./it-ch": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js", - "./it-ch.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js", - "./it.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js", - "./ja": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js", - "./ja.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js", - "./jv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js", - "./jv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js", - "./ka": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js", - "./ka.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js", - "./kk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js", - "./kk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js", - "./km": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js", - "./km.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js", - "./kn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js", - "./kn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js", - "./ko": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js", - "./ko.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js", - "./ku": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js", - "./ku.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js", - "./ky": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js", - "./ky.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js", - "./lb": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js", - "./lb.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js", - "./lo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js", - "./lo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js", - "./lt": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js", - "./lt.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js", - "./lv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js", - "./lv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js", - "./me": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js", - "./me.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js", - "./mi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js", - "./mi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js", - "./mk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js", - "./mk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js", - "./ml": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js", - "./ml.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js", - "./mn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js", - "./mn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js", - "./mr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js", - "./mr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js", - "./ms": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js", - "./ms-my": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js", - "./ms-my.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js", - "./ms.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js", - "./mt": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js", - "./mt.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js", - "./my": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js", - "./my.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js", - "./nb": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js", - "./nb.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js", - "./ne": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js", - "./ne.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js", - "./nl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js", - "./nl-be": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js", - "./nl-be.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js", - "./nl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js", - "./nn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js", - "./nn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js", - "./oc-lnc": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js", - "./oc-lnc.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js", - "./pa-in": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js", - "./pa-in.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js", - "./pl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js", - "./pl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js", - "./pt": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js", - "./pt-br": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js", - "./pt-br.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js", - "./pt.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js", - "./ro": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js", - "./ro.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js", - "./ru": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js", - "./ru.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js", - "./sd": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js", - "./sd.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js", - "./se": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js", - "./se.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js", - "./si": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js", - "./si.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js", - "./sk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js", - "./sk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js", - "./sl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js", - "./sl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js", - "./sq": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js", - "./sq.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js", - "./sr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js", - "./sr-cyrl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js", - "./sr-cyrl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js", - "./sr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js", - "./ss": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js", - "./ss.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js", - "./sv": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js", - "./sv.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js", - "./sw": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js", - "./sw.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js", - "./ta": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js", - "./ta.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js", - "./te": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js", - "./te.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js", - "./tet": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js", - "./tet.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js", - "./tg": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js", - "./tg.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js", - "./th": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js", - "./th.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js", - "./tl-ph": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js", - "./tl-ph.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js", - "./tlh": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js", - "./tlh.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js", - "./tr": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js", - "./tr.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js", - "./tzl": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js", - "./tzl.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js", - "./tzm": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js", - "./tzm-latn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js", - "./tzm-latn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js", - "./tzm.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js", - "./ug-cn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js", - "./ug-cn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js", - "./uk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js", - "./uk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js", - "./ur": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js", - "./ur.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js", - "./uz": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js", - "./uz-latn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js", - "./uz-latn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js", - "./uz.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js", - "./vi": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js", - "./vi.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js", - "./x-pseudo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js", - "./x-pseudo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js", - "./yo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js", - "./yo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js", - "./zh-cn": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js", - "./zh-cn.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js", - "./zh-hk": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js", - "./zh-hk.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js", - "./zh-mo": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js", - "./zh-mo.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js", - "./zh-tw": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js", - "./zh-tw.js": "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js" -}; + __createIndexTree: function () { + var table = this.tables.tables = {}; + var indexes = this.indexes; + table[indexes[0][0]] = new Table(); + }, -function webpackContext(req) { - var id = webpackContextResolve(req); - return __webpack_require__(id); -} -function webpackContextResolve(req) { - if(!__webpack_require__.o(map, req)) { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - } - return map[req]; -} -webpackContext.keys = function webpackContextKeys() { - return Object.keys(map); -}; -webpackContext.resolve = webpackContextResolve; -module.exports = webpackContext; -webpackContext.id = "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$"; + addIndex: function (primary, lookup, op) { + this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || "eq"]); + this.indexes.sort(function (a, b) { + var aOp = a[4], bOp = b[4]; + return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1; + }); + this.__createIndexTree(); + + } + + } + +}).as(module); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js ***! - \************************************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js": +/*!**************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -//! moment.js -//! version : 2.26.0 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -;(function (global, factory) { - true ? module.exports = factory() : - 0 -}(this, (function () { 'use strict'; +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); - var hookCallback; +Memory.extend({ - function hooks() { - return hookCallback.apply(null, arguments); - } + instance: { - // This is done to register the method called with moment() - // without creating circular dependencies. - function setHookCallback(callback) { - hookCallback = callback; + getRightMemory: function (tuple) { + return this.getMemory(tuple); + } } - function isArray(input) { - return ( - input instanceof Array || - Object.prototype.toString.call(input) === '[object Array]' - ); - } +}).as(module); - function isObject(input) { - // IE8 will treat undefined and null as object if it wasn't for - // input != null - return ( - input != null && - Object.prototype.toString.call(input) === '[object Object]' - ); - } +/***/ }), - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function isObjectEmpty(obj) { - if (Object.getOwnPropertyNames) { - return Object.getOwnPropertyNames(obj).length === 0; - } else { - var k; - for (k in obj) { - if (hasOwnProp(obj, k)) { - return false; - } - } - return true; - } - } +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + pPush = Array.prototype.push, + HashTable = extd.HashTable, + AVLTree = extd.AVLTree; - function isUndefined(input) { - return input === void 0; +function compare(a, b) { + /*jshint eqeqeq: false*/ + a = a.key; + b = b.key; + var ret; + if (a == b) { + ret = 0; + } else if (a > b) { + ret = 1; + } else if (a < b) { + ret = -1; + } else { + ret = 1; } + return ret; +} - function isNumber(input) { - return ( - typeof input === 'number' || - Object.prototype.toString.call(input) === '[object Number]' - ); - } +function compareGT(v1, v2) { + return compare(v1, v2) === 1; +} +function compareGTE(v1, v2) { + return compare(v1, v2) !== -1; +} - function isDate(input) { - return ( - input instanceof Date || - Object.prototype.toString.call(input) === '[object Date]' - ); - } +function compareLT(v1, v2) { + return compare(v1, v2) === -1; +} +function compareLTE(v1, v2) { + return compare(v1, v2) !== 1; +} - function map(arr, fn) { - var res = [], - i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); +var STACK = [], + VALUE = {key: null}; +function traverseInOrder(tree, key, comparator) { + VALUE.key = key; + var ret = []; + var i = 0, current = tree.__root, v; + while (true) { + if (current) { + current = (STACK[i++] = current).left; + } else { + if (i > 0) { + v = (current = STACK[--i]).data; + if (comparator(v, VALUE)) { + pPush.apply(ret, v.value.tuples); + current = current.right; + } else { + break; + } + } else { + break; + } } - return res; } + STACK.length = 0; + return ret; +} - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; +function traverseReverseOrder(tree, key, comparator) { + VALUE.key = key; + var ret = []; + var i = 0, current = tree.__root, v; + while (true) { + if (current) { + current = (STACK[i++] = current).right; + } else { + if (i > 0) { + v = (current = STACK[--i]).data; + if (comparator(v, VALUE)) { + pPush.apply(ret, v.value.tuples); + current = current.left; + } else { + break; + } + } else { + break; } } + } + STACK.length = 0; + return ret; +} - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } +AVLTree.extend({ + instance: { - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + constructor: function () { + this._super([ + { + compare: compare + } + ]); + this.gtCache = new HashTable(); + this.gteCache = new HashTable(); + this.ltCache = new HashTable(); + this.lteCache = new HashTable(); + this.hasGTCache = false; + this.hasGTECache = false; + this.hasLTCache = false; + this.hasLTECache = false; + }, - return a; - } + clearCache: function () { + this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false); + this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false); + this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false); + this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false); + }, - function createUTC(input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); - } + contains: function (key) { + return this._super([ + {key: key} + ]); + }, - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty: false, - unusedTokens: [], - unusedInput: [], - overflow: -2, - charsLeftOver: 0, - nullInput: false, - invalidEra: null, - invalidMonth: null, - invalidFormat: false, - userInvalidated: false, - iso: false, - parsedDateParts: [], - era: null, - meridiem: null, - rfc2822: false, - weekdayMismatch: false, - }; - } + "set": function (key, value) { + this.insert({key: key, value: value}); + this.clearCache(); + }, - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } + "get": function (key) { + var ret = this.find({key: key}); + return ret && ret.value; + }, - var some; - if (Array.prototype.some) { - some = Array.prototype.some; - } else { - some = function (fun) { - var t = Object(this), - len = t.length >>> 0, - i; + "remove": function (key) { + this.clearCache(); + return this._super([ + {key: key} + ]); + }, - for (i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } + findGT: function (key) { + var ret = this.gtCache.get(key); + if (!ret) { + this.hasGTCache = true; + this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT))); } + return ret; + }, - return false; - }; - } - - function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m), - parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }), - isNowValid = - !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidEra && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - - if (m._strict) { - isNowValid = - isNowValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; + findGTE: function (key) { + var ret = this.gteCache.get(key); + if (!ret) { + this.hasGTECache = true; + this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE))); } + return ret; + }, - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } else { - return isNowValid; + findLT: function (key) { + var ret = this.ltCache.get(key); + if (!ret) { + this.hasLTCache = true; + this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT))); } - } - return m._isValid; - } + return ret; + }, - function createInvalid(flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } else { - getParsingFlags(m).userInvalidated = true; + findLTE: function (key) { + var ret = this.lteCache.get(key); + if (!ret) { + this.hasLTECache = true; + this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE))); + } + return ret; } - return m; } +}).as(module); - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - var momentProperties = (hooks.momentProperties = []), - updateInProgress = false; - - function copyConfig(to, from) { - var i, prop, val; - - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } +/***/ }), - if (momentProperties.length > 0) { - for (i = 0; i < momentProperties.length; i++) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; - } - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return to; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + indexOf = extd.indexOf; +// HashSet = require("./hashSet"); - // Moment prototype object - function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - if (!this.isValid()) { - this._d = new Date(NaN); - } - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } - } - function isMoment(obj) { - return ( - obj instanceof Moment || (obj != null && obj._isAMomentObject != null) - ); - } +var TUPLE_ID = 0; +extd.declare({ - function warn(msg) { - if ( - hooks.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && - console.warn - ) { - console.warn('Deprecation warning: ' + msg); - } - } + instance: { + tuples: null, + tupleMap: null, + hashCode: null, + tables: null, + entry: null, + constructor: function (val, entry, canRemove) { + this.val = val; + this.canRemove = canRemove; + this.tuples = []; + this.tupleMap = {}; + this.hashCode = TUPLE_ID++; + this.tables = {}; + this.length = 0; + this.entry = entry; + }, - function deprecate(msg, fn) { - var firstTime = true; + addNode: function (node) { + this.tuples[this.length++] = node; + if (this.length > 1) { + this.entry.clearCache(); + } + return this; + }, - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); + removeNode: function (node) { + var tuples = this.tuples, index = indexOf(tuples, node); + if (index !== -1) { + tuples.splice(index, 1); + this.length--; + this.entry.clearCache(); } - if (firstTime) { - var args = [], - arg, - i, - key; - for (i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (key in arguments[0]) { - if (hasOwnProp(arguments[0], key)) { - arg += key + ': ' + arguments[0][key] + ', '; - } - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn( - msg + - '\nArguments: ' + - Array.prototype.slice.call(args).join('') + - '\n' + - new Error().stack - ); - firstTime = false; + if (this.canRemove && !this.length) { + this.entry.remove(this.val); } - return fn.apply(this, arguments); - }, fn); + } } +}).as(module); - var deprecations = {}; +/***/ }), - function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - hooks.suppressDeprecationWarnings = false; - hooks.deprecationHandler = null; +/* module decorator */ module = __webpack_require__.nmd(module); +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + forEach = extd.forEach, + indexOf = extd.indexOf, + intersection = extd.intersection, + declare = extd.declare, + HashTable = extd.HashTable, + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"); - function isFunction(input) { - return ( - (typeof Function !== 'undefined' && input instanceof Function) || - Object.prototype.toString.call(input) === '[object Function]' - ); - } +var count = 0; +declare({ + instance: { + constructor: function () { + this.nodes = new HashTable(); + this.rules = []; + this.parentNodes = []; + this.__count = count++; + this.__entrySet = []; + }, - function set(config) { - var prop, i; - for (i in config) { - if (hasOwnProp(config, i)) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; - } + addRule: function (rule) { + if (indexOf(this.rules, rule) === -1) { + this.rules.push(rule); } - } - this._config = config; - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. - // TODO: Remove "ordinalParse" fallback in next major release. - this._dayOfMonthOrdinalParseLenient = new RegExp( - (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + - /\d{1,2}/.source - ); - } + return this; + }, - function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), - prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; + merge: function (that) { + that.nodes.forEach(function (entry) { + var patterns = entry.value, node = entry.key; + for (var i = 0, l = patterns.length; i < l; i++) { + this.addOutNode(node, patterns[i]); } + that.nodes.remove(node); + }, this); + var thatParentNodes = that.parentNodes; + for (var i = 0, l = that.parentNodes.l; i < l; i++) { + var parentNode = thatParentNodes[i]; + this.addParentNode(parentNode); + parentNode.nodes.remove(that); } - } - for (prop in parentConfig) { - if ( - hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop]) - ) { - // make sure changes to properties don't modify parent config - res[prop] = extend({}, res[prop]); - } - } - return res; - } + return this; + }, - function Locale(config) { - if (config != null) { - this.set(config); - } - } + resolve: function (mr1, mr2) { + return mr1.hashCode === mr2.hashCode; + }, - var keys; + print: function (tab) { + console.log(tab + this.toString()); + forEach(this.parentNodes, function (n) { + n.print(" " + tab); + }); + }, - if (Object.keys) { - keys = Object.keys; - } else { - keys = function (obj) { - var i, - res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } + addOutNode: function (outNode, pattern) { + if (!this.nodes.contains(outNode)) { + this.nodes.put(outNode, []); } - return res; - }; - } + this.nodes.get(outNode).push(pattern); + this.__entrySet = this.nodes.entrySet(); + }, - var defaultCalendar = { - sameDay: '[Today at] LT', - nextDay: '[Tomorrow at] LT', - nextWeek: 'dddd [at] LT', - lastDay: '[Yesterday at] LT', - lastWeek: '[Last] dddd [at] LT', - sameElse: 'L', - }; + addParentNode: function (n) { + if (indexOf(this.parentNodes, n) === -1) { + this.parentNodes.push(n); + } + }, - function calendar(key, mom, now) { - var output = this._calendar[key] || this._calendar['sameElse']; - return isFunction(output) ? output.call(mom, now) : output; - } + shareable: function () { + return false; + }, - function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return ( - (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + - absNumber - ); - } + __propagate: function (method, context) { + var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths; + while (--i > -1) { + entry = entrySet[i]; + outNode = entry.key; + paths = entry.value; - var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - formatFunctions = {}, - formatTokenFunctions = {}; + if ((continuingPaths = intersection(paths, context.paths)).length) { + outNode[method](new Context(context.fact, continuingPaths, context.match)); + } - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken(token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal( - func.apply(this, arguments), - token - ); - }; - } - } + } + }, - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } + dispose: function (assertable) { + this.propagateDispose(assertable); + }, - function makeFormatFunction(format) { - var array = format.match(formattingTokens), - i, - length; + retract: function (assertable) { + this.propagateRetract(assertable); + }, - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); + propagateDispose: function (assertable, outNodes) { + outNodes = outNodes || this.nodes; + var entrySet = this.__entrySet, i = entrySet.length - 1; + for (; i >= 0; i--) { + var entry = entrySet[i], outNode = entry.key; + outNode.dispose(assertable); } - } + }, - return function (mom) { - var output = '', - i; - for (i = 0; i < length; i++) { - output += isFunction(array[i]) - ? array[i].call(mom, format) - : array[i]; - } - return output; - }; - } + propagateAssert: function (assertable) { + this.__propagate("assert", assertable); + }, - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + propagateRetract: function (assertable) { + this.__propagate("retract", assertable); + }, - format = expandFormat(format, m.localeData()); - formatFunctions[format] = - formatFunctions[format] || makeFormatFunction(format); + assert: function (assertable) { + this.propagateAssert(assertable); + }, - return formatFunctions[format](m); + modify: function (assertable) { + this.propagateModify(assertable); + }, + + propagateModify: function (assertable) { + this.__propagate("modify", assertable); + } } - function expandFormat(format, locale) { - var i = 5; +}).as(module); - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace( - localFormattingTokens, - replaceLongDateFormatTokens - ); - localFormattingTokens.lastIndex = 0; - i -= 1; - } +/***/ }), - return format; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var defaultLongDateFormat = { - LTS: 'h:mm:ss A', - LT: 'h:mm A', - L: 'MM/DD/YYYY', - LL: 'MMMM D, YYYY', - LLL: 'MMMM D, YYYY h:mm A', - LLLL: 'dddd, MMMM D, YYYY h:mm A', - }; +/* module decorator */ module = __webpack_require__.nmd(module); +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + InitialFact = __webpack_require__(/*! ../pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact; - function longDateFormat(key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - if (format || !formatUpper) { - return format; - } +JoinNode.extend({ + instance: { - this._longDateFormat[key] = formatUpper - .match(formattingTokens) - .map(function (tok) { - if ( - tok === 'MMMM' || - tok === 'MM' || - tok === 'DD' || - tok === 'dddd' - ) { - return tok.slice(1); - } - return tok; - }) - .join(''); + nodeType: "NotNode", - return this._longDateFormat[key]; - } + constructor: function () { + this._super(arguments); + this.leftTupleMemory = {}; + //use this ensure a unique match for and propagated context. + this.notMatch = new Context(new InitialFact()).match; + }, - var defaultInvalidDate = 'Invalid date'; + __cloneContext: function (context) { + return context.clone(null, null, context.match.merge(this.notMatch)); + }, - function invalidDate() { - return this._invalidDate; - } - var defaultOrdinal = '%d', - defaultDayOfMonthOrdinalParse = /\d{1,2}/; + retractRight: function (context) { + var ctx = this.removeFromRightMemory(context), + rightContext = ctx.data, + blocking = rightContext.blocking; + if (blocking.length) { + //if we are blocking left contexts + var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc; + while ((blockingNode = blockingNode.next)) { + leftContext = blockingNode.data; + this.removeFromLeftBlockedMemory(leftContext); + var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i; + i = -1; + while (++i < l) { + if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) { + this.blockedContext(leftContext, rc); + leftContext = null; + break; + } + } + if (leftContext) { + this.notBlockedContext(leftContext, true); + } + } + blocking.clear(); + } - function ordinal(number) { - return this._ordinal.replace('%d', number); - } + }, - var defaultRelativeTime = { - future: 'in %s', - past: '%s ago', - s: 'a few seconds', - ss: '%d seconds', - m: 'a minute', - mm: '%d minutes', - h: 'an hour', - hh: '%d hours', - d: 'a day', - dd: '%d days', - w: 'a week', - ww: '%d weeks', - M: 'a month', - MM: '%d months', - y: 'a year', - yy: '%d years', - }; + blockedContext: function (leftContext, rightContext, propagate) { + leftContext.blocker = rightContext; + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext)); + propagate && this.__propagate("retract", this.__cloneContext(leftContext)); + }, - function relativeTime(number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return isFunction(output) - ? output(number, withoutSuffix, string, isFuture) - : output.replace(/%d/i, number); - } + notBlockedContext: function (leftContext, propagate) { + this.__addToLeftMemory(leftContext); + propagate && this.__propagate("assert", this.__cloneContext(leftContext)); + }, - function pastFuture(diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); - } + propagateFromLeft: function (leftContext) { + this.notBlockedContext(leftContext, true); + }, - var aliases = {}; + propagateFromRight: function (leftContext) { + this.notBlockedContext(leftContext, true); + }, - function addUnitAlias(unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } + blockFromAssertRight: function (leftContext, rightContext) { + this.blockedContext(leftContext, rightContext, true); + }, - function normalizeUnits(units) { - return typeof units === 'string' - ? aliases[units] || aliases[units.toLowerCase()] - : undefined; - } + blockFromAssertLeft: function (leftContext, rightContext) { + this.blockedContext(leftContext, rightContext, false); + }, - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; + retractLeft: function (context) { + var ctx = this.removeFromLeftMemory(context); + if (ctx) { + ctx = ctx.data; + this.__propagate("retract", this.__cloneContext(ctx)); + } else { + if (!this.removeFromLeftBlockedMemory(context)) { + throw new Error(); } } - } - - return normalizedInput; - } - - var priorities = {}; - - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } + }, - function getPrioritizedUnits(unitsObj) { - var units = [], - u; - for (u in unitsObj) { - if (hasOwnProp(unitsObj, u)) { - units.push({ unit: u, priority: priorities[u] }); + assertLeft: function (context) { + var values = this.rightTuples.getRightMemory(context), + thisConstraint = this.constraint, rc, i = -1, l = values.length; + while (++i < l) { + if (thisConstraint.isMatch(context, rc = values[i].data)) { + this.blockFromAssertLeft(context, rc); + context = null; + i = l; + } } - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; - } + if (context) { + this.propagateFromLeft(context); + } + }, - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + assertRight: function (context) { + this.__addToRightMemory(context); + context.blocking = new LinkedList(); + var fl = this.leftTuples.getLeftMemory(context).slice(), + i = -1, l = fl.length, + leftContext, thisConstraint = this.constraint; + while (++i < l) { + leftContext = fl[i].data; + if (thisConstraint.isMatch(leftContext, context)) { + this.blockFromAssertRight(leftContext, context); + } + } + }, - function absFloor(number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } - } + addToLeftBlockedMemory: function (context) { + var data = context.data, hashCode = data.hashCode; + var ctx = this.leftMemory[hashCode]; + this.leftTupleMemory[hashCode] = context; + if (ctx) { + this.leftTuples.remove(ctx); + } + return this; + }, - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + removeFromLeftBlockedMemory: function (context) { + var ret = this.leftTupleMemory[context.hashCode] || null; + if (ret) { + delete this.leftTupleMemory[context.hashCode]; + ret.data.blocker.blocking.remove(ret); + } + return ret; + }, - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } + modifyLeft: function (context) { + var ctx = this.removeFromLeftMemory(context), + leftContext, + thisConstraint = this.constraint, + rightTuples = this.rightTuples.getRightMemory(context), + l = rightTuples.length, + isBlocked = false, + i, rc, blocker; + if (!ctx) { + //blocked before + ctx = this.removeFromLeftBlockedMemory(context); + isBlocked = true; + } + if (ctx) { + leftContext = ctx.data; - return value; - } + if (leftContext && leftContext.blocker) { + //we were blocked before so only check nodes previous to our blocker + blocker = this.rightMemory[leftContext.blocker.hashCode]; + leftContext.blocker = null; + } + if (blocker) { + if (thisConstraint.isMatch(context, rc = blocker.data)) { + //we cant be proagated so retract previous + if (!isBlocked) { + //we were asserted before so retract + this.__propagate("retract", this.__cloneContext(leftContext)); + } + context.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context = null; + } + } + if (context && l) { + i = -1; + //we were propogated before + while (++i < l) { + if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) { + //we cant be proagated so retract previous + if (!isBlocked) { + //we were asserted before so retract + this.__propagate("retract", this.__cloneContext(leftContext)); + } + this.addToLeftBlockedMemory(rc.blocking.push(context)); + context.blocker = rc; + context = null; + break; + } + } + } + if (context) { + //we can still be propogated + this.__addToLeftMemory(context); + if (!isBlocked) { + //we weren't blocked before so modify + this.__propagate("modify", this.__cloneContext(context)); + } else { + //we were blocked before but aren't now + this.__propagate("assert", this.__cloneContext(context)); + } - function makeGetSet(unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; + } } else { - return get(this, unit); + throw new Error(); } - }; - } - function get(mom, unit) { - return mom.isValid() - ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() - : NaN; - } + }, - function set$1(mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if ( - unit === 'FullYear' && - isLeapYear(mom.year()) && - mom.month() === 1 && - mom.date() === 29 - ) { - value = toInt(value); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit]( - value, - mom.month(), - daysInMonth(value, mom.month()) - ); + modifyRight: function (context) { + var ctx = this.removeFromRightMemory(context); + if (ctx) { + var rightContext = ctx.data, + leftTuples = this.leftTuples.getLeftMemory(context).slice(), + leftTuplesLength = leftTuples.length, + leftContext, + thisConstraint = this.constraint, + i, node, + blocking = rightContext.blocking; + this.__addToRightMemory(context); + context.blocking = new LinkedList(); + + var rc; + //check old blocked contexts + //check if the same contexts blocked before are still blocked + var blockingNode = {next: blocking.head}; + while ((blockingNode = blockingNode.next)) { + leftContext = blockingNode.data; + leftContext.blocker = null; + if (thisConstraint.isMatch(leftContext, context)) { + leftContext.blocker = context; + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + leftContext = null; + } else { + //we arent blocked anymore + leftContext.blocker = null; + node = ctx; + while ((node = node.next)) { + if (thisConstraint.isMatch(leftContext, rc = node.data)) { + leftContext.blocker = rc; + this.addToLeftBlockedMemory(rc.blocking.push(leftContext)); + leftContext = null; + break; + } + } + if (leftContext) { + this.__addToLeftMemory(leftContext); + this.__propagate("assert", this.__cloneContext(leftContext)); + } + } + } + if (leftTuplesLength) { + //check currently left tuples in memory + i = -1; + while (++i < leftTuplesLength) { + leftContext = leftTuples[i].data; + if (thisConstraint.isMatch(leftContext, context)) { + this.__propagate("retract", this.__cloneContext(leftContext)); + this.removeFromLeftMemory(leftContext); + this.addToLeftBlockedMemory(context.blocking.push(leftContext)); + leftContext.blocker = context; + } + } + } } else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + throw new Error(); } - } - } - // MOMENTS - function stringGet(units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); } - return this; } +}).as(module); - function stringSet(units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units), - i; - for (i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; - } +/***/ }), - var match1 = /\d/, // 0 - 9 - match2 = /\d\d/, // 00 - 99 - match3 = /\d{3}/, // 000 - 999 - match4 = /\d{4}/, // 0000 - 9999 - match6 = /[+-]?\d{6}/, // -999999 - 999999 - match1to2 = /\d\d?/, // 0 - 99 - match3to4 = /\d\d\d\d?/, // 999 - 9999 - match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 - match1to3 = /\d{1,3}/, // 0 - 999 - match1to4 = /\d{1,4}/, // 0 - 9999 - match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 - matchUnsigned = /\d+/, // 0 - inf - matchSigned = /[+-]?\d+/, // -inf - inf - matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z - matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - // any word (or two) characters or numbers including two/three word month in arabic. - // includes scottish gaelic two word and hyphenated months - matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, - regexes; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - regexes = {}; +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); - function addRegexToken(token, regex, strictRegex) { - regexes[token] = isFunction(regex) - ? regex - : function (isStrict, localeData) { - return isStrict && strictRegex ? strictRegex : regex; - }; - } +AlphaNode.extend({ + instance: { - function getParseRegexForToken(token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } + constructor: function () { + this._super(arguments); + this.alias = this.constraint.get("alias"); + this.varLength = (this.variables = extd(this.constraint.get("variables")).toArray().value()).length; + }, - return regexes[token](config._strict, config._locale); - } + assert: function (context) { + var c = new Context(context.fact, context.paths); + var variables = this.variables, o = context.fact.object, item; + c.set(this.alias, o); + for (var i = 0, l = this.varLength; i < l; i++) { + item = variables[i]; + c.set(item[1], o[item[0]]); + } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return regexEscape( - s - .replace('\\', '') - .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function ( - matched, - p1, - p2, - p3, - p4 - ) { - return p1 || p2 || p3 || p4; - }) - ); - } + this.__propagate("assert", c); - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } + }, - var tokens = {}; + retract: function (context) { + this.__propagate("retract", new Context(context.fact, context.paths)); + }, - function addParseToken(token, callback) { - var i, - func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } + modify: function (context) { + var c = new Context(context.fact, context.paths); + var variables = this.variables, o = context.fact.object, item; + c.set(this.alias, o); + for (var i = 0, l = this.varLength; i < l; i++) { + item = variables[i]; + c.set(item[1], o[item[0]]); + } + this.__propagate("modify", c); + }, - function addWeekParseToken(token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); + toString: function () { + return "PropertyNode" + this.__count; } } +}).as(module); - var YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - WEEK = 7, - WEEKDAY = 8; - - function mod(n, x) { - return ((n % x) + x) % x; - } - - var indexOf; - - if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; - } else { - indexOf = function (o) { - // I know - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; - } - } - return -1; - }; - } - function daysInMonth(year, month) { - if (isNaN(year) || isNaN(month)) { - return NaN; - } - var modMonth = mod(month, 12); - year += (month - modMonth) / 12; - return modMonth === 1 - ? isLeapYear(year) - ? 29 - : 28 - : 31 - ((modMonth % 7) % 2); - } - // FORMATTING - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); +/***/ }), - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js": +/*!**************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); - // ALIASES +Node.extend({ + instance: { - addUnitAlias('month', 'M'); + retractResolve: function (match) { + this.__propagate("retractResolve", match); + }, - // PRIORITY + dispose: function (context) { + this.propagateDispose(context); + }, - addUnitPriority('month', 8); + propagateAssert: function (context) { + this.__propagate("assertRight", context); + }, - // PARSING + propagateRetract: function (context) { + this.__propagate("retractRight", context); + }, - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); - }); - addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); - }); + propagateResolve: function (context) { + this.__propagate("retractResolve", context); + }, - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); + propagateModify: function (context) { + this.__propagate("modifyRight", context); + }, - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; + toString: function () { + return "RightAdapterNode " + this.__count; } - }); + } +}).as(module); - // LOCALES +/***/ }), - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split( - '_' - ), - defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split( - '_' - ), - MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, - defaultMonthsShortRegex = matchWord, - defaultMonthsRegex = matchWord; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function localeMonths(m, format) { - if (!m) { - return isArray(this._months) - ? this._months - : this._months['standalone']; - } - return isArray(this._months) - ? this._months[m.month()] - : this._months[ - (this._months.isFormat || MONTHS_IN_FORMAT).test(format) - ? 'format' - : 'standalone' - ][m.month()]; - } +/* module decorator */ module = __webpack_require__.nmd(module); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + bind = extd.bind; - function localeMonthsShort(m, format) { - if (!m) { - return isArray(this._monthsShort) - ? this._monthsShort - : this._monthsShort['standalone']; - } - return isArray(this._monthsShort) - ? this._monthsShort[m.month()] - : this._monthsShort[ - MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' - ][m.month()]; - } +Node.extend({ + instance: { + constructor: function (bucket, index, rule, agenda) { + this._super([]); + this.resolve = bind(this, this.resolve); + this.rule = rule; + this.index = index; + this.name = this.rule.name; + this.agenda = agenda; + this.bucket = bucket; + agenda.register(this); + }, - function handleStrictParse(monthName, format, strict) { - var i, - ii, - mom, - llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - // this is not used - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort( - mom, - '' - ).toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + __assertModify: function (context) { + var match = context.match; + if (match.isMatch) { + var rule = this.rule, bucket = this.bucket; + this.agenda.insert(this, { + rule: rule, + hashCode: context.hashCode, + index: this.index, + name: rule.name, + recency: bucket.recency++, + match: match, + counter: bucket.counter + }); } - } + }, - if (strict) { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } - } + assert: function (context) { + this.__assertModify(context); + }, - function localeMonthsParse(monthName, format, strict) { - var i, mom, regex; + modify: function (context) { + this.agenda.retract(this, context); + this.__assertModify(context); + }, - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } + retract: function (context) { + this.agenda.retract(this, context); + }, - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + retractRight: function (context) { + this.agenda.retract(this, context); + }, - // TODO: add sorting - // Sorting makes sure if one month (or abbr) is a prefix of another - // see sorting in computeMonthsParse - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp( - '^' + this.months(mom, '').replace('.', '') + '$', - 'i' - ); - this._shortMonthsParse[i] = new RegExp( - '^' + this.monthsShort(mom, '').replace('.', '') + '$', - 'i' - ); - } - if (!strict && !this._monthsParse[i]) { - regex = - '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if ( - strict && - format === 'MMMM' && - this._longMonthsParse[i].test(monthName) - ) { - return i; - } else if ( - strict && - format === 'MMM' && - this._shortMonthsParse[i].test(monthName) - ) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } + retractLeft: function (context) { + this.agenda.retract(this, context); + }, - // MOMENTS + assertLeft: function (context) { + this.__assertModify(context); + }, - function setMonth(mom, value) { - var dayOfMonth; + assertRight: function (context) { + this.__assertModify(context); + }, - if (!mom.isValid()) { - // No op - return mom; + toString: function () { + return "TerminalNode " + this.rule.name; } + } +}).as(module); - if (typeof value === 'string') { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (!isNumber(value)) { - return mom; - } - } - } +/***/ }), - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - function getSetMonth(value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } - } +/* module decorator */ module = __webpack_require__.nmd(module); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"); - function getDaysInMonth() { - return daysInMonth(this.year(), this.month()); - } +AlphaNode.extend({ + instance: { - function monthsShortRegex(isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; - } else { - return this._monthsShortRegex; + assert: function (fact) { + if (this.constraintAssert(fact.object)) { + this.__propagate("assert", fact); } - } else { - if (!hasOwnProp(this, '_monthsShortRegex')) { - this._monthsShortRegex = defaultMonthsShortRegex; + }, + + modify: function (fact) { + if (this.constraintAssert(fact.object)) { + this.__propagate("modify", fact); } - return this._monthsShortStrictRegex && isStrict - ? this._monthsShortStrictRegex - : this._monthsShortRegex; - } - } + }, - function monthsRegex(isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); + retract: function (fact) { + if (this.constraintAssert(fact.object)) { + this.__propagate("retract", fact); } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; + }, + + toString: function () { + return "TypeNode" + this.__count; + }, + + dispose: function () { + var es = this.__entrySet, i = es.length - 1; + for (; i >= 0; i--) { + var e = es[i], outNode = e.key, paths = e.value; + outNode.dispose({paths: paths}); } - } else { - if (!hasOwnProp(this, '_monthsRegex')) { - this._monthsRegex = defaultMonthsRegex; + }, + + __propagate: function (method, fact) { + var es = this.__entrySet, i = -1, l = es.length; + while (++i < l) { + var e = es[i], outNode = e.key, paths = e.value; + outNode[method](new Context(fact, paths)); } - return this._monthsStrictRegex && isStrict - ? this._monthsStrictRegex - : this._monthsRegex; } } +}).as(module); - function computeMonthsParse() { - function cmpLenRev(a, b) { - return b.length - a.length; - } - var shortPieces = [], - longPieces = [], - mixedPieces = [], - i, - mom; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); - } - // Sorting makes sure if one month (or abbr) is a prefix of another it - // will match the longer piece. - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp( - '^(' + longPieces.join('|') + ')', - 'i' - ); - this._monthsShortStrictRegex = new RegExp( - '^(' + shortPieces.join('|') + ')', - 'i' - ); - } +/***/ }), - // FORMATTING +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js": +/*!****************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js ***! + \****************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : '+' + y; - }); +/* module decorator */ module = __webpack_require__.nmd(module); +/* parser generated by jison 0.4.17 */ +/* + Returns a Parser object of the following structure: - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); + Parser: { + yy: {} + } - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + Parser.prototype: { + yy: {}, + trace: function(), + symbols_: {associative list: name ==> number}, + terminals_: {associative list: number ==> name}, + productions_: [...], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), + table: [...], + defaultActions: {...}, + parseError: function(str, hash), + parse: function(input), - // ALIASES + lexer: { + EOF: 1, + parseError: function(str, hash), + setInput: function(input), + input: function(), + unput: function(str), + more: function(), + less: function(n), + pastInput: function(), + upcomingInput: function(), + showPosition: function(), + test_match: function(regex_match_array, rule_index), + next: function(), + lex: function(), + begin: function(condition), + popState: function(), + _currentRules: function(), + topState: function(), + pushState: function(condition), - addUnitAlias('year', 'y'); + options: { + ranges: boolean (optional: true ==> token location info will include a .range[] member) + flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) + backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) + }, - // PRIORITIES + performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), + rules: [...], + conditions: {associative list: name ==> set}, + } + } - addUnitPriority('year', 1); - // PARSING + token location info (@$, _$, etc.): { + first_line: n, + last_line: n, + first_column: n, + last_column: n, + range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) + } - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = - input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); - }); + the parseError function receives a 'hash' object with these members for lexer and parser errors: { + text: (matched text) + token: (the produced terminal token, if any) + line: (yylineno) + } + while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { + loc: (yylloc) + expected: (string describing the set of expected tokens) + recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) + } +*/ +var parser = (function(){ +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49]; +var parser = {trace: function trace() { }, +yy: {}, +symbols_: {"error":2,"expressions":3,"EXPRESSION":4,"EOF":5,"UNARY_EXPRESSION":6,"LITERAL_EXPRESSION":7,"-":8,"!":9,"MULTIPLICATIVE_EXPRESSION":10,"*":11,"/":12,"%":13,"ADDITIVE_EXPRESSION":14,"+":15,"EXPONENT_EXPRESSION":16,"^":17,"RELATIONAL_EXPRESSION":18,"<":19,">":20,"<=":21,">=":22,"EQUALITY_EXPRESSION":23,"==":24,"===":25,"!=":26,"!==":27,"=~":28,"!=~":29,"IN_EXPRESSION":30,"in":31,"ARRAY_EXPRESSION":32,"notIn":33,"OBJECT_EXPRESSION":34,"AND_EXPRESSION":35,"&&":36,"OR_EXPRESSION":37,"||":38,"ARGUMENT_LIST":39,",":40,"IDENTIFIER_EXPRESSION":41,"IDENTIFIER":42,".":43,"[":44,"STRING_EXPRESSION":45,"]":46,"NUMBER_EXPRESSION":47,"(":48,")":49,"STRING":50,"NUMBER":51,"REGEXP_EXPRESSION":52,"REGEXP":53,"BOOLEAN_EXPRESSION":54,"BOOLEAN":55,"NULL_EXPRESSION":56,"NULL":57,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOF",8:"-",9:"!",11:"*",12:"/",13:"%",15:"+",17:"^",19:"<",20:">",21:"<=",22:">=",24:"==",25:"===",26:"!=",27:"!==",28:"=~",29:"!=~",31:"in",33:"notIn",36:"&&",38:"||",40:",",42:"IDENTIFIER",43:".",44:"[",46:"]",48:"(",49:")",50:"STRING",51:"NUMBER",53:"REGEXP",55:"BOOLEAN",57:"NULL"}, +productions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]], +performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { +/* this == yyval */ - // HELPERS +var $0 = $$.length - 1; +switch (yystate) { +case 1: +return $$[$0-1]; +break; +case 3: +this.$ = [$$[$0], null, 'unary']; +break; +case 4: +this.$ = [$$[$0], null, 'logicalNot']; +break; +case 6: +this.$ = [$$[$0-2], $$[$0], 'mult']; +break; +case 7: +this.$ = [$$[$0-2], $$[$0], 'div']; +break; +case 8: +this.$ = [$$[$0-2], $$[$0], 'mod']; +break; +case 10: +this.$ = [$$[$0-2], $$[$0], 'plus']; +break; +case 11: +this.$ = [$$[$0-2], $$[$0], 'minus']; +break; +case 13: +this.$ = [$$[$0-2], $$[$0], 'pow']; +break; +case 15: +this.$ = [$$[$0-2], $$[$0], 'lt']; +break; +case 16: +this.$ = [$$[$0-2], $$[$0], 'gt']; +break; +case 17: +this.$ = [$$[$0-2], $$[$0], 'lte']; +break; +case 18: +this.$ = [$$[$0-2], $$[$0], 'gte']; +break; +case 20: +this.$ = [$$[$0-2], $$[$0], 'eq']; +break; +case 21: +this.$ = [$$[$0-2], $$[$0], 'seq']; +break; +case 22: +this.$ = [$$[$0-2], $$[$0], 'neq']; +break; +case 23: +this.$ = [$$[$0-2], $$[$0], 'sneq']; +break; +case 24: +this.$ = [$$[$0-2], $$[$0], 'like']; +break; +case 25: +this.$ = [$$[$0-2], $$[$0], 'notLike']; +break; +case 27: case 29: +this.$ = [$$[$0-2], $$[$0], 'in']; +break; +case 28: case 30: +this.$ = [$$[$0-2], $$[$0], 'notIn']; +break; +case 32: +this.$ = [$$[$0-2], $$[$0], 'and']; +break; +case 34: +this.$ = [$$[$0-2], $$[$0], 'or']; +break; +case 36: +this.$ = [$$[$0-2], $$[$0], 'arguments'] +break; +case 37: +this.$ = [String(yytext), null, 'identifier']; +break; +case 39: +this.$ = [$$[$0-2],$$[$0], 'prop']; +break; +case 40: case 41: case 42: +this.$ = [$$[$0-3],$$[$0-1], 'propLookup']; +break; +case 43: +this.$ = [$$[$0-2], [null, null, 'arguments'], 'function'] +break; +case 44: +this.$ = [$$[$0-3], $$[$0-1], 'function'] +break; +case 45: +this.$ = [String(yytext.replace(/^['|"]|['|"]$/g, '')), null, 'string']; +break; +case 46: +this.$ = [Number(yytext), null, 'number']; +break; +case 47: +this.$ = [yytext, null, 'regexp']; +break; +case 48: +this.$ = [yytext.replace(/^\s+/, '') == 'true', null, 'boolean']; +break; +case 49: +this.$ = [null, null, 'null']; +break; +case 50: +this.$ = [null, null, 'array']; +break; +case 51: +this.$ = [$$[$0-1], null, 'array']; +break; +case 59: +this.$ = [$$[$0-1], null, 'composite'] +break; +} +}, +table: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])], +defaultActions: {31:[2,1]}, +parseError: function parseError(str, hash) { + if (hash.recoverable) { + this.trace(str); + } else { + function _parseError (msg, hash) { + this.message = msg; + this.hash = hash; + } + _parseError.prototype = Error; - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; + throw new _parseError(str, hash); } - - // HOOKS - - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', true); - - function getIsLeapYear() { - return isLeapYear(this.year()); +}, +parse: function parse(input) { + var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; + var args = lstack.slice.call(arguments, 1); + var lexer = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k)) { + sharedState.yy[k] = this.yy[k]; + } } - - function createDate(y, m, d, h, M, s, ms) { - // can't just apply() to create a date: - // https://stackoverflow.com/q/181348 - var date; - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - date = new Date(y + 400, m, d, h, M, s, ms); - if (isFinite(date.getFullYear())) { - date.setFullYear(y); + lexer.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer; + sharedState.yy.parser = this; + if (typeof lexer.yylloc == 'undefined') { + lexer.yylloc = {}; + } + var yyloc = lexer.yylloc; + lstack.push(yyloc); + var ranges = lexer.options && lexer.options.ranges; + if (typeof sharedState.yy.parseError === 'function') { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function popStack(n) { + stack.length = stack.length - 2 * n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; + } + _token_stack: + var lex = function () { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; } + return token; + }; + var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; } else { - date = new Date(y, m, d, h, M, s, ms); + if (symbol === null || typeof symbol == 'undefined') { + symbol = lex(); + } + action = table[state] && table[state][symbol]; } - - return date; - } - - function createUTCDate(y) { - var date, args; - // the Date.UTC function remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - args = Array.prototype.slice.call(arguments); - // preserve leap years using a full 400 year cycle, then reset - args[0] = y + 400; - date = new Date(Date.UTC.apply(null, args)); - if (isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); + if (typeof action === 'undefined' || !action.length || !action[0]) { + var errStr = ''; + expected = []; + for (p in table[state]) { + if (this.terminals_[p] && p > TERROR) { + expected.push('\'' + this.terminals_[p] + '\''); + } + } + if (lexer.showPosition) { + errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; + } else { + errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); + } + this.parseError(errStr, { + text: lexer.match, + token: this.terminals_[symbol] || symbol, + line: lexer.yylineno, + loc: yyloc, + expected: expected + }); } - } else { - date = new Date(Date.UTC.apply(null, arguments)); + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer.yytext); + lstack.push(lexer.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer.yyleng; + yytext = lexer.yytext; + yylineno = lexer.yylineno; + yyloc = lexer.yylloc; + if (recovering > 0) { + recovering--; + } + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r !== 'undefined') { + return r; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; } - - return date; - } - - // start-of-first-week - start-of-year - function firstWeekOffset(year, dow, doy) { - var // first-week day -- which january is always in the first week (4 for iso, 1 for other) - fwd = 7 + dow - doy, - // first-week day local weekday -- which local weekday is fwd - fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - - return -fwdlw + fwd - 1; } + return true; +}}; +/* generated by jison-lex 0.3.4 */ +var lexer = (function(){ +var lexer = ({ - // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, - weekOffset = firstWeekOffset(year, dow, doy), - dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, - resDayOfYear; +EOF:1, - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); +parseError:function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); } else { - resYear = year; - resDayOfYear = dayOfYear; + throw new Error(str); } + }, - return { - year: resYear, - dayOfYear: resDayOfYear, +// resets the lexer, sets new input +setInput:function (input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 }; - } - - function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), - week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, - resYear; + if (this.options.ranges) { + this.yylloc.range = [0,0]; + } + this.offset = 0; + return this; + }, - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; +// consumes and returns one char from the input +input:function () { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; } else { - resYear = mom.year(); - resWeek = week; + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; } - return { - week: resWeek, - year: resYear, - }; - } - - function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), - weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; - } - - // FORMATTING - - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PRIORITIES - - addUnitPriority('week', 5); - addUnitPriority('isoWeek', 5); - - // PARSING - - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); - - addWeekParseToken(['w', 'ww', 'W', 'WW'], function ( - input, - week, - config, - token - ) { - week[token.substr(0, 1)] = toInt(input); - }); - - // HELPERS - - // LOCALES - - function localeWeek(mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - - var defaultLocaleWeek = { - dow: 0, // Sunday is the first day of the week. - doy: 6, // The week that contains Jan 6th is the first week of the year. - }; - - function localeFirstDayOfWeek() { - return this._week.dow; - } - - function localeFirstDayOfYear() { - return this._week.doy; - } - - // MOMENTS - - function getSetWeek(input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - function getSetISOWeek(input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - // FORMATTING - - addFormatToken('d', 0, 'do', 'day'); - - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); - }); - - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); - }); - - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); - }); - - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); - - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PRIORITY - addUnitPriority('day', 11); - addUnitPriority('weekday', 11); - addUnitPriority('isoWeekday', 11); + this._input = this._input.slice(1); + return ch; + }, - // PARSING +// unshifts one char (or a string) into the input +unput:function (ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); - }); - addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); - }); - addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); - }); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; + if (lines.length - 1) { + this.yylineno -= lines.length - 1; } - }); - - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); - }); - - // HELPERS + var r = this.yylloc.range; - function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? + (lines.length === oldLines.length ? this.yylloc.first_column : 0) + + oldLines[oldLines.length - lines.length].length - lines[0].length : + this.yylloc.first_column - len + }; - if (!isNaN(input)) { - return parseInt(input, 10); + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; } + this.yyleng = this.yytext.length; + return this; + }, - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } +// When called from action, caches matched text and appends it on next action +more:function () { + this._more = true; + return this; + }, - return null; - } +// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. +reject:function () { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); - function parseIsoWeekday(input, locale) { - if (typeof input === 'string') { - return locale.weekdaysParse(input) % 7 || 7; } - return isNaN(input) ? null : input; - } - - // LOCALES - function shiftWeekdays(ws, n) { - return ws.slice(n, 7).concat(ws.slice(0, n)); - } + return this; + }, - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( - '_' - ), - defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - defaultWeekdaysRegex = matchWord, - defaultWeekdaysShortRegex = matchWord, - defaultWeekdaysMinRegex = matchWord; +// retain first n characters of the match +less:function (n) { + this.unput(this.match.slice(n)); + }, - function localeWeekdays(m, format) { - var weekdays = isArray(this._weekdays) - ? this._weekdays - : this._weekdays[ - m && m !== true && this._weekdays.isFormat.test(format) - ? 'format' - : 'standalone' - ]; - return m === true - ? shiftWeekdays(weekdays, this._week.dow) - : m - ? weekdays[m.day()] - : weekdays; - } +// displays already matched input, i.e. for error messages +pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, - function localeWeekdaysShort(m) { - return m === true - ? shiftWeekdays(this._weekdaysShort, this._week.dow) - : m - ? this._weekdaysShort[m.day()] - : this._weekdaysShort; - } +// displays upcoming input, i.e. for error messages +upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); + } + return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); + }, - function localeWeekdaysMin(m) { - return m === true - ? shiftWeekdays(this._weekdaysMin, this._week.dow) - : m - ? this._weekdaysMin[m.day()] - : this._weekdaysMin; - } +// displays the character position where the lexing error occurred, i.e. for error messages +showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, - function handleStrictParse$1(weekdayName, format, strict) { - var i, - ii, - mom, - llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; +// test the lexed token: return FALSE when not a match, otherwise return token +test_match:function (match, indexed_rule) { + var token, + lines, + backup; - for (i = 0; i < 7; ++i) { - mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin( - mom, - '' - ).toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort( - mom, - '' - ).toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + if (this.options.backtrack_lexer) { + // save context + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); } } - if (strict) { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; } - } - - function localeWeekdaysParse(weekdayName, format, strict) { - var i, mom, regex; - - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? + lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : + this.yylloc.last_column + match[0].length + }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; } - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - - mom = createUTC([2000, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp( - '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', - 'i' - ); - this._shortWeekdaysParse[i] = new RegExp( - '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', - 'i' - ); - this._minWeekdaysParse[i] = new RegExp( - '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', - 'i' - ); - } - if (!this._weekdaysParse[i]) { - regex = - '^' + - this.weekdays(mom, '') + - '|^' + - this.weekdaysShort(mom, '') + - '|^' + - this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if ( - strict && - format === 'dddd' && - this._fullWeekdaysParse[i].test(weekdayName) - ) { - return i; - } else if ( - strict && - format === 'ddd' && - this._shortWeekdaysParse[i].test(weekdayName) - ) { - return i; - } else if ( - strict && - format === 'dd' && - this._minWeekdaysParse[i].test(weekdayName) - ) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; + if (token) { + return token; + } else if (this._backtrack) { + // recover context + for (var k in backup) { + this[k] = backup[k]; } + return false; // rule action called reject() implying the next rule should be tested instead. } - } - - // MOMENTS - - function getSetDayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - } + return false; + }, - function getSetLocaleDayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; +// return next match in input +next:function () { + if (this.done) { + return this.EOF; } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - } - - function getSetISODayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; + if (!this._input) { + this.done = true; } - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; + var token, + match, + tempMatch, + index; + if (!this._more) { + this.yytext = ''; + this.match = ''; } - } - - function weekdaysRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (this.options.backtrack_lexer) { + token = this.test_match(tempMatch, rules[i]); + if (token !== false) { + return token; + } else if (this._backtrack) { + match = false; + continue; // rule action called reject() implying a rule MISmatch. + } else { + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + } else if (!this.options.flex) { + break; + } } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; + } + if (match) { + token = this.test_match(match, rules[index]); + if (token !== false) { + return token; } + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + if (this._input === "") { + return this.EOF; } else { - if (!hasOwnProp(this, '_weekdaysRegex')) { - this._weekdaysRegex = defaultWeekdaysRegex; - } - return this._weekdaysStrictRegex && isStrict - ? this._weekdaysStrictRegex - : this._weekdaysRegex; + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); } - } + }, - function weekdaysShortRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } +// return next match that has a token +lex:function lex() { + var r = this.next(); + if (r) { + return r; } else { - if (!hasOwnProp(this, '_weekdaysShortRegex')) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; - } - return this._weekdaysShortStrictRegex && isStrict - ? this._weekdaysShortStrictRegex - : this._weekdaysShortRegex; + return this.lex(); } - } + }, - function weekdaysMinRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; - } else { - return this._weekdaysMinRegex; - } +// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) +begin:function begin(condition) { + this.conditionStack.push(condition); + }, + +// pop the previously active lexer condition state off the condition stack +popState:function popState() { + var n = this.conditionStack.length - 1; + if (n > 0) { + return this.conditionStack.pop(); } else { - if (!hasOwnProp(this, '_weekdaysMinRegex')) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; - } - return this._weekdaysMinStrictRegex && isStrict - ? this._weekdaysMinStrictRegex - : this._weekdaysMinRegex; + return this.conditionStack[0]; } - } + }, - function computeWeekdaysParse() { - function cmpLenRev(a, b) { - return b.length - a.length; +// produce the lexer rule set which is active for the currently active lexer condition state +_currentRules:function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; } + }, - var minPieces = [], - shortPieces = [], - longPieces = [], - mixedPieces = [], - i, - mom, - minp, - shortp, - longp; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - minp = regexEscape(this.weekdaysMin(mom, '')); - shortp = regexEscape(this.weekdaysShort(mom, '')); - longp = regexEscape(this.weekdays(mom, '')); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); +// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available +topState:function topState(n) { + n = this.conditionStack.length - 1 - Math.abs(n || 0); + if (n >= 0) { + return this.conditionStack[n]; + } else { + return "INITIAL"; } - // Sorting makes sure if one weekday (or abbr) is a prefix of another it - // will match the longer piece. - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - - this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; + }, - this._weekdaysStrictRegex = new RegExp( - '^(' + longPieces.join('|') + ')', - 'i' - ); - this._weekdaysShortStrictRegex = new RegExp( - '^(' + shortPieces.join('|') + ')', - 'i' - ); - this._weekdaysMinStrictRegex = new RegExp( - '^(' + minPieces.join('|') + ')', - 'i' - ); - } +// alias for begin(condition) +pushState:function pushState(condition) { + this.begin(condition); + }, - // FORMATTING +// return the number of states currently on the stack +stateStackSize:function stateStackSize() { + return this.conditionStack.length; + }, +options: {}, +performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { +var YYSTATE=YY_START; +switch($avoiding_name_collisions) { +case 0:return 31; +break; +case 1:return 33; +break; +case 2:return 'from'; +break; +case 3:return 24; +break; +case 4:return 25; +break; +case 5:return 26; +break; +case 6:return 27; +break; +case 7:return 21; +break; +case 8:return 19; +break; +case 9:return 22; +break; +case 10:return 20; +break; +case 11:return 28; +break; +case 12:return 29; +break; +case 13:return 36; +break; +case 14:return 38; +break; +case 15:return 57; +break; +case 16:return 55; +break; +case 17:/* skip whitespace */ +break; +case 18:return 51; +break; +case 19:return 50; +break; +case 20:return 50; +break; +case 21:return 42; +break; +case 22:return 53; +break; +case 23:return 43; +break; +case 24:return 11; +break; +case 25:return 12; +break; +case 26:return 13; +break; +case 27:return 40; +break; +case 28:return 8; +break; +case 29:return 28; +break; +case 30:return 29; +break; +case 31:return 25; +break; +case 32:return 24; +break; +case 33:return 27; +break; +case 34:return 26; +break; +case 35:return 21; +break; +case 36:return 22; +break; +case 37:return 20; +break; +case 38:return 19; +break; +case 39:return 36; +break; +case 40:return 38; +break; +case 41:return 15; +break; +case 42:return 17; +break; +case 43:return 48; +break; +case 44:return 46; +break; +case 45:return 44; +break; +case 46:return 49; +break; +case 47:return 9; +break; +case 48:return 5; +break; +} +}, +rules: [/^(?:\s+in\b)/,/^(?:\s+notIn\b)/,/^(?:\s+from\b)/,/^(?:\s+(eq|EQ)\b)/,/^(?:\s+(seq|SEQ)\b)/,/^(?:\s+(neq|NEQ)\b)/,/^(?:\s+(sneq|SNEQ)\b)/,/^(?:\s+(lte|LTE)\b)/,/^(?:\s+(lt|LT)\b)/,/^(?:\s+(gte|GTE)\b)/,/^(?:\s+(gt|GT)\b)/,/^(?:\s+(like|LIKE)\b)/,/^(?:\s+(notLike|NOT_LIKE)\b)/,/^(?:\s+(and|AND)\b)/,/^(?:\s+(or|OR)\b)/,/^(?:\s*(null)\b)/,/^(?:\s*(true|false)\b)/,/^(?:\s+)/,/^(?:-?[0-9]+(?:\.[0-9]+)?\b)/,/^(?:'[^']*')/,/^(?:"[^"]*")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\/((?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/[imgy]{0,4})(?!\w))/,/^(?:\.)/,/^(?:\*)/,/^(?:\/)/,/^(?:\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\|\|)/,/^(?:\+)/,/^(?:\^)/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:\))/,/^(?:!)/,/^(?:$)/], +conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"inclusive":true}} +}); +return lexer; +})(); +parser.lexer = lexer; +function Parser () { + this.yy = {}; +} +Parser.prototype = parser;parser.Parser = Parser; +return new Parser; +})(); - function hFormat() { - return this.hours() % 12 || 12; - } - function kFormat() { - return this.hours() || 24; +if (true) { +exports.parser = parser; +exports.Parser = parser.Parser; +exports.parse = function () { return parser.parse.apply(parser, arguments); }; +exports.main = function commonjsMain(args) { + if (!args[1]) { + console.log('Usage: '+args[0]+' FILE'); + process.exit(1); } + var source = __webpack_require__(/*! fs */ "fs").readFileSync(__webpack_require__(/*! path */ "path").normalize(args[1]), "utf8"); + return exports.parser.parse(source); +}; +if ( true && __webpack_require__.c[__webpack_require__.s] === module) { + exports.main(process.argv.slice(1)); +} +} - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, hFormat); - addFormatToken('k', ['kk', 2], 0, kFormat); +/***/ }), - addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); - }); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - addFormatToken('hmmss', 0, 0, function () { - return ( - '' + - hFormat.apply(this) + - zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2) - ); - }); +(function () { + "use strict"; + var constraintParser = __webpack_require__(/*! ./constraint/parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js"), + noolParser = __webpack_require__(/*! ./nools/nool.parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js"); - addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); - }); + exports.parseConstraint = function (expression) { + try { + return constraintParser.parse(expression); + } catch (e) { + throw new Error("Invalid expression '" + expression + "'"); + } + }; - addFormatToken('Hmmss', 0, 0, function () { - return ( - '' + - this.hours() + - zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2) - ); - }); + exports.parseRuleSet = function (source, file) { + return noolParser.parse(source, file); + }; +})(); - function meridiem(token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem( - this.hours(), - this.minutes(), - lowercase - ); - }); - } +/***/ }), - meridiem('a', true); - meridiem('A', false); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js": +/*!****************************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js ***! + \****************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - // ALIASES +"use strict"; - addUnitAlias('hour', 'h'); - // PRIORITY - addUnitPriority('hour', 13); +var tokens = __webpack_require__(/*! ./tokens.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + keys = extd.hash.keys, + utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"); - // PARSING +var parse = function (src, keywords, context) { + var orig = src; + src = src.replace(/\/\/(.*)/g, "").replace(/\r\n|\r|\n/g, " "); - function matchMeridiem(isStrict, locale) { - return locale._meridiemParse; + var blockTypes = new RegExp("^(" + keys(keywords).join("|") + ")"), index; + while (src && (index = utils.findNextTokenIndex(src)) !== -1) { + src = src.substr(index); + var blockType = src.match(blockTypes); + if (blockType !== null) { + blockType = blockType[1]; + if (blockType in keywords) { + try { + src = keywords[blockType](src, context, parse).replace(/^\s*|\s*$/g, ""); + } catch (e) { + throw new Error("Invalid " + blockType + " definition \n" + e.message + "; \nstarting at : " + orig); + } + } else { + throw new Error("Unknown token" + blockType); + } + } else { + throw new Error("Error parsing " + src); + } } +}; - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - addRegexToken('kk', match1to2, match2); - - addRegexToken('hmm', match3to4); - addRegexToken('hmmss', match5to6); - addRegexToken('Hmm', match3to4); - addRegexToken('Hmmss', match5to6); - - addParseToken(['H', 'HH'], HOUR); - addParseToken(['k', 'kk'], function (input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; - }); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4, - pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - }); - addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4, - pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - }); +exports.parse = function (src, file) { + var context = {define: [], rules: [], scope: [], loaded: [], file: file}; + parse(src, tokens, context); + return context; +}; - // LOCALES - function localeIsPM(input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return (input + '').toLowerCase().charAt(0) === 'p'; - } - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, - // Setting the hour should keep the time, because the user explicitly - // specified which hour they want. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - getSetHour = makeGetSet('Hours', true); +/***/ }), - function localeMeridiem(hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, - relativeTime: defaultRelativeTime, +"use strict"; - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, - week: defaultLocaleWeek, +var utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"), + fs = __webpack_require__(/*! fs */ "fs"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + filter = extd.filter, + indexOf = extd.indexOf, + predicates = ["not", "or", "exists"], + predicateRegExp = new RegExp("^(" + predicates.join("|") + ") *\\((.*)\\)$", "m"), + predicateBeginExp = new RegExp(" *(" + predicates.join("|") + ") *\\(", "g"); - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, +var isWhiteSpace = function (str) { + return str.replace(/[\s|\n|\r|\t]/g, "").length === 0; +}; - meridiemParse: defaultLocaleMeridiemParse, - }; +var joinFunc = function (m, str) { + return "; " + str; +}; - // internal storage for locale config files - var locales = {}, - localeFamilies = {}, - globalLocale; +var splitRuleLineByPredicateExpressions = function (ruleLine) { + var str = ruleLine.replace(/,\s*(\$?\w+\s*:)/g, joinFunc); + var parts = filter(str.split(predicateBeginExp), function (str) { + return str !== ""; + }), + l = parts.length, ret = []; - function commonPrefix(arr1, arr2) { - var i, - minl = Math.min(arr1.length, arr2.length); - for (i = 0; i < minl; i += 1) { - if (arr1[i] !== arr2[i]) { - return i; + if (l) { + for (var i = 0; i < l; i++) { + if (indexOf(predicates, parts[i]) !== -1) { + ret.push([parts[i], "(", parts[++i].replace(/, *$/, "")].join("")); + } else { + ret.push(parts[i].replace(/, *$/, "")); } } - return minl; - } - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; + } else { + return str; } + return ret.join(";"); +}; - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, - j, - next, - locale, - split; +var ruleTokens = { - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if ( - next && - next.length >= j && - commonPrefix(split, next) >= j - 1 - ) { - //the next array item is better than a shallower substring of this one - break; + salience: (function () { + var salienceRegexp = /^(salience|priority)\s*:\s*(-?\d+)\s*[,;]?/; + return function (src, context) { + if (salienceRegexp.test(src)) { + var parts = src.match(salienceRegexp), + priority = parseInt(parts[2], 10); + if (!isNaN(priority)) { + context.options.priority = priority; + } else { + throw new Error("Invalid salience/priority " + parts[2]); } - j--; - } - i++; - } - return globalLocale; - } - - function loadLocale(name) { - var oldLocale = null, - aliasedRequire; - // TODO: Find a better way to register and load all the locales in Node - if ( - locales[name] === undefined && - "object" !== 'undefined' && - module && - module.exports - ) { - try { - oldLocale = globalLocale._abbr; - aliasedRequire = undefined; - __webpack_require__("./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name); - getSetGlobalLocale(oldLocale); - } catch (e) { - // mark as not found to avoid repeating expensive file require call causing high CPU - // when trying to find en-US, en_US, en-us for every format call - locales[name] = null; // null means not found - } - } - return locales[name]; - } - - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - function getSetGlobalLocale(key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); + return src.replace(parts[0], ""); } else { - data = defineLocale(key, values); + throw new Error("invalid format"); } + }; + })(), - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } else { - if (typeof console !== 'undefined' && console.warn) { - //warn user if arguments are passed but the locale could not be set - console.warn( - 'Locale ' + key + ' not found. Did you forget to load it?' - ); + agendaGroup: (function () { + var agendaGroupRegexp = /^(agenda-group|agendaGroup)\s*:\s*([a-zA-Z_$][0-9a-zA-Z_$]*|"[^"]*"|'[^']*')\s*[,;]?/; + return function (src, context) { + if (agendaGroupRegexp.test(src)) { + var parts = src.match(agendaGroupRegexp), + agendaGroup = parts[2]; + if (agendaGroup) { + context.options.agendaGroup = agendaGroup.replace(/^["']|["']$/g, ""); + } else { + throw new Error("Invalid agenda-group " + parts[2]); } + return src.replace(parts[0], ""); + } else { + throw new Error("invalid format"); } - } - - return globalLocale._abbr; - } + }; + })(), - function defineLocale(name, config) { - if (config !== null) { - var locale, - parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple( - 'defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + - 'an existing locale. moment.defineLocale(localeName, ' + - 'config) should only be used for creating a new locale ' + - 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' - ); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; + autoFocus: (function () { + var autoFocusRegexp = /^(auto-focus|autoFocus)\s*:\s*(true|false)\s*[,;]?/; + return function (src, context) { + if (autoFocusRegexp.test(src)) { + var parts = src.match(autoFocusRegexp), + autoFocus = parts[2]; + if (autoFocus) { + context.options.autoFocus = autoFocus === "true" ? true : false; } else { - locale = loadLocale(config.parentLocale); - if (locale != null) { - parentConfig = locale._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config, - }); - return null; - } + throw new Error("Invalid auto-focus " + parts[2]); } + return src.replace(parts[0], ""); + } else { + throw new Error("invalid format"); } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); + }; + })(), - if (localeFamilies[name]) { - localeFamilies[name].forEach(function (x) { - defineLocale(x.name, x.config); - }); - } + "agenda-group": function () { + return this.agendaGroup.apply(this, arguments); + }, - // backwards compat for now: also set the locale - // make sure we set the locale AFTER all child locales have been - // created, so we won't end up with the child locale set. - getSetGlobalLocale(name); + "auto-focus": function () { + return this.autoFocus.apply(this, arguments); + }, - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - } + priority: function () { + return this.salience.apply(this, arguments); + }, - function updateLocale(name, config) { - if (config != null) { - var locale, - tmpLocale, - parentConfig = baseConfig; + when: (function () { + /*jshint evil:true*/ - if (locales[name] != null && locales[name].parentLocale != null) { - // Update existing child locale in-place to avoid memory-leaks - locales[name].set(mergeConfigs(locales[name]._config, config)); - } else { - // MERGE - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; - } - config = mergeConfigs(parentConfig, config); - if (tmpLocale == null) { - // updateLocale is called for creating a new locale - // Set abbr so it will have a name (getters return - // undefined otherwise). - config.abbr = name; + var ruleRegExp = /^(\$?\w+) *: *(\w+)(.*)/; + + var constraintRegExp = /(\{ *(?:["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']? *(?:, *["']?\$?\w+["']?\s*:\s*["']?\$?\w+["']?)*)+ *\})/; + var fromRegExp = /(\bfrom\s+.*)/; + var parseRules = function (str) { + var rules = []; + var ruleLines = str.split(";"), l = ruleLines.length, ruleLine; + for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\s*|\s*$/g, "").replace(/\n/g, "")); i++) { + if (!isWhiteSpace(ruleLine)) { + var rule = []; + if (predicateRegExp.test(ruleLine)) { + var m = ruleLine.match(predicateRegExp); + var pred = m[1].replace(/^\s*|\s*$/g, ""); + rule.push(pred); + ruleLine = m[2].replace(/^\s*|\s*$/g, ""); + if (pred === "or") { + rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine))); + rules.push(rule); + continue; + } + + } + var parts = ruleLine.match(ruleRegExp); + if (parts && parts.length) { + rule.push(parts[2], parts[1]); + var constraints = parts[3].replace(/^\s*|\s*$/g, ""); + var hashParts = constraints.match(constraintRegExp), from = null, fromMatch; + if (hashParts) { + var hash = hashParts[1], constraint = constraints.replace(hash, ""); + if (fromRegExp.test(constraint)) { + fromMatch = constraint.match(fromRegExp); + from = fromMatch[0]; + constraint = constraint.replace(fromMatch[0], ""); + } + if (constraint) { + rule.push(constraint.replace(/^\s*|\s*$/g, "")); + } + if (hash) { + rule.push(eval("(" + hash.replace(/(\$?\w+)\s*:\s*(\$?\w+)/g, '"$1" : "$2"') + ")")); + } + } else if (constraints && !isWhiteSpace(constraints)) { + if (fromRegExp.test(constraints)) { + fromMatch = constraints.match(fromRegExp); + from = fromMatch[0]; + constraints = constraints.replace(fromMatch[0], ""); + } + rule.push(constraints); + } + if (from) { + rule.push(from); + } + rules.push(rule); + } else { + throw new Error("Invalid constraint " + ruleLine); + } } - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; } + return rules; + }; - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - } else { - // pass null for config to unupdate, useful for tests - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - if (name === getSetGlobalLocale()) { - getSetGlobalLocale(name); + return function (orig, context) { + var src = orig.replace(/^when\s*/, "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + context.constraints = parseRules(body.replace(/^\{\s*|\}\s*$/g, "")); + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); + } + }; + })(), + + then: (function () { + return function (orig, context) { + if (!context.action) { + var src = orig.replace(/^then\s*/, "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + if (!context.action) { + context.action = body.replace(/^\{\s*|\}\s*$/g, ""); } - } else if (locales[name] != null) { - delete locales[name]; + if (!isWhiteSpace(src)) { + throw new Error("Error parsing then block " + orig); + } + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); } + } else { + throw new Error("action already defined for rule" + context.name); } - } - return locales[name]; - } - - // returns locale data - function getLocale(key) { - var locale; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + }; + })() +}; - if (!key) { - return globalLocale; +var topLevelTokens = { + "/": function (orig) { + if (orig.match(/^\/\*/)) { + // Block Comment parse + return orig.replace(/\/\*.*?\*\//, ""); + } else { + return orig; } + }, - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; + "define": function (orig, context) { + var src = orig.replace(/^define\s*/, ""); + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/); + if (name) { + src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + name = name[1]; + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + //should + context.define.push({name: name, properties: "(" + body + ")"}); + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); } - key = [key]; + } else { + throw new Error("missing name"); } + }, - return chooseLocale(key); - } - - function listLocales() { - return keys(locales); - } - - function checkOverflow(m) { - var overflow, - a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 - ? MONTH - : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) - ? DATE - : a[HOUR] < 0 || - a[HOUR] > 24 || - (a[HOUR] === 24 && - (a[MINUTE] !== 0 || - a[SECOND] !== 0 || - a[MILLISECOND] !== 0)) - ? HOUR - : a[MINUTE] < 0 || a[MINUTE] > 59 - ? MINUTE - : a[SECOND] < 0 || a[SECOND] > 59 - ? SECOND - : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 - ? MILLISECOND - : -1; - - if ( - getParsingFlags(m)._overflowDayOfYear && - (overflow < YEAR || overflow > DATE) - ) { - overflow = DATE; - } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; - } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; + "import": function (orig, context, parse) { + if (typeof window !== 'undefined') { + throw new Error("import cannot be used in a browser"); + } + var src = orig.replace(/^import\s*/, ""); + if (utils.findNextToken(src) === "(") { + var file = utils.getParamList(src); + src = src.replace(file, "").replace(/^\s*|\s*$/g, ""); + utils.findNextToken(src) === ";" && (src = src.replace(/\s*;/, "")); + file = file.replace(/[\(|\)]/g, "").split(","); + if (file.length === 1) { + file = utils.resolve(context.file || process.cwd(), file[0].replace(/["|']/g, "")); + if (indexOf(context.loaded, file) === -1) { + var origFile = context.file; + context.file = file; + parse(fs.readFileSync(file, "utf8"), topLevelTokens, context); + context.loaded.push(file); + context.file = origFile; + } + return src; + } else { + throw new Error("import accepts a single file"); } - - getParsingFlags(m).overflow = overflow; + } else { + throw new Error("unexpected token : expected : '(' found : '" + utils.findNextToken(src) + "'"); } - return m; - } - - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/], - ['YYYYMM', /\d{6}/, false], - ['YYYY', /\d{4}/, false], - ], - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/], - ], - aspNetJsonRegex = /^\/?Date\((-?\d+)/i, - // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 - rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, - obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60, - }; - - // date from iso format - function configFromISO(config) { - var i, - l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, - dateFormat, - timeFormat, - tzFormat; - - if (match) { - getParsingFlags(config).iso = true; + }, - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; - } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - // match[2] should be 'T' or space - timeFormat = (match[2] || ' ') + isoTimes[i][0]; - break; + //define a global + "global": function (orig, context) { + var src = orig.replace(/^global\s*/, ""); + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\s*)/); + if (name) { + src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "=") { + name = name[1].replace(/^\s+|\s+$/g, ''); + var fullbody = utils.getTokensBetween(src, "=", ";", true).join(""); + var body = fullbody.substring(1, fullbody.length - 1); + body = body.replace(/^\s+|\s+$/g, ''); + if (/^require\(/.test(body)) { + var file = utils.getParamList(body.replace("require")).replace(/[\(|\)]/g, "").split(","); + if (file.length === 1) { + //handle relative require calls + file = file[0].replace(/["|']/g, ""); + body = ["require('", utils.resolve(context.file || process.cwd(), file) , "')"].join(""); } } - if (timeFormat == null) { - config._isValid = false; - return; - } - } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; + context.scope.push({name: name, body: body}); + src = src.replace(fullbody, ""); + return src; + } else { + throw new Error("unexpected token : expected : '=' found : '" + utils.findNextToken(src) + "'"); } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = 'Z'; + } else { + throw new Error("missing name"); + } + }, + + //define a function + "function": function (orig, context) { + var src = orig.replace(/^function\s*/, ""); + //parse the function name + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\s*/); + if (name) { + src = src.replace(name[0], ""); + if (utils.findNextToken(src) === "(") { + name = name[1]; + var params = utils.getParamList(src); + src = src.replace(params, "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + //should + context.scope.push({name: name, body: "function" + params + body}); + return src; } else { - config._isValid = false; - return; + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); } + } else { + throw new Error("unexpected token : expected : '(' found : '" + utils.findNextToken(src) + "'"); } - config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); - configFromStringAndFormat(config); } else { - config._isValid = false; + throw new Error("missing name"); } - } - - function extractFromRFC2822Strings( - yearStr, - monthStr, - dayStr, - hourStr, - minuteStr, - secondStr - ) { - var result = [ - untruncateYear(yearStr), - defaultLocaleMonthsShort.indexOf(monthStr), - parseInt(dayStr, 10), - parseInt(hourStr, 10), - parseInt(minuteStr, 10), - ]; + }, - if (secondStr) { - result.push(parseInt(secondStr, 10)); + "rule": function (orig, context, parse) { + var src = orig.replace(/^rule\s*/, ""); + var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|"[^"]*"|'[^']*')/); + if (name) { + src = src.replace(name[0], "").replace(/^\s*|\s*$/g, ""); + if (utils.findNextToken(src) === "{") { + name = name[1].replace(/^["']|["']$/g, ""); + var rule = {name: name, options: {}, constraints: null, action: null}; + var body = utils.getTokensBetween(src, "{", "}", true).join(""); + src = src.replace(body, ""); + parse(body.replace(/^\{\s*|\}\s*$/g, ""), ruleTokens, rule); + context.rules.push(rule); + return src; + } else { + throw new Error("unexpected token : expected : '{' found : '" + utils.findNextToken(src) + "'"); + } + } else { + throw new Error("missing name"); } - return result; } +}; +module.exports = topLevelTokens; - function untruncateYear(yearStr) { - var year = parseInt(yearStr, 10); - if (year <= 49) { - return 2000 + year; - } else if (year <= 999) { - return 1900 + year; - } - return year; - } - function preprocessRFC2822(s) { - // Remove comments and folding whitespace and replace multiple-spaces with a single space - return s - .replace(/\([^)]*\)|[\n\t]/g, ' ') - .replace(/(\s\s+)/g, ' ') - .replace(/^\s\s*/, '') - .replace(/\s\s*$/, ''); - } - function checkWeekday(weekdayStr, parsedInput, config) { - if (weekdayStr) { - // TODO: Replace the vanilla JS Date object with an independent day-of-week check. - var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), - weekdayActual = new Date( - parsedInput[0], - parsedInput[1], - parsedInput[2] - ).getDay(); - if (weekdayProvided !== weekdayActual) { - getParsingFlags(config).weekdayMismatch = true; - config._isValid = false; - return false; - } - } - return true; - } +/***/ }), - function calculateOffset(obsOffset, militaryOffset, numOffset) { - if (obsOffset) { - return obsOffsets[obsOffset]; - } else if (militaryOffset) { - // the only allowed military tz is Z - return 0; - } else { - var hm = parseInt(numOffset, 10), - m = hm % 100, - h = (hm - m) / 100; - return h * 60 + m; - } - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - // date and time from ref 2822 format - function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)), - parsedArray; - if (match) { - parsedArray = extractFromRFC2822Strings( - match[4], - match[3], - match[2], - match[5], - match[6], - match[7] - ); - if (!checkWeekday(match[1], parsedArray, config)) { - return; - } +"use strict"; - config._a = parsedArray; - config._tzm = calculateOffset(match[8], match[9], match[10]); - config._d = createUTCDate.apply(null, config._a); - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); +var path = __webpack_require__(/*! path */ "path"); +var WHITE_SPACE_REG = /[\s|\n|\r|\t]/, + pathSep = path.sep || ( process.platform === 'win32' ? '\\' : '/' ); - getParsingFlags(config).rfc2822 = true; - } else { - config._isValid = false; +var TOKEN_INVERTS = { + "{": "}", + "}": "{", + "(": ")", + ")": "(", + "[": "]" +}; + +var getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) { + var depth = 0, ret = []; + if (!start) { + start = TOKEN_INVERTS[stop]; + depth = 1; + } + if (!stop) { + stop = TOKEN_INVERTS[start]; + } + str = Object(str); + var startPushing = false, token, cursor = 0, found = false; + while ((token = str.charAt(cursor++))) { + if (token === start) { + depth++; + if (!startPushing) { + startPushing = true; + if (includeStartEnd) { + ret.push(token); + } + } else { + ret.push(token); + } + } else if (token === stop && cursor) { + depth--; + if (depth === 0) { + if (includeStartEnd) { + ret.push(token); + } + found = true; + break; + } + ret.push(token); + } else if (startPushing) { + ret.push(token); } } + if (!found) { + throw new Error("Unable to match " + start + " in " + str); + } + return ret; +}; - // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } +exports.getParamList = function (str) { + return getTokensBetween(str, "(", ")", true).join(""); +}; - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } +exports.resolve = function (from, to) { + if (process.platform === 'win32') { + to = to.replace(/\//g, '\\'); + } + if (path.extname(from) !== '') { + from = path.dirname(from); + } + if (to.split(pathSep).length === 1) { + return to; + } + return path.resolve(from, to).replace(/\\/g, '/'); - configFromRFC2822(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } +}; - if (config._strict) { - config._isValid = false; - } else { - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); +var findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) { + startIndex = startIndex || 0; + endIndex = endIndex || str.length; + var ret = -1, l = str.length; + if (!endIndex || endIndex > l) { + endIndex = l; + } + for (; startIndex < endIndex; startIndex++) { + var c = str.charAt(startIndex); + if (!WHITE_SPACE_REG.test(c)) { + ret = startIndex; + break; } } + return ret; +}; - hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); +exports.findNextToken = function (str, startIndex, endIndex) { + return str.charAt(findNextTokenIndex(str, startIndex, endIndex)); +}; - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } +/***/ }), - function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [ - nowValue.getUTCFullYear(), - nowValue.getUTCMonth(), - nowValue.getUTCDate(), - ]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray(config) { - var i, - date, - input = [], - currentDate, - expectedWeekday, - yearToUse; +"use strict"; - if (config._d) { - return; - } +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isEmpty = extd.isEmpty, + merge = extd.merge, + forEach = extd.forEach, + declare = extd.declare, + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + constraint = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + EqualityConstraint = constraint.EqualityConstraint, + FromConstraint = constraint.FromConstraint; - currentDate = currentDateArray(config); +var id = 0; +var Pattern = declare({}); - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } +var ObjectPattern = Pattern.extend({ + instance: { + constructor: function (type, alias, conditions, store, options) { + options = options || {}; + this.id = id++; + this.type = type; + this.alias = alias; + this.conditions = conditions; + this.pattern = options.pattern; + var constraints = [new constraint.ObjectConstraint(type)]; + var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options)); + if (constrnts.length) { + constraints = constraints.concat(constrnts); + } else { + var cnstrnt = new constraint.TrueConstraint(); + constraints.push(cnstrnt); + } + if (store && !isEmpty(store)) { + var atm = new constraint.HashConstraint(store); + constraints.push(atm); + } - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + forEach(constraints, function (constraint) { + constraint.set("alias", alias); + }); + this.constraints = constraints; + }, - if ( - config._dayOfYear > daysInYear(yearToUse) || - config._dayOfYear === 0 - ) { - getParsingFlags(config)._overflowDayOfYear = true; + getSpecificity: function () { + var constraints = this.constraints, specificity = 0; + for (var i = 0, l = constraints.length; i < l; i++) { + if (constraints[i] instanceof EqualityConstraint) { + specificity++; + } } + return specificity; + }, - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + hasConstraint: function (type) { + return extd.some(this.constraints, function (c) { + return c instanceof type; + }); + }, - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + hashCode: function () { + return [this.type, this.alias, extd.format("%j", this.conditions)].join(":"); + }, - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = - config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; + toString: function () { + return extd.format("%j", this.constraints); } + } +}).as(exports, "ObjectPattern"); - // Check for 24:00:00.000 - if ( - config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0 - ) { - config._nextDay = true; - config._a[HOUR] = 0; - } +var FromPattern = ObjectPattern.extend({ + instance: { + constructor: function (type, alias, conditions, store, from, options) { + this._super([type, alias, conditions, store, options]); + this.from = new FromConstraint(from, options); + }, - config._d = (config._useUTC ? createUTCDate : createDate).apply( - null, - input - ); - expectedWeekday = config._useUTC - ? config._d.getUTCDay() - : config._d.getDay(); + hasConstraint: function (type) { + return extd.some(this.constraints, function (c) { + return c instanceof type; + }); + }, - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + getSpecificity: function () { + return this._super(arguments) + 1; + }, - if (config._nextDay) { - config._a[HOUR] = 24; - } + hashCode: function () { + return [this.type, this.alias, extd.format("%j", this.conditions), this.from.from].join(":"); + }, - // check for mismatching day of week - if ( - config._w && - typeof config._w.d !== 'undefined' && - config._w.d !== expectedWeekday - ) { - getParsingFlags(config).weekdayMismatch = true; + toString: function () { + return extd.format("%j from %s", this.constraints, this.from.from); } } +}).as(exports, "FromPattern"); - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; +FromPattern.extend().as(exports, "FromNotPattern"); +ObjectPattern.extend().as(exports, "NotPattern"); +ObjectPattern.extend().as(exports, "ExistsPattern"); +FromPattern.extend().as(exports, "FromExistsPattern"); - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults( - w.GG, - config._a[YEAR], - weekOfYear(createLocal(), 1, 4).year - ); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; +Pattern.extend({ - curWeek = weekOfYear(createLocal(), dow, doy); + instance: { + constructor: function (left, right) { + this.id = id++; + this.leftPattern = left; + this.rightPattern = right; + }, - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + hashCode: function () { + return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(":"); + }, - // Default to current week. - week = defaults(w.w, curWeek.week); + getSpecificity: function () { + return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity(); + }, - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from beginning of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to beginning of week - weekday = dow; + getters: { + constraints: function () { + return this.leftPattern.constraints.concat(this.rightPattern.constraints); } } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } } - // constant that refers to the ISO standard - hooks.ISO_8601 = function () {}; +}).as(exports, "CompositePattern"); - // constant that refers to the RFC 2822 form - hooks.RFC_2822 = function () {}; - // date from string and format string - function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; +var InitialFact = declare({ + instance: { + constructor: function () { + this.id = id++; + this.recency = 0; } - if (config._f === hooks.RFC_2822) { - configFromRFC2822(config); - return; + } +}).as(exports, "InitialFact"); + +ObjectPattern.extend({ + instance: { + constructor: function () { + this._super([InitialFact, "__i__", [], {}]); + }, + + assert: function () { + return true; } - config._a = []; - getParsingFlags(config).empty = true; + } +}).as(exports, "InitialFactPattern"); - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, - parsedInput, - tokens, - token, - skipped, - stringLength = string.length, - totalParsedInputLength = 0, - era; - tokens = - expandFormat(config._f, config._locale).match(formattingTokens) || []; - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || - [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice( - string.indexOf(parsedInput) + parsedInput.length - ); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = - stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - // clear _12h flag if hour is <= 12 - if ( - config._a[HOUR] <= 12 && - getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0 - ) { - getParsingFlags(config).bigHour = undefined; - } +/***/ }), - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - // handle meridiem - config._a[HOUR] = meridiemFixWrap( - config._locale, - config._a[HOUR], - config._meridiem - ); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - // handle era - era = getParsingFlags(config).era; - if (era !== null) { - config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); - } +"use strict"; - configFromArray(config); - checkOverflow(config); +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + isArray = extd.isArray, + Promise = extd.Promise, + declare = extd.declare, + isHash = extd.isHash, + isString = extd.isString, + format = extd.format, + parser = __webpack_require__(/*! ./parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + pattern = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + ObjectPattern = pattern.ObjectPattern, + FromPattern = pattern.FromPattern, + NotPattern = pattern.NotPattern, + ExistsPattern = pattern.ExistsPattern, + FromNotPattern = pattern.FromNotPattern, + FromExistsPattern = pattern.FromExistsPattern, + CompositePattern = pattern.CompositePattern; + +var parseConstraint = function (constraint) { + if (typeof constraint === 'function') { + // No parsing is needed for constraint functions + return constraint; } + return parser.parseConstraint(constraint); +}; - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; +var parseExtra = extd + .switcher() + .isUndefinedOrNull(function () { + return null; + }) + .isLike(/^from +/, function (s) { + return {from: s.replace(/^from +/, "").replace(/^\s*|\s*$/g, "")}; + }) + .def(function (o) { + throw new Error("invalid rule constraint option " + o); + }) + .switcher(); - if (meridiem == null) { - // nothing to do - return hour; +var normailizeConstraint = extd + .switcher() + .isLength(1, function (c) { + throw new Error("invalid rule constraint " + format("%j", [c])); + }) + .isLength(2, function (c) { + c.push("true"); + return c; + }) + //handle case where c[2] is a hash rather than a constraint string + .isLength(3, function (c) { + if (isString(c[2]) && /^from +/.test(c[2])) { + var extra = c[2]; + c.splice(2, 0, "true"); + c[3] = null; + c[4] = parseExtra(extra); + } else if (isHash(c[2])) { + c.splice(2, 0, "true"); } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; + return c; + }) + //handle case where c[3] is a from clause rather than a hash for references + .isLength(4, function (c) { + if (isString(c[3])) { + c.splice(3, 0, null); + c[4] = parseExtra(c[4]); } - } - - // date from string and array of format strings - function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - scoreToBeat, - i, - currentScore, - validFormatFound, - bestFormatIsValid = false; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; + return c; + }) + .def(function (c) { + if (c.length === 5) { + c[4] = parseExtra(c[4]); } + return c; + }) + .switcher(); - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - validFormatFound = false; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); +var getParamType = function getParamType(type, scope) { + scope = scope || {}; + var getParamTypeSwitch = extd + .switcher() + .isEq("string", function () { + return String; + }) + .isEq("date", function () { + return Date; + }) + .isEq("array", function () { + return Array; + }) + .isEq("boolean", function () { + return Boolean; + }) + .isEq("regexp", function () { + return RegExp; + }) + .isEq("number", function () { + return Number; + }) + .isEq("object", function () { + return Object; + }) + .isEq("hash", function () { + return Object; + }) + .def(function (param) { + throw new TypeError("invalid param type " + param); + }) + .switcher(); - if (isValid(tempConfig)) { - validFormatFound = true; + var _getParamType = extd + .switcher() + .isString(function (param) { + var t = scope[param]; + if (!t) { + return getParamTypeSwitch(param.toLowerCase()); + } else { + return t; } + }) + .isFunction(function (func) { + return func; + }) + .deepEqual([], function () { + return Array; + }) + .def(function (param) { + throw new Error("invalid param type " + param); + }) + .switcher(); - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; + return _getParamType(type); +}; - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; +var parsePattern = extd + .switcher() + .containsAt("or", 0, function (condition) { + condition.shift(); + return extd(condition).map(function (cond) { + cond.scope = condition.scope; + return parsePattern(cond); + }).flatten().value(); + }) + .containsAt("not", 0, function (condition) { + condition.shift(); + condition = normailizeConstraint(condition); + if (condition[4] && condition[4].from) { + return [ + new FromNotPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + parseConstraint(condition[4].from), + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } else { + return [ + new NotPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } + }) + .containsAt("exists", 0, function (condition) { + condition.shift(); + condition = normailizeConstraint(condition); + if (condition[4] && condition[4].from) { + return [ + new FromExistsPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + parseConstraint(condition[4].from), + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } else { + return [ + new ExistsPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } + }) + .def(function (condition) { + if (typeof condition === 'function') { + return [condition]; + } + condition = normailizeConstraint(condition); + if (condition[4] && condition[4].from) { + return [ + new FromPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + parseConstraint(condition[4].from), + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } else { + return [ + new ObjectPattern( + getParamType(condition[0], condition.scope), + condition[1] || "m", + parseConstraint(condition[2] || "true"), + condition[3] || {}, + {scope: condition.scope, pattern: condition[2]} + ) + ]; + } + }).switcher(); - getParsingFlags(tempConfig).score = currentScore; +var Rule = declare({ + instance: { + constructor: function (name, options, pattern, cb) { + this.name = name; + this.pattern = pattern; + this.cb = cb; + if (options.agendaGroup) { + this.agendaGroup = options.agendaGroup; + this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false; + } + this.priority = options.priority || options.salience || 0; + }, - if (!bestFormatIsValid) { - if ( - scoreToBeat == null || - currentScore < scoreToBeat || - validFormatFound - ) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - if (validFormatFound) { - bestFormatIsValid = true; - } - } - } else { - if (currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; + fire: function (flow, match) { + var ret = new Promise(), cb = this.cb; + try { + if (cb.length === 3) { + cb.call(flow, match.factHash, flow, ret.resolve); + } else { + ret = cb.call(flow, match.factHash, flow); } + } catch (e) { + ret.errback(e); } + return ret; } - - extend(config, bestMoment || tempConfig); } +}); - function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i), - dayOrDate = i.day === undefined ? i.date : i.day; - config._a = map( - [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], - function (obj) { - return obj && parseInt(obj, 10); - } - ); - - configFromArray(config); +function createRule(name, options, conditions, cb) { + if (isArray(options)) { + cb = conditions; + conditions = options; + } else { + options = options || {}; } - - function createFromConfig(config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; + var isRules = extd.every(conditions, function (cond) { + return isArray(cond); + }); + if (isRules && conditions.length === 1) { + conditions = conditions[0]; + isRules = false; } + var rules = []; + var scope = options.scope || {}; + conditions.scope = scope; + if (isRules) { + var _mergePatterns = function (patt, i) { + if (!patterns[i]) { + patterns[i] = i === 0 ? [] : patterns[i - 1].slice(); + //remove dup + if (i !== 0) { + patterns[i].pop(); + } + patterns[i].push(patt); + } else { + extd(patterns).forEach(function (p) { + p.push(patt); + }); + } - function prepareConfig(config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || getLocale(config._l); + }; + var l = conditions.length, patterns = [], condition; + for (var i = 0; i < l; i++) { + condition = conditions[i]; + condition.scope = scope; + extd.forEach(parsePattern(condition), _mergePatterns); - if (input === null || (format === undefined && input === '')) { - return createInvalid({ nullInput: true }); } + rules = extd.map(patterns, function (patterns) { + var compPat = null; + for (var i = 0; i < patterns.length; i++) { + if (compPat === null) { + compPat = new CompositePattern(patterns[i++], patterns[i]); + } else { + compPat = new CompositePattern(compPat, patterns[i]); + } + } + return new Rule(name, options, compPat, cb); + }); + } else { + rules = extd.map(parsePattern(conditions), function (cond) { + return new Rule(name, options, cond, cb); + }); + } + return rules; +} - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } +exports.createRule = createRule; - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } - if (!isValid(config)) { - config._d = null; - } - return config; - } - function configFromInput(config) { - var input = config._i; - if (isUndefined(input)) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (isObject(input)) { - configFromObject(config); - } else if (isNumber(input)) { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } - } - function createLocalOrUTC(input, format, locale, strict, isUTC) { - var c = {}; +/***/ }), - if (format === true || format === false) { - strict = format; - format = undefined; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } +"use strict"; - if ( - (isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0) - ) { - input = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js"), + LinkedList = __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, + id = 0; - return createFromConfig(c); - } +var Fact = declare({ - function createLocal(input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } + instance: { + constructor: function (obj) { + this.object = obj; + this.recency = 0; + this.id = id++; + }, - var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - } - ), - prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - } - ); + equals: function (fact) { + return fact === this.object; + }, - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } + hashCode: function () { + return this.id; } - return res; } - // TODO: Use [].sort instead? - function min() { - var args = [].slice.call(arguments, 0); +}); - return pickBy('isBefore', args); - } +declare({ - function max() { - var args = [].slice.call(arguments, 0); + instance: { - return pickBy('isAfter', args); - } + constructor: function () { + this.recency = 0; + this.facts = new LinkedList(); + }, - var now = function () { - return Date.now ? Date.now() : +new Date(); - }; + dispose: function () { + this.facts.clear(); + }, - var ordering = [ - 'year', - 'quarter', - 'month', - 'week', - 'day', - 'hour', - 'minute', - 'second', - 'millisecond', - ]; + getFacts: function () { + var head = {next: this.facts.head}, ret = [], i = 0, val; + while ((head = head.next)) { + if (!((val = head.data.object) instanceof InitialFact)) { + ret[i++] = val; + } + } + return ret; + }, - function isDurationValid(m) { - var key, - unitHasDecimal = false, - i; - for (key in m) { - if ( - hasOwnProp(m, key) && - !( - indexOf.call(ordering, key) !== -1 && - (m[key] == null || !isNaN(m[key])) - ) - ) { - return false; + getFactsByType: function (Type) { + var head = {next: this.facts.head}, ret = [], i = 0; + while ((head = head.next)) { + var val = head.data.object; + if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) { + ret[i++] = val; + } + } + return ret; + }, + + getFactHandle: function (o) { + var head = {next: this.facts.head}, ret; + while ((head = head.next)) { + var existingFact = head.data; + if (existingFact.equals(o)) { + return existingFact; + } } - } + if (!ret) { + ret = new Fact(o); + ret.recency = this.recency++; + //this.facts.push(ret); + } + return ret; + }, - for (i = 0; i < ordering.length; ++i) { - if (m[ordering[i]]) { - if (unitHasDecimal) { - return false; // only allow non-integers for smallest unit + modifyFact: function (fact) { + var head = {next: this.facts.head}; + while ((head = head.next)) { + var existingFact = head.data; + if (existingFact.equals(fact)) { + existingFact.recency = this.recency++; + return existingFact; } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { - unitHasDecimal = true; + } + //if we made it here we did not find the fact + throw new Error("the fact to modify does not exist"); + }, + + assertFact: function (fact) { + var ret = new Fact(fact); + ret.recency = this.recency++; + this.facts.push(ret); + return ret; + }, + + retractFact: function (fact) { + var facts = this.facts, head = {next: facts.head}; + while ((head = head.next)) { + var existingFact = head.data; + if (existingFact.equals(fact)) { + facts.remove(head); + return existingFact; } } - } + //if we made it here we did not find the fact + throw new Error("the fact to remove does not exist"); - return true; - } - function isValid$1() { - return this._isValid; + } } - function createInvalid$1() { - return createDuration(NaN); - } +}).as(exports, "WorkingMemory"); - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || normalizedInput.isoWeek || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - this._isValid = isDurationValid(normalizedInput); - // representation for dateAddRemove - this._milliseconds = - +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + weeks * 7; - // It is impossible to translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + quarters * 3 + years * 12; +/***/ }), - this._data = {}; +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js ***! + \***************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - this._locale = getLocale(); +(function () { + "use strict"; + /*global extended isExtended*/ - this._bubble(); - } + function defineObject(extended, is, arr) { - function isDuration(obj) { - return obj instanceof Duration; - } + var deepEqual = is.deepEqual, + isString = is.isString, + isHash = is.isHash, + difference = arr.difference, + hasOwn = Object.prototype.hasOwnProperty, + isFunction = is.isFunction; - function absRound(number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); + function _merge(target, source) { + var name, s; + for (name in source) { + if (hasOwn.call(source, name)) { + s = source[name]; + if (!(name in target) || (target[name] !== s)) { + target[name] = s; + } + } + } + return target; } - } - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ( - (dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) - ) { - diffs++; + function _deepMerge(target, source) { + var name, s, t; + for (name in source) { + if (hasOwn.call(source, name)) { + s = source[name]; + t = target[name]; + if (!deepEqual(t, s)) { + if (isHash(t) && isHash(s)) { + target[name] = _deepMerge(t, s); + } else if (isHash(s)) { + target[name] = _deepMerge({}, s); + } else { + target[name] = s; + } + } + } } + return target; } - return diffs + lengthDiff; - } - // FORMATTING - function offset(token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(), - sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; + function merge(obj) { + if (!obj) { + obj = {}; } - return ( - sign + - zeroFill(~~(offset / 60), 2) + - separator + - zeroFill(~~offset % 60, 2) - ); - }); - } - - offset('Z', ':'); - offset('ZZ', ''); - - // PARSING - - addRegexToken('Z', matchShortOffset); - addRegexToken('ZZ', matchShortOffset); - addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); - }); - - // HELPERS - - // timezone chunker - // '+10:00' > ['10', '00'] - // '-1530' > ['-15', '30'] - var chunkOffset = /([\+\-]|\d\d)/gi; - - function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher), - chunk, - parts, - minutes; - - if (matches === null) { - return null; + for (var i = 1, l = arguments.length; i < l; i++) { + _merge(obj, arguments[i]); + } + return obj; // Object } - chunk = matches[matches.length - 1] || []; - parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - minutes = +(parts[1] * 60) + toInt(parts[2]); - - return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = - (isMoment(input) || isDate(input) - ? input.valueOf() - : createLocal(input).valueOf()) - res.valueOf(); - // Use low-level api, because this fn is low-level api. - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); + function deepMerge(obj) { + if (!obj) { + obj = {}; + } + for (var i = 1, l = arguments.length; i < l; i++) { + _deepMerge(obj, arguments[i]); + } + return obj; // Object } - } - - function getDateOffset(m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset()); - } - - // HOOKS - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - hooks.updateOffset = function () {}; - // MOMENTS - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - function getSetOffset(input, keepLocalTime, keepMinutes) { - var offset = this._offset || 0, - localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; + function extend(parent, child) { + var proto = parent.prototype || parent; + merge(proto, child); + return parent; } - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; - } - } else if (Math.abs(input) < 16 && !keepMinutes) { - input = input * 60; + + function forEach(hash, iterator, scope) { + if (!isHash(hash) || !isFunction(iterator)) { + throw new TypeError(); } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); + var objKeys = keys(hash), key; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + iterator.call(scope || hash, hash[key], key, hash); } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); + return hash; + } + + function filter(hash, iterator, scope) { + if (!isHash(hash) || !isFunction(iterator)) { + throw new TypeError(); } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract( - this, - createDuration(input - offset, 'm'), - 1, - false - ); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; + var objKeys = keys(hash), key, value, ret = {}; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + value = hash[key]; + if (iterator.call(scope || hash, value, key, hash)) { + ret[key] = value; } } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); + return ret; } - } - function getSetZone(input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; + function values(hash) { + if (!isHash(hash)) { + throw new TypeError(); } + var objKeys = keys(hash), ret = []; + for (var i = 0, len = objKeys.length; i < len; ++i) { + ret.push(hash[objKeys[i]]); + } + return ret; + } - this.utcOffset(input, keepLocalTime); - return this; - } else { - return -this.utcOffset(); + function keys(hash) { + if (!isHash(hash)) { + throw new TypeError(); + } + var ret = []; + for (var i in hash) { + if (hasOwn.call(hash, i)) { + ret.push(i); + } + } + return ret; } - } - function setOffsetToUTC(keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } + function invert(hash) { + if (!isHash(hash)) { + throw new TypeError(); + } + var objKeys = keys(hash), key, ret = {}; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + ret[hash[key]] = key; + } + return ret; + } - function setOffsetToLocal(keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + function toArray(hash) { + if (!isHash(hash)) { + throw new TypeError(); + } + var objKeys = keys(hash), key, ret = []; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + ret.push([key, hash[key]]); + } + return ret; + } - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); + function omit(hash, omitted) { + if (!isHash(hash)) { + throw new TypeError(); + } + if (isString(omitted)) { + omitted = [omitted]; + } + var objKeys = difference(keys(hash), omitted), key, ret = {}; + for (var i = 0, len = objKeys.length; i < len; ++i) { + key = objKeys[i]; + ret[key] = hash[key]; } + return ret; } - return this; - } - function setOffsetToParsedOffset() { - if (this._tzm != null) { - this.utcOffset(this._tzm, false, true); - } else if (typeof this._i === 'string') { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); + var hash = { + forEach: forEach, + filter: filter, + invert: invert, + values: values, + toArray: toArray, + keys: keys, + omit: omit + }; + + + var obj = { + extend: extend, + merge: merge, + deepMerge: deepMerge, + omit: omit + }; + + var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj); + var orig = ret.extend; + ret.extend = function __extend() { + if (arguments.length === 1) { + return orig.extend.apply(ret, arguments); } else { - this.utcOffset(0, true); + extend.apply(null, arguments); } - } - return this; + }; + return ret; + } - function hasAlignedHourOffset(input) { - if (!this.isValid()) { - return false; + if (true) { + if ( true && module.exports) { + module.exports = defineObject(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")); + } - input = input ? createLocal(input).utcOffset() : 0; + } else {} - return (this.utcOffset() - input) % 60 === 0; - } +}).call(this); - function isDaylightSavingTime() { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); - } - function isDaylightSavingTimeShifted() { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } - var c = {}, - other; - copyConfig(c, this); - c = prepareConfig(c); - if (c._a) { - other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = - this.isValid() && compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - return this._isDSTShifted; - } - function isLocal() { - return this.isValid() ? !this._isUTC : false; - } - function isUtcOffset() { - return this.isValid() ? this._isUTC : false; - } +/***/ }), - function isUtc() { - return this.isValid() ? this._isUTC && this._offset === 0 : false; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js ***! + \****************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - // ASP.NET json date format regex - var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - // and further modified to allow for strings containing both week and day - isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; +(function () { + "use strict"; + /*global setImmediate, MessageChannel*/ - function createDuration(input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - if (isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months, + function definePromise(declare, extended, array, is, fn, args) { + + var forEach = array.forEach, + isUndefinedOrNull = is.isUndefinedOrNull, + isArray = is.isArray, + isFunction = is.isFunction, + isBoolean = is.isBoolean, + bind = fn.bind, + bindIgnore = fn.bindIgnore, + argsToArray = args.argsToArray; + + function createHandler(fn, promise) { + return function _handler() { + try { + when(fn.apply(null, arguments)) + .addCallback(promise) + .addErrback(promise); + } catch (e) { + promise.errback(e); + } }; - } else if (isNumber(input) || !isNaN(+input)) { - duration = {}; - if (key) { - duration[key] = +input; + } + + var nextTick; + if (typeof setImmediate === "function") { + // In IE10, or use https://github.com/NobleJS/setImmediate + if (typeof window !== "undefined") { + nextTick = setImmediate.bind(window); } else { - duration.milliseconds = +input; + nextTick = setImmediate; } - } else if ((match = aspNetRegex.exec(input))) { - sign = match[1] === '-' ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match + } else if (typeof process !== "undefined") { + // node + nextTick = function (cb) { + process.nextTick(cb); }; - } else if ((match = isoRegex.exec(input))) { - sign = match[1] === '-' ? -1 : 1; - duration = { - y: parseIso(match[2], sign), - M: parseIso(match[3], sign), - w: parseIso(match[4], sign), - d: parseIso(match[5], sign), - h: parseIso(match[6], sign), - m: parseIso(match[7], sign), - s: parseIso(match[8], sign), + } else if (typeof MessageChannel !== "undefined") { + // modern browsers + // http://www.nonblocking.io/2011/06/windownexttick.html + var channel = new MessageChannel(); + // linked list of tasks (single, with head node) + var head = {}, tail = head; + channel.port1.onmessage = function () { + head = head.next; + var task = head.task; + delete head.task; + task(); + }; + nextTick = function (task) { + tail = tail.next = {task: task}; + channel.port2.postMessage(0); + }; + } else { + // old browsers + nextTick = function (task) { + setTimeout(task, 0); }; - } else if (duration == null) { - // checks for null or undefined - duration = {}; - } else if ( - typeof duration === 'object' && - ('from' in duration || 'to' in duration) - ) { - diffRes = momentsDifference( - createLocal(duration.from), - createLocal(duration.to) - ); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; } - if (isDuration(input) && hasOwnProp(input, '_isValid')) { - ret._isValid = input._isValid; - } - return ret; - } + //noinspection JSHint + var Promise = declare({ + instance: { + __fired: false, - createDuration.fn = Duration.prototype; - createDuration.invalid = createInvalid$1; + __results: null, - function parseIso(inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - } + __error: null, - function positiveMomentsDifference(base, other) { - var res = {}; + __errorCbs: null, - res.months = - other.month() - base.month() + (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } + __cbs: null, - res.milliseconds = +other - +base.clone().add(res.months, 'M'); + constructor: function () { + this.__errorCbs = []; + this.__cbs = []; + fn.bindAll(this, ["callback", "errback", "resolve", "classic", "__resolve", "addCallback", "addErrback"]); + }, - return res; - } + __resolve: function () { + if (!this.__fired) { + this.__fired = true; + var cbs = this.__error ? this.__errorCbs : this.__cbs, + len = cbs.length, i, + results = this.__error || this.__results; + for (i = 0; i < len; i++) { + this.__callNextTick(cbs[i], results); + } - function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return { milliseconds: 0, months: 0 }; - } + } + }, - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } + __callNextTick: function (cb, results) { + nextTick(function () { + cb.apply(this, results); + }); + }, - return res; - } + addCallback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.callback) { + cb = cb.callback; + } + if (this.__fired && this.__results) { + this.__callNextTick(cb, this.__results); + } else { + this.__cbs.push(cb); + } + } + return this; + }, - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple( - name, - 'moment().' + - name + - '(period, number) is deprecated. Please use moment().' + - name + - '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' - ); - tmp = val; - val = period; - period = tmp; - } - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; - } + addErrback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.errback) { + cb = cb.errback; + } + if (this.__fired && this.__error) { + this.__callNextTick(cb, this.__error); + } else { + this.__errorCbs.push(cb); + } + } + return this; + }, - function addSubtract(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = absRound(duration._days), - months = absRound(duration._months); + callback: function (args) { + if (!this.__fired) { + this.__results = arguments; + this.__resolve(); + } + return this.promise(); + }, - if (!mom.isValid()) { - // No op - return; - } + errback: function (args) { + if (!this.__fired) { + this.__error = arguments; + this.__resolve(); + } + return this.promise(); + }, - updateOffset = updateOffset == null ? true : updateOffset; + resolve: function (err, args) { + if (err) { + this.errback(err); + } else { + this.callback.apply(this, argsToArray(arguments, 1)); + } + return this; + }, - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); - } - if (days) { - set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); - } - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } - } + classic: function (cb) { + if ("function" === typeof cb) { + this.addErrback(function (err) { + cb(err); + }); + this.addCallback(function () { + cb.apply(this, [null].concat(argsToArray(arguments))); + }); + } + return this; + }, - var add = createAdder(1, 'add'), - subtract = createAdder(-1, 'subtract'); + then: function (callback, errback) { - function isString(input) { - return typeof input === 'string' || input instanceof String; - } + var promise = new Promise(), errorHandler = promise; + if (isFunction(errback)) { + errorHandler = createHandler(errback, promise); + } + this.addErrback(errorHandler); + if (isFunction(callback)) { + this.addCallback(createHandler(callback, promise)); + } else { + this.addCallback(promise); + } - // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined - function isMomentInput(input) { - return ( - isMoment(input) || - isDate(input) || - isString(input) || - isNumber(input) || - isNumberOrStringArray(input) || - isMomentInputObject(input) || - input === null || - input === undefined - ); - } + return promise.promise(); + }, - function isMomentInputObject(input) { - var objectTest = isObject(input) && !isObjectEmpty(input), - propertyTest = false, - properties = [ - 'years', - 'year', - 'y', - 'months', - 'month', - 'M', - 'days', - 'day', - 'd', - 'dates', - 'date', - 'D', - 'hours', - 'hour', - 'h', - 'minutes', - 'minute', - 'm', - 'seconds', - 'second', - 's', - 'milliseconds', - 'millisecond', - 'ms', - ], - i, - property; + both: function (callback) { + return this.then(callback, callback); + }, - for (i = 0; i < properties.length; i += 1) { - property = properties[i]; - propertyTest = propertyTest || hasOwnProp(input, property); - } + promise: function () { + var ret = { + then: bind(this, "then"), + both: bind(this, "both"), + promise: function () { + return ret; + } + }; + forEach(["addCallback", "addErrback", "classic"], function (action) { + ret[action] = bind(this, function () { + this[action].apply(this, arguments); + return ret; + }); + }, this); - return objectTest && propertyTest; - } + return ret; + } - function isNumberOrStringArray(input) { - var arrayTest = isArray(input), - dataTypeTest = false; - if (arrayTest) { - dataTypeTest = - input.filter(function (item) { - return !isNumber(item) && isString(input); - }).length === 0; - } - return arrayTest && dataTypeTest; - } - function isCalendarSpec(input) { - var objectTest = isObject(input) && !isObjectEmpty(input), - propertyTest = false, - properties = [ - 'sameDay', - 'nextDay', - 'lastDay', - 'nextWeek', - 'lastWeek', - 'sameElse', - ], - i, - property; + } + }); - for (i = 0; i < properties.length; i += 1) { - property = properties[i]; - propertyTest = propertyTest || hasOwnProp(input, property); - } - return objectTest && propertyTest; - } + var PromiseList = Promise.extend({ + instance: { - function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 - ? 'sameElse' - : diff < -1 - ? 'lastWeek' - : diff < 0 - ? 'lastDay' - : diff < 1 - ? 'sameDay' - : diff < 2 - ? 'nextDay' - : diff < 7 - ? 'nextWeek' - : 'sameElse'; - } + /*@private*/ + __results: null, - function calendar$1(time, formats) { - // Support for single parameter, formats only overload to the calendar function - if (arguments.length === 1) { - if (isMomentInput(arguments[0])) { - time = arguments[0]; - formats = undefined; - } else if (isCalendarSpec(arguments[0])) { - formats = arguments[0]; - time = undefined; - } - } - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse', - output = - formats && - (isFunction(formats[format]) - ? formats[format].call(this, now) - : formats[format]); + /*@private*/ + __errors: null, - return this.format( - output || this.localeData().calendar(format, this, createLocal(now)) - ); - } + /*@private*/ + __promiseLength: 0, - function clone() { - return new Moment(this); - } + /*@private*/ + __defLength: 0, - function isAfter(input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() > localInput.valueOf(); - } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); - } - } + /*@private*/ + __firedLength: 0, - function isBefore(input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() < localInput.valueOf(); - } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); - } - } + normalizeResults: false, - function isBetween(from, to, units, inclusivity) { - var localFrom = isMoment(from) ? from : createLocal(from), - localTo = isMoment(to) ? to : createLocal(to); - if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { - return false; - } - inclusivity = inclusivity || '()'; - return ( - (inclusivity[0] === '(' - ? this.isAfter(localFrom, units) - : !this.isBefore(localFrom, units)) && - (inclusivity[1] === ')' - ? this.isBefore(localTo, units) - : !this.isAfter(localTo, units)) - ); - } + constructor: function (defs, normalizeResults) { + this.__errors = []; + this.__results = []; + this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false; + this._super(arguments); + if (defs && defs.length) { + this.__defLength = defs.length; + forEach(defs, this.__addPromise, this); + } else { + this.__resolve(); + } + }, - function isSame(input, units) { - var localInput = isMoment(input) ? input : createLocal(input), - inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || 'millisecond'; - if (units === 'millisecond') { - return this.valueOf() === localInput.valueOf(); - } else { - inputMs = localInput.valueOf(); - return ( - this.clone().startOf(units).valueOf() <= inputMs && - inputMs <= this.clone().endOf(units).valueOf() - ); - } - } + __addPromise: function (promise, i) { + promise.then( + bind(this, function () { + var args = argsToArray(arguments); + args.unshift(i); + this.callback.apply(this, args); + }), + bind(this, function () { + var args = argsToArray(arguments); + args.unshift(i); + this.errback.apply(this, args); + }) + ); + }, - function isSameOrAfter(input, units) { - return this.isSame(input, units) || this.isAfter(input, units); - } + __resolve: function () { + if (!this.__fired) { + this.__fired = true; + var cbs = this.__errors.length ? this.__errorCbs : this.__cbs, + len = cbs.length, i, + results = this.__errors.length ? this.__errors : this.__results; + for (i = 0; i < len; i++) { + this.__callNextTick(cbs[i], results); + } - function isSameOrBefore(input, units) { - return this.isSame(input, units) || this.isBefore(input, units); - } + } + }, - function diff(input, units, asFloat) { - var that, zoneDelta, output; + __callNextTick: function (cb, results) { + nextTick(function () { + cb.apply(null, [results]); + }); + }, - if (!this.isValid()) { - return NaN; - } + addCallback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.callback) { + cb = bind(cb, "callback"); + } + if (this.__fired && !this.__errors.length) { + this.__callNextTick(cb, this.__results); + } else { + this.__cbs.push(cb); + } + } + return this; + }, - that = cloneWithOffset(input, this); + addErrback: function (cb) { + if (cb) { + if (isPromiseLike(cb) && cb.errback) { + cb = bind(cb, "errback"); + } + if (this.__fired && this.__errors.length) { + this.__callNextTick(cb, this.__errors); + } else { + this.__errorCbs.push(cb); + } + } + return this; + }, - if (!that.isValid()) { - return NaN; - } - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + callback: function (i) { + if (this.__fired) { + throw new Error("Already fired!"); + } + var args = argsToArray(arguments); + if (this.normalizeResults) { + args = args.slice(1); + args = args.length === 1 ? args.pop() : args; + } + this.__results[i] = args; + this.__firedLength++; + if (this.__firedLength === this.__defLength) { + this.__resolve(); + } + return this.promise(); + }, - units = normalizeUnits(units); - switch (units) { - case 'year': - output = monthDiff(this, that) / 12; - break; - case 'month': - output = monthDiff(this, that); - break; - case 'quarter': - output = monthDiff(this, that) / 3; - break; - case 'second': - output = (this - that) / 1e3; - break; // 1000 - case 'minute': - output = (this - that) / 6e4; - break; // 1000 * 60 - case 'hour': - output = (this - that) / 36e5; - break; // 1000 * 60 * 60 - case 'day': - output = (this - that - zoneDelta) / 864e5; - break; // 1000 * 60 * 60 * 24, negate dst - case 'week': - output = (this - that - zoneDelta) / 6048e5; - break; // 1000 * 60 * 60 * 24 * 7, negate dst - default: - output = this - that; - } + errback: function (i) { + if (this.__fired) { + throw new Error("Already fired!"); + } + var args = argsToArray(arguments); + if (this.normalizeResults) { + args = args.slice(1); + args = args.length === 1 ? args.pop() : args; + } + this.__errors[i] = args; + this.__firedLength++; + if (this.__firedLength === this.__defLength) { + this.__resolve(); + } + return this.promise(); + } - return asFloat ? output : absFloor(output); - } + } + }); - function monthDiff(a, b) { - if (a.date() < b.date()) { - // end-of-month calculations work correct when the start month has more - // days than the end month. - return -monthDiff(b, a); - } - // difference in months - var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, - adjust; - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); + function callNext(list, results, propogate) { + var ret = new Promise().callback(); + forEach(list, function (listItem) { + ret = ret.then(propogate ? listItem : bindIgnore(null, listItem)); + if (!propogate) { + ret = ret.then(function (res) { + results.push(res); + return results; + }); + } + }); + return ret; } - //check for negative zero, return zero if negative zero - return -(wholeMonthDiff + adjust) || 0; - } + function isPromiseLike(obj) { + return !isUndefinedOrNull(obj) && (isFunction(obj.then)); + } - hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + function wrapThenPromise(p) { + var ret = new Promise(); + p.then(bind(ret, "callback"), bind(ret, "errback")); + return ret.promise(); + } - function toString() { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } + function when(args) { + var p; + args = argsToArray(arguments); + if (!args.length) { + p = new Promise().callback(args).promise(); + } else if (args.length === 1) { + args = args.pop(); + if (isPromiseLike(args)) { + if (args.addCallback && args.addErrback) { + p = new Promise(); + args.addCallback(p.callback); + args.addErrback(p.errback); + } else { + p = wrapThenPromise(args); + } + } else if (isArray(args) && array.every(args, isPromiseLike)) { + p = new PromiseList(args, true).promise(); + } else { + p = new Promise().callback(args); + } + } else { + p = new PromiseList(array.map(args, function (a) { + return when(a); + }), true).promise(); + } + return p; - function toISOString(keepOffset) { - if (!this.isValid()) { - return null; } - var utc = keepOffset !== true, - m = utc ? this.clone().utc() : this; - if (m.year() < 0 || m.year() > 9999) { - return formatMoment( - m, - utc - ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' - : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' - ); + + function wrap(fn, scope) { + return function _wrap() { + var ret = new Promise(); + var args = argsToArray(arguments); + args.push(ret.resolve); + fn.apply(scope || this, args); + return ret.promise(); + }; } - if (isFunction(Date.prototype.toISOString)) { - // native implementation is ~50x faster, use it when we can - if (utc) { - return this.toDate().toISOString(); + + function serial(list) { + if (isArray(list)) { + return callNext(list, [], false); } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) - .toISOString() - .replace('Z', formatMoment(m, 'Z')); + throw new Error("When calling promise.serial the first argument must be an array"); } } - return formatMoment( - m, - utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' - ); - } - /** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - */ - function inspect() { - if (!this.isValid()) { - return 'moment.invalid(/* ' + this._i + ' */)'; - } - var func = 'moment', - zone = '', - prefix, - year, - datetime, - suffix; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; - zone = 'Z'; + + function chain(list) { + if (isArray(list)) { + return callNext(list, [], true); + } else { + throw new Error("When calling promise.serial the first argument must be an array"); + } } - prefix = '[' + func + '("]'; - year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; - datetime = '-MM-DD[T]HH:mm:ss.SSS'; - suffix = zone + '[")]'; - return this.format(prefix + year + datetime + suffix); - } - function format(inputString) { - if (!inputString) { - inputString = this.isUtc() - ? hooks.defaultFormatUtc - : hooks.defaultFormat; + function wait(args, fn) { + args = argsToArray(arguments); + var resolved = false; + fn = args.pop(); + var p = when(args); + return function waiter() { + if (!resolved) { + args = arguments; + return p.then(bind(this, function doneWaiting() { + resolved = true; + return fn.apply(this, args); + })); + } else { + return when(fn.apply(this, arguments)); + } + }; } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); - } - function from(time, withoutSuffix) { - if ( - this.isValid() && - ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) - ) { - return createDuration({ to: this, from: time }) - .locale(this.locale()) - .humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); + function createPromise() { + return new Promise(); } - } - - function fromNow(withoutSuffix) { - return this.from(createLocal(), withoutSuffix); - } - function to(time, withoutSuffix) { - if ( - this.isValid() && - ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) - ) { - return createDuration({ from: this, to: time }) - .locale(this.locale()) - .humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); + function createPromiseList(promises) { + return new PromiseList(promises, true).promise(); } - } - - function toNow(withoutSuffix) { - return this.to(createLocal(), withoutSuffix); - } - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - function locale(key) { - var newLocaleData; - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; + function createRejected(val) { + return createPromise().errback(val); } - } - var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } + function createResolved(val) { + return createPromise().callback(val); } - ); - function localeData() { - return this._locale; - } - var MS_PER_SECOND = 1000, - MS_PER_MINUTE = 60 * MS_PER_SECOND, - MS_PER_HOUR = 60 * MS_PER_MINUTE, - MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; + return extended + .define({ + isPromiseLike: isPromiseLike + }).expose({ + isPromiseLike: isPromiseLike, + when: when, + wrap: wrap, + wait: wait, + serial: serial, + chain: chain, + Promise: Promise, + PromiseList: PromiseList, + promise: createPromise, + defer: createPromise, + deferredList: createPromiseList, + reject: createRejected, + resolve: createResolved + }); - // actual modulo - handles negative numbers (for dates before 1970): - function mod$1(dividend, divisor) { - return ((dividend % divisor) + divisor) % divisor; } - function localStartOfDate(y, m, d) { - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - return new Date(y + 400, m, d) - MS_PER_400_YEARS; - } else { - return new Date(y, m, d).valueOf(); + if (true) { + if ( true && module.exports) { + module.exports = definePromise(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js"), __webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); } - } + } else {} - function utcStartOfDate(y, m, d) { - // Date.UTC remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0) { - // preserve leap years using a full 400 year cycle, then reset - return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; - } else { - return Date.UTC(y, m, d); - } - } +}).call(this); - function startOf(units) { - var time, startOfDate; - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond' || !this.isValid()) { - return this; - } - startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - switch (units) { - case 'year': - time = startOfDate(this.year(), 0, 1); - break; - case 'quarter': - time = startOfDate( - this.year(), - this.month() - (this.month() % 3), - 1 - ); - break; - case 'month': - time = startOfDate(this.year(), this.month(), 1); - break; - case 'week': - time = startOfDate( - this.year(), - this.month(), - this.date() - this.weekday() - ); - break; - case 'isoWeek': - time = startOfDate( - this.year(), - this.month(), - this.date() - (this.isoWeekday() - 1) - ); - break; - case 'day': - case 'date': - time = startOfDate(this.year(), this.month(), this.date()); - break; - case 'hour': - time = this._d.valueOf(); - time -= mod$1( - time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), - MS_PER_HOUR - ); - break; - case 'minute': - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_MINUTE); - break; - case 'second': - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_SECOND); - break; - } - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } - function endOf(units) { - var time, startOfDate; - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond' || !this.isValid()) { - return this; - } - startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - switch (units) { - case 'year': - time = startOfDate(this.year() + 1, 0, 1) - 1; - break; - case 'quarter': - time = - startOfDate( - this.year(), - this.month() - (this.month() % 3) + 3, - 1 - ) - 1; - break; - case 'month': - time = startOfDate(this.year(), this.month() + 1, 1) - 1; - break; - case 'week': - time = - startOfDate( - this.year(), - this.month(), - this.date() - this.weekday() + 7 - ) - 1; - break; - case 'isoWeek': - time = - startOfDate( - this.year(), - this.month(), - this.date() - (this.isoWeekday() - 1) + 7 - ) - 1; - break; - case 'day': - case 'date': - time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; - break; - case 'hour': - time = this._d.valueOf(); - time += - MS_PER_HOUR - - mod$1( - time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), - MS_PER_HOUR - ) - - 1; - break; - case 'minute': - time = this._d.valueOf(); - time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; - break; - case 'second': - time = this._d.valueOf(); - time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; - break; - } - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } +/***/ }), - function valueOf() { - return this._d.valueOf() - (this._offset || 0) * 60000; - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js ***! + \***************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - function unix() { - return Math.floor(this.valueOf() / 1000); - } +(function () { + "use strict"; - function toDate() { - return new Date(this.valueOf()); - } + function defineString(extended, is, date, arr) { - function toArray() { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hour(), - m.minute(), - m.second(), - m.millisecond(), - ]; - } + var stringify; + if (typeof JSON === "undefined") { + /* + json2.js + 2012-10-08 - function toObject() { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds(), - }; - } + Public Domain. - function toJSON() { - // new Date(NaN).toJSON() === null - return this.isValid() ? this.toISOString() : null; - } + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + */ - function isValid$2() { - return isValid(this); - } + (function () { + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } - function parsingFlags() { - return extend({}, getParsingFlags(this)); - } + var isPrimitive = is.tester().isString().isNumber().isBoolean().tester(); - function invalidAt() { - return getParsingFlags(this).overflow; - } + function toJSON(obj) { + if (is.isDate(obj)) { + return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' + + f(obj.getUTCMonth() + 1) + '-' + + f(obj.getUTCDate()) + 'T' + + f(obj.getUTCHours()) + ':' + + f(obj.getUTCMinutes()) + ':' + + f(obj.getUTCSeconds()) + 'Z' + : null; + } else if (isPrimitive(obj)) { + return obj.valueOf(); + } + return obj; + } - function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict, - }; - } + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"': '\\"', + '\\': '\\\\' + }, + rep; - addFormatToken('N', 0, 0, 'eraAbbr'); - addFormatToken('NN', 0, 0, 'eraAbbr'); - addFormatToken('NNN', 0, 0, 'eraAbbr'); - addFormatToken('NNNN', 0, 0, 'eraName'); - addFormatToken('NNNNN', 0, 0, 'eraNarrow'); - addFormatToken('y', ['y', 1], 'yo', 'eraYear'); - addFormatToken('y', ['yy', 2], 0, 'eraYear'); - addFormatToken('y', ['yyy', 3], 0, 'eraYear'); - addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); + function quote(string) { + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } - addRegexToken('N', matchEraAbbr); - addRegexToken('NN', matchEraAbbr); - addRegexToken('NNN', matchEraAbbr); - addRegexToken('NNNN', matchEraName); - addRegexToken('NNNNN', matchEraNarrow); - addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function ( - input, - array, - config, - token - ) { - var era = config._locale.erasParse(input, token, config._strict); - if (era) { - getParsingFlags(config).era = era; + function str(key, holder) { + + var i, k, v, length, mind = gap, partial, value = holder[key]; + if (value) { + value = toJSON(value); + } + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + switch (typeof value) { + case 'string': + return quote(value); + case 'number': + return isFinite(value) ? String(value) : 'null'; + case 'boolean': + case 'null': + return String(value); + case 'object': + if (!value) { + return 'null'; + } + gap += indent; + partial = []; + if (Object.prototype.toString.apply(value) === '[object Array]') { + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + + stringify = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + } else if (typeof space === 'string') { + indent = space; + } + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + return str('', {'': value}); + }; + }()); } else { - getParsingFlags(config).invalidEra = input; + stringify = JSON.stringify; } - }); - addRegexToken('y', matchUnsigned); - addRegexToken('yy', matchUnsigned); - addRegexToken('yyy', matchUnsigned); - addRegexToken('yyyy', matchUnsigned); - addRegexToken('yo', matchEraYearOrdinal); - addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); - addParseToken(['yo'], function (input, array, config, token) { - var match; - if (config._locale._eraYearOrdinalRegex) { - match = input.match(config._locale._eraYearOrdinalRegex); + var isHash = is.isHash, aSlice = Array.prototype.slice; + + var FORMAT_REGEX = /%((?:-?\+?.?\d*)?|(?:\[[^\[|\]]*\]))?([sjdDZ])/g; + var INTERP_REGEX = /\{(?:\[([^\[|\]]*)\])?(\w+)\}/g; + var STR_FORMAT = /(-?)(\+?)([A-Z|a-z|\W]?)([1-9][0-9]*)?$/; + var OBJECT_FORMAT = /([1-9][0-9]*)$/g; + + function formatString(string, format) { + var ret = string; + if (STR_FORMAT.test(format)) { + var match = format.match(STR_FORMAT); + var isLeftJustified = match[1], padChar = match[3], width = match[4]; + if (width) { + width = parseInt(width, 10); + if (ret.length < width) { + ret = pad(ret, width, padChar, isLeftJustified); + } else { + ret = truncate(ret, width); + } + } + } + return ret; } - if (config._locale.eraYearOrdinalParse) { - array[YEAR] = config._locale.eraYearOrdinalParse(input, match); - } else { - array[YEAR] = parseInt(input, 10); + function formatNumber(number, format) { + var ret; + if (is.isNumber(number)) { + ret = "" + number; + if (STR_FORMAT.test(format)) { + var match = format.match(STR_FORMAT); + var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4]; + if (signed) { + ret = (number > 0 ? "+" : "") + ret; + } + if (width) { + width = parseInt(width, 10); + if (ret.length < width) { + ret = pad(ret, width, padChar || "0", isLeftJustified); + } else { + ret = truncate(ret, width); + } + } + + } + } else { + throw new Error("stringExtended.format : when using %d the parameter must be a number!"); + } + return ret; } - }); - function localeEras(m, format) { - var i, - l, - date, - eras = this._eras || getLocale('en')._eras; - for (i = 0, l = eras.length; i < l; ++i) { - switch (typeof eras[i].since) { - case 'string': - // truncate time - date = hooks(eras[i].since).startOf('day'); - eras[i].since = date.valueOf(); - break; + function formatObject(object, format) { + var ret, match = format.match(OBJECT_FORMAT), spacing = 0; + if (match) { + spacing = parseInt(match[0], 10); + if (isNaN(spacing)) { + spacing = 0; + } + } + try { + ret = stringify(object, null, spacing); + } catch (e) { + throw new Error("stringExtended.format : Unable to parse json from ", object); + } + return ret; + } + + + var styles = { + //styles + bold: 1, + bright: 1, + italic: 3, + underline: 4, + blink: 5, + inverse: 7, + crossedOut: 9, + + red: 31, + green: 32, + yellow: 33, + blue: 34, + magenta: 35, + cyan: 36, + white: 37, + + redBackground: 41, + greenBackground: 42, + yellowBackground: 43, + blueBackground: 44, + magentaBackground: 45, + cyanBackground: 46, + whiteBackground: 47, + + encircled: 52, + overlined: 53, + grey: 90, + black: 90 + }; + + var characters = { + SMILEY: "☺", + SOLID_SMILEY: "☻", + HEART: "♥", + DIAMOND: "♦", + CLOVE: "♣", + SPADE: "♠", + DOT: "•", + SQUARE_CIRCLE: "◘", + CIRCLE: "○", + FILLED_SQUARE_CIRCLE: "◙", + MALE: "♂", + FEMALE: "♀", + EIGHT_NOTE: "♪", + DOUBLE_EIGHTH_NOTE: "♫", + SUN: "☼", + PLAY: "►", + REWIND: "◄", + UP_DOWN: "↕", + PILCROW: "¶", + SECTION: "§", + THICK_MINUS: "▬", + SMALL_UP_DOWN: "↨", + UP_ARROW: "↑", + DOWN_ARROW: "↓", + RIGHT_ARROW: "→", + LEFT_ARROW: "←", + RIGHT_ANGLE: "∟", + LEFT_RIGHT_ARROW: "↔", + TRIANGLE: "▲", + DOWN_TRIANGLE: "▼", + HOUSE: "⌂", + C_CEDILLA: "Ç", + U_UMLAUT: "ü", + E_ACCENT: "é", + A_LOWER_CIRCUMFLEX: "â", + A_LOWER_UMLAUT: "ä", + A_LOWER_GRAVE_ACCENT: "à", + A_LOWER_CIRCLE_OVER: "å", + C_LOWER_CIRCUMFLEX: "ç", + E_LOWER_CIRCUMFLEX: "ê", + E_LOWER_UMLAUT: "ë", + E_LOWER_GRAVE_ACCENT: "è", + I_LOWER_UMLAUT: "ï", + I_LOWER_CIRCUMFLEX: "î", + I_LOWER_GRAVE_ACCENT: "ì", + A_UPPER_UMLAUT: "Ä", + A_UPPER_CIRCLE: "Å", + E_UPPER_ACCENT: "É", + A_E_LOWER: "æ", + A_E_UPPER: "Æ", + O_LOWER_CIRCUMFLEX: "ô", + O_LOWER_UMLAUT: "ö", + O_LOWER_GRAVE_ACCENT: "ò", + U_LOWER_CIRCUMFLEX: "û", + U_LOWER_GRAVE_ACCENT: "ù", + Y_LOWER_UMLAUT: "ÿ", + O_UPPER_UMLAUT: "Ö", + U_UPPER_UMLAUT: "Ü", + CENTS: "¢", + POUND: "£", + YEN: "¥", + CURRENCY: "¤", + PTS: "₧", + FUNCTION: "ƒ", + A_LOWER_ACCENT: "á", + I_LOWER_ACCENT: "í", + O_LOWER_ACCENT: "ó", + U_LOWER_ACCENT: "ú", + N_LOWER_TILDE: "ñ", + N_UPPER_TILDE: "Ñ", + A_SUPER: "ª", + O_SUPER: "º", + UPSIDEDOWN_QUESTION: "¿", + SIDEWAYS_L: "⌐", + NEGATION: "¬", + ONE_HALF: "½", + ONE_FOURTH: "¼", + UPSIDEDOWN_EXCLAMATION: "¡", + DOUBLE_LEFT: "«", + DOUBLE_RIGHT: "»", + LIGHT_SHADED_BOX: "░", + MEDIUM_SHADED_BOX: "▒", + DARK_SHADED_BOX: "▓", + VERTICAL_LINE: "│", + MAZE__SINGLE_RIGHT_T: "┤", + MAZE_SINGLE_RIGHT_TOP: "┐", + MAZE_SINGLE_RIGHT_BOTTOM_SMALL: "┘", + MAZE_SINGLE_LEFT_TOP_SMALL: "┌", + MAZE_SINGLE_LEFT_BOTTOM_SMALL: "└", + MAZE_SINGLE_LEFT_T: "├", + MAZE_SINGLE_BOTTOM_T: "┴", + MAZE_SINGLE_TOP_T: "┬", + MAZE_SINGLE_CENTER: "┼", + MAZE_SINGLE_HORIZONTAL_LINE: "─", + MAZE_SINGLE_RIGHT_DOUBLECENTER_T: "╡", + MAZE_SINGLE_RIGHT_DOUBLE_BL: "╛", + MAZE_SINGLE_RIGHT_DOUBLE_T: "╢", + MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: "╖", + MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: "╕", + MAZE_SINGLE_LEFT_DOUBLE_T: "╞", + MAZE_SINGLE_BOTTOM_DOUBLE_T: "╧", + MAZE_SINGLE_TOP_DOUBLE_T: "╤", + MAZE_SINGLE_TOP_DOUBLECENTER_T: "╥", + MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: "╨", + MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: "╘", + MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: "╒", + MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: "╓", + MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: "╙", + MAZE_SINGLE_LEFT_TOP: "Γ", + MAZE_SINGLE_RIGHT_BOTTOM: "╜", + MAZE_SINGLE_LEFT_CENTER: "╟", + MAZE_SINGLE_DOUBLECENTER_CENTER: "╫", + MAZE_SINGLE_DOUBLECROSS_CENTER: "╪", + MAZE_DOUBLE_LEFT_CENTER: "╣", + MAZE_DOUBLE_VERTICAL: "║", + MAZE_DOUBLE_RIGHT_TOP: "╗", + MAZE_DOUBLE_RIGHT_BOTTOM: "╝", + MAZE_DOUBLE_LEFT_BOTTOM: "╚", + MAZE_DOUBLE_LEFT_TOP: "╔", + MAZE_DOUBLE_BOTTOM_T: "╩", + MAZE_DOUBLE_TOP_T: "╦", + MAZE_DOUBLE_LEFT_T: "╠", + MAZE_DOUBLE_HORIZONTAL: "═", + MAZE_DOUBLE_CROSS: "╬", + SOLID_RECTANGLE: "█", + THICK_LEFT_VERTICAL: "▌", + THICK_RIGHT_VERTICAL: "▐", + SOLID_SMALL_RECTANGLE_BOTTOM: "▄", + SOLID_SMALL_RECTANGLE_TOP: "▀", + PHI_UPPER: "Φ", + INFINITY: "∞", + INTERSECTION: "∩", + DEFINITION: "≡", + PLUS_MINUS: "±", + GT_EQ: "≥", + LT_EQ: "≤", + THEREFORE: "⌠", + SINCE: "∵", + DOESNOT_EXIST: "∄", + EXISTS: "∃", + FOR_ALL: "∀", + EXCLUSIVE_OR: "⊕", + BECAUSE: "⌡", + DIVIDE: "÷", + APPROX: "≈", + DEGREE: "°", + BOLD_DOT: "∙", + DOT_SMALL: "·", + CHECK: "√", + ITALIC_X: "✗", + SUPER_N: "ⁿ", + SQUARED: "²", + CUBED: "³", + SOLID_BOX: "■", + PERMILE: "‰", + REGISTERED_TM: "®", + COPYRIGHT: "©", + TRADEMARK: "™", + BETA: "β", + GAMMA: "γ", + ZETA: "ζ", + ETA: "η", + IOTA: "ι", + KAPPA: "κ", + LAMBDA: "λ", + NU: "ν", + XI: "ξ", + OMICRON: "ο", + RHO: "ρ", + UPSILON: "υ", + CHI_LOWER: "φ", + CHI_UPPER: "χ", + PSI: "ψ", + ALPHA: "α", + ESZETT: "ß", + PI: "π", + SIGMA_UPPER: "Σ", + SIGMA_LOWER: "σ", + MU: "µ", + TAU: "τ", + THETA: "Θ", + OMEGA: "Ω", + DELTA: "δ", + PHI_LOWER: "φ", + EPSILON: "ε" + }; + + function pad(string, length, ch, end) { + string = "" + string; //check for numbers + ch = ch || " "; + var strLen = string.length; + while (strLen < length) { + if (end) { + string += ch; + } else { + string = ch + string; + } + strLen++; } + return string; + } - switch (typeof eras[i].until) { - case 'undefined': - eras[i].until = +Infinity; - break; - case 'string': - // truncate time - date = hooks(eras[i].until).startOf('day').valueOf(); - eras[i].until = date.valueOf(); - break; + function truncate(string, length, end) { + var ret = string; + if (is.isString(ret)) { + if (string.length > length) { + if (end) { + var l = string.length; + ret = string.substring(l - length, l); + } else { + ret = string.substring(0, length); + } + } + } else { + ret = truncate("" + ret, length); } + return ret; } - return eras; - } - - function localeErasParse(eraName, format, strict) { - var i, - l, - eras = this.eras(), - name, - abbr, - narrow; - eraName = eraName.toUpperCase(); - - for (i = 0, l = eras.length; i < l; ++i) { - name = eras[i].name.toUpperCase(); - abbr = eras[i].abbr.toUpperCase(); - narrow = eras[i].narrow.toUpperCase(); - if (strict) { - switch (format) { - case 'N': - case 'NN': - case 'NNN': - if (abbr === eraName) { - return eras[i]; + function format(str, obj) { + if (obj instanceof Array) { + var i = 0, len = obj.length; + //find the matches + return str.replace(FORMAT_REGEX, function (m, format, type) { + var replacer, ret; + if (i < len) { + replacer = obj[i++]; + } else { + //we are out of things to replace with so + //just return the match? + return m; + } + if (m === "%s" || m === "%d" || m === "%D") { + //fast path! + ret = replacer + ""; + } else if (m === "%Z") { + ret = replacer.toUTCString(); + } else if (m === "%j") { + try { + ret = stringify(replacer); + } catch (e) { + throw new Error("stringExtended.format : Unable to parse json from ", replacer); } - break; - - case 'NNNN': - if (name === eraName) { - return eras[i]; + } else { + format = format.replace(/^\[|\]$/g, ""); + switch (type) { + case "s": + ret = formatString(replacer, format); + break; + case "d": + ret = formatNumber(replacer, format); + break; + case "j": + ret = formatObject(replacer, format); + break; + case "D": + ret = date.format(replacer, format); + break; + case "Z": + ret = date.format(replacer, format, true); + break; } - break; - - case 'NNNNN': - if (narrow === eraName) { - return eras[i]; + } + return ret; + }); + } else if (isHash(obj)) { + return str.replace(INTERP_REGEX, function (m, format, value) { + value = obj[value]; + if (!is.isUndefined(value)) { + if (format) { + if (is.isString(value)) { + return formatString(value, format); + } else if (is.isNumber(value)) { + return formatNumber(value, format); + } else if (is.isDate(value)) { + return date.format(value, format); + } else if (is.isObject(value)) { + return formatObject(value, format); + } + } else { + return "" + value; } - break; - } - } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { - return eras[i]; + } + return m; + }); + } else { + var args = aSlice.call(arguments).slice(1); + return format(str, args); } } - } - - function localeErasConvertYear(era, year) { - var dir = era.since <= era.until ? +1 : -1; - if (year === undefined) { - return hooks(era.since).year(); - } else { - return hooks(era.since).year() + (year - era.offset) * dir; - } - } - - function getEraName() { - var i, - l, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - // truncate time - val = this.startOf('day').valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].name; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].name; + function toArray(testStr, delim) { + var ret = []; + if (testStr) { + if (testStr.indexOf(delim) > 0) { + ret = testStr.replace(/\s+/g, "").split(delim); + } + else { + ret.push(testStr); + } } + return ret; } - return ''; - } - - function getEraNarrow() { - var i, - l, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - // truncate time - val = this.startOf('day').valueOf(); - - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].narrow; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].narrow; + function multiply(str, times) { + var ret = []; + if (times) { + for (var i = 0; i < times; i++) { + ret.push(str); + } } + return ret.join(""); } - return ''; - } - - function getEraAbbr() { - var i, - l, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - // truncate time - val = this.startOf('day').valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].abbr; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].abbr; + function style(str, options) { + var ret, i, l; + if (options) { + if (is.isArray(str)) { + ret = []; + for (i = 0, l = str.length; i < l; i++) { + ret.push(style(str[i], options)); + } + } else if (options instanceof Array) { + ret = str; + for (i = 0, l = options.length; i < l; i++) { + ret = style(ret, options[i]); + } + } else if (options in styles) { + ret = '\x1B[' + styles[options] + 'm' + str + '\x1B[0m'; + } } + return ret; } - return ''; - } - - function getEraYear() { - var i, - l, - dir, - val, - eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - dir = eras[i].since <= eras[i].until ? +1 : -1; - - // truncate time - val = this.startOf('day').valueOf(); - - if ( - (eras[i].since <= val && val <= eras[i].until) || - (eras[i].until <= val && val <= eras[i].since) - ) { - return ( - (this.year() - hooks(eras[i].since).year()) * dir + - eras[i].offset - ); - } + function escape(str, except) { + return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function (ch) { + if (except && arr.indexOf(except, ch) !== -1) { + return ch; + } + return "\\" + ch; + }); } - return this.year(); - } - - function erasNameRegex(isStrict) { - if (!hasOwnProp(this, '_erasNameRegex')) { - computeErasParse.call(this); + function trim(str) { + return str.replace(/^\s*|\s*$/g, ""); } - return isStrict ? this._erasNameRegex : this._erasRegex; - } - function erasAbbrRegex(isStrict) { - if (!hasOwnProp(this, '_erasAbbrRegex')) { - computeErasParse.call(this); + function trimLeft(str) { + return str.replace(/^\s*/, ""); } - return isStrict ? this._erasAbbrRegex : this._erasRegex; - } - function erasNarrowRegex(isStrict) { - if (!hasOwnProp(this, '_erasNarrowRegex')) { - computeErasParse.call(this); + function trimRight(str) { + return str.replace(/\s*$/, ""); } - return isStrict ? this._erasNarrowRegex : this._erasRegex; - } - - function matchEraAbbr(isStrict, locale) { - return locale.erasAbbrRegex(isStrict); - } - function matchEraName(isStrict, locale) { - return locale.erasNameRegex(isStrict); - } + function isEmpty(str) { + return str.length === 0; + } - function matchEraNarrow(isStrict, locale) { - return locale.erasNarrowRegex(isStrict); - } - function matchEraYearOrdinal(isStrict, locale) { - return locale._eraYearOrdinalRegex || matchUnsigned; + var string = { + toArray: toArray, + pad: pad, + truncate: truncate, + multiply: multiply, + format: format, + style: style, + escape: escape, + trim: trim, + trimLeft: trimLeft, + trimRight: trimRight, + isEmpty: isEmpty + }; + return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters}); } - function computeErasParse() { - var abbrPieces = [], - namePieces = [], - narrowPieces = [], - mixedPieces = [], - i, - l, - eras = this.eras(); - - for (i = 0, l = eras.length; i < l; ++i) { - namePieces.push(regexEscape(eras[i].name)); - abbrPieces.push(regexEscape(eras[i].abbr)); - narrowPieces.push(regexEscape(eras[i].narrow)); + if (true) { + if ( true && module.exports) { + module.exports = defineString(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")); - mixedPieces.push(regexEscape(eras[i].name)); - mixedPieces.push(regexEscape(eras[i].abbr)); - mixedPieces.push(regexEscape(eras[i].narrow)); } + } else {} - this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); - this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); - this._erasNarrowRegex = new RegExp( - '^(' + narrowPieces.join('|') + ')', - 'i' - ); - } - - // FORMATTING +}).call(this); - addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; - }); - addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; - }); - function addWeekYearFormatToken(token, getter) { - addFormatToken(0, [token, token.length], 0, getter); - } - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); - addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - // ALIASES - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - // PRIORITY - addUnitPriority('weekYear', 1); - addUnitPriority('isoWeekYear', 1); +/***/ }), - // PARSING +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js ***! + \***************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); +/* module decorator */ module = __webpack_require__.nmd(module); +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.9.1 +// http://underscorejs.org +// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function ( - input, - week, - config, - token - ) { - week[token.substr(0, 2)] = toInt(input); - }); +(function() { - addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); - }); + // Baseline setup + // -------------- - // MOMENTS + // Establish the root object, `window` (`self`) in the browser, `global` + // on the server, or `this` in some virtual machines. We use `self` + // instead of `window` for `WebWorker` support. + var root = typeof self == 'object' && self.self === self && self || + typeof global == 'object' && global.global === global && global || + this || + {}; - function getSetWeekYear(input) { - return getSetWeekYearHelper.call( - this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy - ); - } + // Save the previous value of the `_` variable. + var previousUnderscore = root._; - function getSetISOWeekYear(input) { - return getSetWeekYearHelper.call( - this, - input, - this.isoWeek(), - this.isoWeekday(), - 1, - 4 - ); - } + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype; + var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; - function getISOWeeksInYear() { - return weeksInYear(this.year(), 1, 4); - } + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; - function getISOWeeksInISOWeekYear() { - return weeksInYear(this.isoWeekYear(), 1, 4); - } + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create; - function getWeeksInYear() { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - } + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; - function getWeeksInWeekYear() { - var weekInfo = this.localeData()._week; - return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); - } + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; - function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); - } + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for their old module API. If we're in + // the browser, add `_` as a global object. + // (`nodeType` is checked to ensure that `module` + // and `exports` are not HTML elements.) + if ( true && !exports.nodeType) { + if ( true && !module.nodeType && module.exports) { + exports = module.exports = _; } + exports._ = _; + } else { + root._ = _; + } - function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), - date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + // Current version. + _.VERSION = '1.9.1'; - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + // The 2-argument case is omitted because we’re not using it. + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; } + return function() { + return func.apply(context, arguments); + }; + }; - // FORMATTING - - addFormatToken('Q', 0, 'Qo', 'quarter'); - - // ALIASES + var builtinIteratee; - addUnitAlias('quarter', 'Q'); + // An internal function to generate callbacks that can be applied to each + // element in a collection, returning the desired result — either `identity`, + // an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (_.iteratee !== builtinIteratee) return _.iteratee(value, context); + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value) && !_.isArray(value)) return _.matcher(value); + return _.property(value); + }; - // PRIORITY + // External wrapper for our callback generator. Users may customize + // `_.iteratee` if they want additional predicate/iteratee shorthand styles. + // This abstraction hides the internal-only argCount argument. + _.iteratee = builtinIteratee = function(value, context) { + return cb(value, context, Infinity); + }; - addUnitPriority('quarter', 7); + // Some functions take a variable number of arguments, or a few expected + // arguments at the beginning and then a variable number of values to operate + // on. This helper accumulates all remaining arguments past the function’s + // argument length (or an explicit `startIndex`), into an array that becomes + // the last argument. Similar to ES6’s "rest parameter". + var restArguments = function(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; + }; - // PARSING + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; - addRegexToken('Q', match1); - addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); + var shallowProperty = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; - // MOMENTS + var has = function(obj, path) { + return obj != null && hasOwnProperty.call(obj, path); + } - function getSetQuarter(input) { - return input == null - ? Math.ceil((this.month() + 1) / 3) - : this.month((input - 1) * 3 + (this.month() % 3)); + var deepGet = function(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; } + return length ? obj : void 0; + }; - // FORMATTING - - addFormatToken('D', ['DD', 2], 'Do', 'date'); - - // ALIASES - - addUnitAlias('date', 'D'); - - // PRIORITY - addUnitPriority('date', 9); - - // PARSING - - addRegexToken('D', match1to2); - addRegexToken('DD', match1to2, match2); - addRegexToken('Do', function (isStrict, locale) { - // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict - ? locale._dayOfMonthOrdinalParse || locale._ordinalParse - : locale._dayOfMonthOrdinalParseLenient; - }); - - addParseToken(['D', 'DD'], DATE); - addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0]); - }); - - // MOMENTS - - var getSetDayOfMonth = makeGetSet('Date', true); - - // FORMATTING - - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PRIORITY - addUnitPriority('dayOfYear', 4); - - // PARSING - - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); - - // HELPERS + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object. + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = shallowProperty('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; - // MOMENTS + // Collection Functions + // -------------------- - function getSetDayOfYear(input) { - var dayOfYear = - Math.round( - (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 - ) + 1; - return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } } + return obj; + }; - // FORMATTING - - addFormatToken('m', ['mm', 2], 0, 'minute'); - - // ALIASES - - addUnitAlias('minute', 'm'); - - // PRIORITY - - addUnitPriority('minute', 14); - - // PARSING - - addRegexToken('m', match1to2); - addRegexToken('mm', match1to2, match2); - addParseToken(['m', 'mm'], MINUTE); - - // MOMENTS - - var getSetMinute = makeGetSet('Minutes', false); - - // FORMATTING - - addFormatToken('s', ['ss', 2], 0, 'second'); - - // ALIASES - - addUnitAlias('second', 's'); - - // PRIORITY - - addUnitPriority('second', 15); - - // PARSING - - addRegexToken('s', match1to2); - addRegexToken('ss', match1to2, match2); - addParseToken(['s', 'ss'], SECOND); + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; - // MOMENTS + // Create a reducing function iterating left or right. + var createReduce = function(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function(obj, iteratee, memo, initial) { + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; - var getSetSecond = makeGetSet('Seconds', false); + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); + }; + }; - // FORMATTING + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); - addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); - }); + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); - addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); - }); + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; + }; - addFormatToken(0, ['SSS', 3], 0, 'millisecond'); - addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; - }); - addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; - }); - addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; - }); - addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; - }); - addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; - }); - addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); }); + return results; + }; - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PRIORITY - - addUnitPriority('millisecond', 16); - - // PARSING - - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); - - var token, getSetMillisecond; - for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); - } - - function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); - } - - for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); - } - - getSetMillisecond = makeGetSet('Milliseconds', false); - - // FORMATTING - - addFormatToken('z', 0, 0, 'zoneAbbr'); - addFormatToken('zz', 0, 0, 'zoneName'); - - // MOMENTS + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; - function getZoneAbbr() { - return this._isUTC ? 'UTC' : ''; + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; } + return true; + }; - function getZoneName() { - return this._isUTC ? 'Coordinated Universal Time' : ''; + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; } + return false; + }; - var proto = Moment.prototype; - - proto.add = add; - proto.calendar = calendar$1; - proto.clone = clone; - proto.diff = diff; - proto.endOf = endOf; - proto.format = format; - proto.from = from; - proto.fromNow = fromNow; - proto.to = to; - proto.toNow = toNow; - proto.get = stringGet; - proto.invalidAt = invalidAt; - proto.isAfter = isAfter; - proto.isBefore = isBefore; - proto.isBetween = isBetween; - proto.isSame = isSame; - proto.isSameOrAfter = isSameOrAfter; - proto.isSameOrBefore = isSameOrBefore; - proto.isValid = isValid$2; - proto.lang = lang; - proto.locale = locale; - proto.localeData = localeData; - proto.max = prototypeMax; - proto.min = prototypeMin; - proto.parsingFlags = parsingFlags; - proto.set = stringSet; - proto.startOf = startOf; - proto.subtract = subtract; - proto.toArray = toArray; - proto.toObject = toObject; - proto.toDate = toDate; - proto.toISOString = toISOString; - proto.inspect = inspect; - if (typeof Symbol !== 'undefined' && Symbol.for != null) { - proto[Symbol.for('nodejs.util.inspect.custom')] = function () { - return 'Moment<' + this.format() + '>'; - }; - } - proto.toJSON = toJSON; - proto.toString = toString; - proto.unix = unix; - proto.valueOf = valueOf; - proto.creationData = creationData; - proto.eraName = getEraName; - proto.eraNarrow = getEraNarrow; - proto.eraAbbr = getEraAbbr; - proto.eraYear = getEraYear; - proto.year = getSetYear; - proto.isLeapYear = getIsLeapYear; - proto.weekYear = getSetWeekYear; - proto.isoWeekYear = getSetISOWeekYear; - proto.quarter = proto.quarters = getSetQuarter; - proto.month = getSetMonth; - proto.daysInMonth = getDaysInMonth; - proto.week = proto.weeks = getSetWeek; - proto.isoWeek = proto.isoWeeks = getSetISOWeek; - proto.weeksInYear = getWeeksInYear; - proto.weeksInWeekYear = getWeeksInWeekYear; - proto.isoWeeksInYear = getISOWeeksInYear; - proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; - proto.date = getSetDayOfMonth; - proto.day = proto.days = getSetDayOfWeek; - proto.weekday = getSetLocaleDayOfWeek; - proto.isoWeekday = getSetISODayOfWeek; - proto.dayOfYear = getSetDayOfYear; - proto.hour = proto.hours = getSetHour; - proto.minute = proto.minutes = getSetMinute; - proto.second = proto.seconds = getSetSecond; - proto.millisecond = proto.milliseconds = getSetMillisecond; - proto.utcOffset = getSetOffset; - proto.utc = setOffsetToUTC; - proto.local = setOffsetToLocal; - proto.parseZone = setOffsetToParsedOffset; - proto.hasAlignedHourOffset = hasAlignedHourOffset; - proto.isDST = isDaylightSavingTime; - proto.isLocal = isLocal; - proto.isUtcOffset = isUtcOffset; - proto.isUtc = isUtc; - proto.isUTC = isUtc; - proto.zoneAbbr = getZoneAbbr; - proto.zoneName = getZoneName; - proto.dates = deprecate( - 'dates accessor is deprecated. Use date instead.', - getSetDayOfMonth - ); - proto.months = deprecate( - 'months accessor is deprecated. Use month instead', - getSetMonth - ); - proto.years = deprecate( - 'years accessor is deprecated. Use year instead', - getSetYear - ); - proto.zone = deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', - getSetZone - ); - proto.isDSTShifted = deprecate( - 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', - isDaylightSavingTimeShifted - ); + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; - function createUnix(input) { - return createLocal(input * 1000); + // Invoke a method (with arguments) on every item in a collection. + _.invoke = restArguments(function(obj, path, args) { + var contextPath, func; + if (_.isFunction(path)) { + func = path; + } else if (_.isArray(path)) { + contextPath = path.slice(0, -1); + path = path[path.length - 1]; } + return _.map(obj, function(context) { + var method = func; + if (!method) { + if (contextPath && contextPath.length) { + context = deepGet(context, contextPath); + } + if (context == null) return void 0; + method = context[path]; + } + return method == null ? method : method.apply(context, args); + }); + }); - function createInZone() { - return createLocal.apply(null, arguments).parseZone(); - } + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; - function preParsePostFormat(string) { - return string; - } + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; - var proto$1 = Locale.prototype; + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; - proto$1.calendar = calendar; - proto$1.longDateFormat = longDateFormat; - proto$1.invalidDate = invalidDate; - proto$1.ordinal = ordinal; - proto$1.preparse = preParsePostFormat; - proto$1.postformat = preParsePostFormat; - proto$1.relativeTime = relativeTime; - proto$1.pastFuture = pastFuture; - proto$1.set = set; - proto$1.eras = localeEras; - proto$1.erasParse = localeErasParse; - proto$1.erasConvertYear = localeErasConvertYear; - proto$1.erasAbbrRegex = erasAbbrRegex; - proto$1.erasNameRegex = erasNameRegex; - proto$1.erasNarrowRegex = erasNarrowRegex; + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + }; - proto$1.months = localeMonths; - proto$1.monthsShort = localeMonthsShort; - proto$1.monthsParse = localeMonthsParse; - proto$1.monthsRegex = monthsRegex; - proto$1.monthsShortRegex = monthsShortRegex; - proto$1.week = localeWeek; - proto$1.firstDayOfYear = localeFirstDayOfYear; - proto$1.firstDayOfWeek = localeFirstDayOfWeek; + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + }; - proto$1.weekdays = localeWeekdays; - proto$1.weekdaysMin = localeWeekdaysMin; - proto$1.weekdaysShort = localeWeekdaysShort; - proto$1.weekdaysParse = localeWeekdaysParse; + // Shuffle a collection. + _.shuffle = function(obj) { + return _.sample(obj, Infinity); + }; - proto$1.weekdaysRegex = weekdaysRegex; - proto$1.weekdaysShortRegex = weekdaysShortRegex; - proto$1.weekdaysMinRegex = weekdaysMinRegex; + // Sample **n** random values from a collection using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = _.random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); + }; - proto$1.isPM = localeIsPM; - proto$1.meridiem = localeMeridiem; + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; - function get$1(format, index, field, setter) { - var locale = getLocale(), - utc = createUTC().set(setter, index); - return locale[field](utc, format); - } + // An internal function used for aggregate "group by" operations. + var group = function(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; - function listMonthsImpl(format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; + }); - format = format || ''; + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); - if (index != null) { - return get$1(format, index, field, 'month'); - } + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; + }); - var i, - out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, 'month'); - } - return out; + var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (_.isString(obj)) { + // Keep surrogate pair characters together + return obj.match(reStrSymbol); } + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; - // () - // (5) - // (fmt, 5) - // (fmt) - // (true) - // (true, 5) - // (true, fmt, 5) - // (true, fmt) - function listWeekdaysImpl(localeSorted, format, index, field) { - if (typeof localeSorted === 'boolean') { - if (isNumber(format)) { - index = format; - format = undefined; - } + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; - format = format || ''; - } else { - format = localeSorted; - index = format; - localeSorted = false; + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = group(function(result, value, pass) { + result[pass ? 0 : 1].push(value); + }, true); - if (isNumber(format)) { - index = format; - format = undefined; - } + // Array Functions + // --------------- - format = format || ''; - } + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null || array.length < 1) return n == null ? void 0 : []; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; - var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0, - i, - out = []; + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; - if (index != null) { - return get$1(format, (index + shift) % 7, field, 'day'); - } + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null || array.length < 1) return n == null ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, 'day'); + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, Boolean); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, output) { + output = output || []; + var idx = output.length; + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + // Flatten current level of array or arguments object. + if (shallow) { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; + } else { + flatten(value, shallow, strict, output); + idx = output.length; } - return out; + } else if (!strict) { + output[idx++] = value; + } } + return output; + }; - function listMonths(format, index) { - return listMonthsImpl(format, index, 'months'); - } + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; - function listMonthsShort(format, index) { - return listMonthsImpl(format, index, 'monthsShort'); - } + // Return a version of the array that does not contain the specified value(s). + _.without = restArguments(function(array, otherArrays) { + return _.difference(array, otherArrays); + }); - function listWeekdays(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // The faster algorithm will not work with an iteratee if the iteratee + // is not a one-to-one function, so providing an iteratee will disable + // the faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; } - - function listWeekdaysShort(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } } + return result; + }; - function listWeekdaysMin(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = restArguments(function(arrays) { + return _.uniq(flatten(arrays, true, true)); + }); + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); } + return result; + }; - getSetGlobalLocale('en', { - eras: [ - { - since: '0001-01-01', - until: +Infinity, - offset: 1, - name: 'Anno Domini', - narrow: 'AD', - abbr: 'AD', - }, - { - since: '0000-12-31', - until: -Infinity, - offset: 1, - name: 'Before Christ', - narrow: 'BC', - abbr: 'BC', - }, - ], - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal: function (number) { - var b = number % 10, - output = - toInt((number % 100) / 10) === 1 - ? 'th' - : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; - return number + output; - }, + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return _.filter(array, function(value){ + return !_.contains(rest, value); }); + }); - // Side effect imports + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices. + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); - hooks.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - getSetGlobalLocale - ); - hooks.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - getLocale - ); + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; - var mathAbs = Math.abs; + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = restArguments(_.unzip); - function abs() { - var data = this._data; + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. Passing by pairs is the reverse of _.pairs. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); + // Generator function to create the findIndex and findLastIndex functions. + var createPredicateIndexFinder = function(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + }; - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); + // Returns the first index on an array-like that passes a predicate test. + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); - return this; + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; } + return low; + }; - function addSubtract$1(duration, input, value, direction) { - var other = createDuration(input, value); + // Generator function to create the indexOf and lastIndexOf functions. + var createIndexFinder = function(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + }; - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); - return duration._bubble(); + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; } - - // supports only 2.0-style add(1, 's') or add(duration) - function add$1(input, value) { - return addSubtract$1(this, input, value, 1); + if (!step) { + step = stop < start ? -1 : 1; } - // supports only 2.0-style subtract(1, 's') or subtract(duration) - function subtract$1(input, value) { - return addSubtract$1(this, input, value, -1); - } + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); - function absCeil(number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; } - function bubble() { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, - minutes, - hours, - years, - monthsFromDays; + return range; + }; - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if ( - !( - (milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0) - ) - ) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } + // Chunk a single array into multiple arrays, each containing `count` or fewer + // items. + _.chunk = function(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; + }; - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + // Function (ahem) Functions + // ------------------ - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments. + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = restArguments(function(func, context, args) { + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArguments(function(callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); + }); + return bound; + }); - hours = absFloor(minutes / 60); - data.hours = hours % 24; + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder by default, allowing any combination of arguments to be + // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. + _.partial = restArguments(function(func, boundArgs) { + var placeholder = _.partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }); - days += absFloor(hours / 24); + _.partial.placeholder = _; - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = restArguments(function(obj, keys) { + keys = flatten(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = _.bind(obj[key], obj); + } + }); - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; - data.days = days; - data.months = months; - data.years = years; + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = restArguments(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); + }); - return this; - } + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); - function daysToMonths(days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return (days * 4800) / 146097; - } + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; - function monthsToDays(months) { - // the reverse of daysToMonths - return (months * 146097) / 4800; - } + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; - function as(units) { - if (!this.isValid()) { - return NaN; + var throttled = function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; } - var days, - months, - milliseconds = this._milliseconds; + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; - units = normalizeUnits(units); + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; - if (units === 'month' || units === 'quarter' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - switch (units) { - case 'month': - return months; - case 'quarter': - return months / 3; - case 'year': - return months / 12; - } - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week': - return days / 7 + milliseconds / 6048e5; - case 'day': - return days + milliseconds / 864e5; - case 'hour': - return days * 24 + milliseconds / 36e5; - case 'minute': - return days * 1440 + milliseconds / 6e4; - case 'second': - return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': - return Math.floor(days * 864e5) + milliseconds; - default: - throw new Error('Unknown unit ' + units); - } - } - } + return throttled; + }; - // TODO: Use this.as('ms')? - function valueOf$1() { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, result; - function makeAs(alias) { - return function () { - return this.as(alias); - }; - } + var later = function(context, args) { + timeout = null; + if (args) result = func.apply(context, args); + }; - var asMilliseconds = makeAs('ms'), - asSeconds = makeAs('s'), - asMinutes = makeAs('m'), - asHours = makeAs('h'), - asDays = makeAs('d'), - asWeeks = makeAs('w'), - asMonths = makeAs('M'), - asQuarters = makeAs('Q'), - asYears = makeAs('y'); + var debounced = restArguments(function(args) { + if (timeout) clearTimeout(timeout); + if (immediate) { + var callNow = !timeout; + timeout = setTimeout(later, wait); + if (callNow) result = func.apply(this, args); + } else { + timeout = _.delay(later, wait, this, args); + } - function clone$1() { - return createDuration(this); - } + return result; + }); - function get$2(units) { - units = normalizeUnits(units); - return this.isValid() ? this[units + 's']() : NaN; - } + debounced.cancel = function() { + clearTimeout(timeout); + timeout = null; + }; - function makeGetter(name) { - return function () { - return this.isValid() ? this._data[name] : NaN; - }; - } + return debounced; + }; - var milliseconds = makeGetter('milliseconds'), - seconds = makeGetter('seconds'), - minutes = makeGetter('minutes'), - hours = makeGetter('hours'), - days = makeGetter('days'), - months = makeGetter('months'), - years = makeGetter('years'); + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; - function weeks() { - return absFloor(this.days() / 7); - } + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; - var round = Math.round, - thresholds = { - ss: 44, // a few seconds to seconds - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month/week - w: null, // weeks to month - M: 11, // months to year - }; + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; - function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { - var duration = createDuration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - weeks = round(duration.as('w')), - years = round(duration.as('y')), - a = - (seconds <= thresholds.ss && ['s', seconds]) || - (seconds < thresholds.s && ['ss', seconds]) || - (minutes <= 1 && ['m']) || - (minutes < thresholds.m && ['mm', minutes]) || - (hours <= 1 && ['h']) || - (hours < thresholds.h && ['hh', hours]) || - (days <= 1 && ['d']) || - (days < thresholds.d && ['dd', days]); + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; - if (thresholds.w != null) { - a = - a || - (weeks <= 1 && ['w']) || - (weeks < thresholds.w && ['ww', weeks]); - } - a = a || - (months <= 1 && ['M']) || - (months < thresholds.M && ['MM', months]) || - (years <= 1 && ['y']) || ['yy', years]; + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } + _.restArguments = restArguments; - // This function allows you to set the rounding function for relative time strings - function getSetRelativeTimeRounding(roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof roundingFunction === 'function') { - round = roundingFunction; - return true; - } - return false; - } + // Object Functions + // ---------------- - // This function allows you to set a threshold for relative time strings - function getSetRelativeTimeThreshold(threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - if (threshold === 's') { - thresholds.ss = limit - 1; - } - return true; - } + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; - function humanize(argWithSuffix, argThresholds) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } + var collectNonEnumProps = function(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = _.isFunction(constructor) && constructor.prototype || ObjProto; - var withSuffix = false, - th = thresholds, - locale, - output; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); - if (typeof argWithSuffix === 'object') { - argThresholds = argWithSuffix; - argWithSuffix = false; - } - if (typeof argWithSuffix === 'boolean') { - withSuffix = argWithSuffix; - } - if (typeof argThresholds === 'object') { - th = Object.assign({}, thresholds, argThresholds); - if (argThresholds.s != null && argThresholds.ss == null) { - th.ss = argThresholds.s - 1; - } - } + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + }; - locale = this.localeData(); - output = relativeTime$1(this, !withSuffix, th, locale); + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys`. + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; - if (withSuffix) { - output = locale.pastFuture(+this, output); - } + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; - return locale.postformat(output); + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; } + return values; + }; - var abs$1 = Math.abs; + // Returns the results of applying the iteratee to each element of the object. + // In contrast to _.map it returns an object. + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; - function sign(x) { - return (x > 0) - (x < 0) || +x; + // Convert an object into a list of `[key, value]` pairs. + // The opposite of _.object. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; } + return pairs; + }; - function toISOString$1() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - if (!this.isValid()) { - return this.localeData().invalidDate(); - } + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; - var seconds = abs$1(this._milliseconds) / 1000, - days = abs$1(this._days), - months = abs$1(this._months), - minutes, - hours, - years, - s, - total = this.asSeconds(), - totalSign, - ymSign, - daysSign, - hmsSign; + // Return a sorted list of the function names available on the object. + // Aliased as `methods`. + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; } + } + return obj; + }; + }; - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); - totalSign = total < 0 ? '-' : ''; - ymSign = sign(this._months) !== sign(total) ? '-' : ''; - daysSign = sign(this._days) !== sign(total) ? '-' : ''; - hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; + // Assigns a given object with all the own properties in the passed-in object(s). + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); - return ( - totalSign + - 'P' + - (years ? ymSign + years + 'Y' : '') + - (months ? ymSign + months + 'M' : '') + - (days ? daysSign + days + 'D' : '') + - (hours || minutes || seconds ? 'T' : '') + - (hours ? hmsSign + hours + 'H' : '') + - (minutes ? hmsSign + minutes + 'M' : '') + - (seconds ? hmsSign + s + 'S' : '') - ); + // Returns the first key on an object that passes a predicate test. + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; } + }; - var proto$2 = Duration.prototype; - - proto$2.isValid = isValid$1; - proto$2.abs = abs; - proto$2.add = add$1; - proto$2.subtract = subtract$1; - proto$2.as = as; - proto$2.asMilliseconds = asMilliseconds; - proto$2.asSeconds = asSeconds; - proto$2.asMinutes = asMinutes; - proto$2.asHours = asHours; - proto$2.asDays = asDays; - proto$2.asWeeks = asWeeks; - proto$2.asMonths = asMonths; - proto$2.asQuarters = asQuarters; - proto$2.asYears = asYears; - proto$2.valueOf = valueOf$1; - proto$2._bubble = bubble; - proto$2.clone = clone$1; - proto$2.get = get$2; - proto$2.milliseconds = milliseconds; - proto$2.seconds = seconds; - proto$2.minutes = minutes; - proto$2.hours = hours; - proto$2.days = days; - proto$2.weeks = weeks; - proto$2.months = months; - proto$2.years = years; - proto$2.humanize = humanize; - proto$2.toISOString = toISOString$1; - proto$2.toString = toISOString$1; - proto$2.toJSON = toISOString$1; - proto$2.locale = locale; - proto$2.localeData = localeData; + // Internal pick helper function to determine if `obj` has key `key`. + var keyInObj = function(value, key, obj) { + return key in obj; + }; - proto$2.toIsoString = deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', - toISOString$1 - ); - proto$2.lang = lang; + // Return a copy of the object only containing the whitelisted properties. + _.pick = restArguments(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (_.isFunction(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = _.allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }); - // FORMATTING + // Return a copy of the object without the blacklisted properties. + _.omit = restArguments(function(obj, keys) { + var iteratee = keys[0], context; + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = _.map(flatten(keys, false, false), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }); - addFormatToken('X', 0, 0, 'unix'); - addFormatToken('x', 0, 0, 'valueOf'); + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); - // PARSING + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; - addRegexToken('x', matchSigned); - addRegexToken('X', matchTimestamp); - addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input) * 1000); - }); - addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); - }); + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; - //! moment.js + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; - hooks.version = '2.26.0'; + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; - setHookCallback(createLocal); - hooks.fn = proto; - hooks.min = min; - hooks.max = max; - hooks.now = now; - hooks.utc = createUTC; - hooks.unix = createUnix; - hooks.months = listMonths; - hooks.isDate = isDate; - hooks.locale = getSetGlobalLocale; - hooks.invalid = createInvalid; - hooks.duration = createDuration; - hooks.isMoment = isMoment; - hooks.weekdays = listWeekdays; - hooks.parseZone = createInZone; - hooks.localeData = getLocale; - hooks.isDuration = isDuration; - hooks.monthsShort = listMonthsShort; - hooks.weekdaysMin = listWeekdaysMin; - hooks.defineLocale = defineLocale; - hooks.updateLocale = updateLocale; - hooks.locales = listLocales; - hooks.weekdaysShort = listWeekdaysShort; - hooks.normalizeUnits = normalizeUnits; - hooks.relativeTimeRounding = getSetRelativeTimeRounding; - hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; - hooks.calendarFormat = getCalendarFormat; - hooks.prototype = proto; + // Internal recursive comparison function for `isEqual`. + var eq, deepEq; + eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); + }; - // currently HTML5 input type only supports 24-hour formats - hooks.HTML5_FMT = { - DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // - DATE: 'YYYY-MM-DD', // - TIME: 'HH:mm', // - TIME_SECONDS: 'HH:mm:ss', // - TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'GGGG-[W]WW', // - MONTH: 'YYYY-MM', // - }; + // Internal recursive comparison function for `isEqual`. + deepEq = function(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + } - return hooks; + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -}))); + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -/***/ }), + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -/***/ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js ***! - \*******************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; -const moment = __webpack_require__(/*! moment */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js"); + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; -const normalizeStartDate = (intervalStartDate) => { - intervalStartDate = parseInt(intervalStartDate); + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; - if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) { - intervalStartDate = 1; - } + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; - return intervalStartDate; -}; + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; -const getMinimumStartDate = (intervalStartDate, relativeDate) => { - return moment - .min( - relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'), - relativeDate.clone().startOf('month') - ) - .valueOf(); -}; + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; -const getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => { - return moment - .min( - relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'), - relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month') - ) - .valueOf(); -}; + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); -const getInterval = (intervalStartDate, referenceDate = moment()) => { - intervalStartDate = normalizeStartDate(intervalStartDate); - if (intervalStartDate === 1) { - return { - start: referenceDate.startOf('month').valueOf(), - end: referenceDate.endOf('month').valueOf() + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return has(obj, 'callee'); }; } - if (intervalStartDate <= referenceDate.date()) { - return { - start: referenceDate.date(intervalStartDate).startOf('day').valueOf(), - end: getMinimumEndDate(intervalStartDate, true, referenceDate) + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). + var nodelist = root.document && root.document.childNodes; + if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; }; } - return { - start: getMinimumStartDate(intervalStartDate, referenceDate), - end: getMinimumEndDate(intervalStartDate, false, referenceDate) + // Is a given object a finite number? + _.isFinite = function(obj) { + return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj)); }; -}; - -module.exports = { - // Returns the timestamps of the start and end of the current calendar interval - // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) - // - // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned - // f.e. `intervalStartDate` === 31 would generate next intervals : - // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30] - getCurrent: (intervalStartDate) => getInterval(intervalStartDate), - - /** - * Returns the timestamps of the start and end of the a calendar interval that contains a reference date - * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) - * @param {Number} timestamp - the reference date the interval should include - * @returns { start: number, end: number } - timestamps that define the calendar interval - */ - getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)), -}; + // Is the given value `NaN`? + _.isNaN = function(obj) { + return _.isNumber(obj) && isNaN(obj); + }; -/***/ }), - -/***/ "./node_modules/cht-core-3-11/shared-libs/contact-types-utils/src/index.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/contact-types-utils/src/index.js ***! - \*********************************************************************************/ -/***/ ((module) => { - -const HARDCODED_PERSON_TYPE = 'person'; -const HARDCODED_TYPES = [ - 'district_hospital', - 'health_center', - 'clinic', - 'person' -]; + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; -const getContactTypes = config => { - return config && Array.isArray(config.contact_types) && config.contact_types || []; -}; + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; -const getTypeId = (doc) => { - if (!doc) { - return; - } - return doc.type === 'contact' ? doc.contact_type : doc.type; -}; + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; -const getTypeById = (config, typeId) => { - const contactTypes = getContactTypes(config); - return contactTypes.find(type => type.id === typeId); -}; + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, path) { + if (!_.isArray(path)) { + return has(obj, path); + } + var length = path.length; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (obj == null || !hasOwnProperty.call(obj, key)) { + return false; + } + obj = obj[key]; + } + return !!length; + }; -const isPersonType = (type) => { - return type && (type.person || type.id === HARDCODED_PERSON_TYPE); -}; + // Utility Functions + // ----------------- -const isPlaceType = (type) => { - return type && !type.person && type.id !== HARDCODED_PERSON_TYPE; -}; + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; -const hasParents = (type) => !!(type && type.parents && type.parents.length); + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; -const isParentOf = (parentType, childType) => { - if (!parentType || !childType) { - return false; - } + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; - const parentTypeId = typeof parentType === 'string' ? parentType : parentType.id; - return !!(childType && childType.parents && childType.parents.includes(parentTypeId)); -}; + _.noop = function(){}; -// A leaf place type is a contact type that does not have any child place types, but can have child person types -const getLeafPlaceTypes = (config) => { - const types = getContactTypes(config); - const placeTypes = types.filter(type => !type.person); - return placeTypes.filter(type => { - return placeTypes.every(inner => !inner.parents || !inner.parents.includes(type.id)); - }); -}; + // Creates a function that, when passed an object, will traverse that object’s + // properties down the given `path`, specified as an array of keys or indexes. + _.property = function(path) { + if (!_.isArray(path)) { + return shallowProperty(path); + } + return function(obj) { + return deepGet(obj, path); + }; + }; -const getContactType = (config, contact) => { - const typeId = getTypeId(contact); - return typeId && getTypeById(config, typeId); -}; + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + if (obj == null) { + return function(){}; + } + return function(path) { + return !_.isArray(path) ? obj[path] : deepGet(obj, path); + }; + }; -// returns true if contact's type exists and is a person type OR if contact's type is the hardcoded person type -const isPerson = (config, contact) => { - const typeId = getTypeId(contact); - const type = getTypeById(config, typeId) || { id: typeId }; - return isPersonType(type); -}; + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; -const isPlace = (config, contact) => { - const type = getContactType(config, contact); - return isPlaceType(type); -}; + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; -const isHardcodedType = type => HARDCODED_TYPES.includes(type); + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; -const isOrphan = (type) => !type.parents || !type.parents.length; -/** - * Returns an array of child types for the given type id. - * If parent is falsey, returns the types with no parent. - */ -const getChildren = (config, parentType) => { - const types = getContactTypes(config); - return types.filter(type => (!parentType && isOrphan(type)) || isParentOf(parentType, type)); -}; + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; -const getPlaceTypes = (config) => getContactTypes(config).filter(isPlaceType); -const getPersonTypes = (config) => getContactTypes(config).filter(isPersonType); + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); -module.exports = { - getTypeId, - getTypeById, - isPersonType, - isPlaceType, - hasParents, - isParentOf, - getLeafPlaceTypes, - getContactType, - isPerson, - isPlace, - isHardcodedType, - HARDCODED_TYPES, - getContactTypes, - getChildren, - getPlaceTypes, - getPersonTypes, -}; + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + // Traverses the children of `obj` along `path`. If a child is a function, it + // is invoked with its parent as context. Returns the value of the final + // child, or `fallback` if any child is undefined. + _.result = function(obj, path, fallback) { + if (!_.isArray(path)) path = [path]; + var length = path.length; + if (!length) { + return _.isFunction(fallback) ? fallback.call(obj) : fallback; + } + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. + } + obj = _.isFunction(prop) ? prop.call(obj) : prop; + } + return obj; + }; -/***/ }), + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; -/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js": -/*!*************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js ***! - \*************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g + }; -const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); -_.uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); -const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js"); + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; -const deepCopy = obj => JSON.parse(JSON.stringify(obj)); + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; -const selfAndParents = function(self) { - const parents = []; - let current = self; - while (current) { - if (parents.includes(current)) { - return parents; - } + var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; - parents.push(current); - current = current.parent; - } - return parents; -}; + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; -const extractParentIds = current => selfAndParents(current) - .map(parent => parent._id) - .filter(id => id); + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); -const getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id); + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); -const getContactIds = (contacts) => { - const ids = []; - contacts.forEach(doc => { - if (!doc) { - return; - } + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; - const id = utils.getId(doc.contact); - id && ids.push(id); + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } - if (!utils.validLinkedDocs(doc)) { - return; - } - Object.keys(doc.linked_docs).forEach(key => { - const id = utils.getId(doc.linked_docs[key]); - id && ids.push(id); + // Adobe VMs need the match returned to produce the correct offset. + return match; }); - }); + source += "';\n"; - return _.uniq(ids); -}; + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; -module.exports = function(Promise, DB) { - const fillParentsInDocs = function(doc, lineage) { - if (!doc || !lineage.length) { - return doc; - } + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; - // Parent hierarchy starts at the contact for data_records - let currentParent; - if (utils.isReport(doc)) { - currentParent = doc.contact = lineage.shift() || doc.contact; - } else { - // It's a contact - currentParent = doc; + var render; + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; } - const parentIds = extractParentIds(currentParent.parent); - lineage.forEach(function(l, i) { - currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] }; - currentParent = currentParent.parent; - }); + var template = function(data) { + return render.call(this, data, _); + }; - return doc; + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; }; - const fillContactsInDocs = function(docs, contacts) { - if (!contacts || !contacts.length) { - return; - } + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; - docs.forEach(function(doc) { - if (!doc) { - return; - } - const id = utils.getId(doc.contact); - const contactDoc = getContactById(contacts, id); - if (contactDoc) { - doc.contact = deepCopy(contactDoc); - } + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. - if (!utils.validLinkedDocs(doc)) { - return; - } + // Helper function to continue chaining intermediate results. + var chainResult = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; - Object.keys(doc.linked_docs).forEach(key => { - const id = utils.getId(doc.linked_docs[key]); - const contactDoc = getContactById(contacts, id); - if (contactDoc) { - doc.linked_docs[key] = deepCopy(contactDoc); - } - }); + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; }); + return _; }; - const fetchContacts = function(lineage) { - const contactIds = getContactIds(lineage); + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); - // Only fetch docs that are new to us - const lineageContacts = []; - const contactsToFetch = []; - contactIds.forEach(function(id) { - const contact = getContactById(lineage, id); - if (contact) { - lineageContacts.push(deepCopy(contact)); - } else { - contactsToFetch.push(id); - } - }); + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return chainResult(this, obj); + }; + }); - return fetchDocs(contactsToFetch) - .then(function(fetchedContacts) { - return lineageContacts.concat(fetchedContacts); - }); + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return chainResult(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; }; - const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) { - const doc = lineage.shift(); - fillParentsInDocs(doc, lineage); + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; - if (patientLineage && patientLineage.length) { - const patientDoc = patientLineage.shift(); - fillParentsInDocs(patientDoc, patientLineage); - doc.patient = patientDoc; - } + _.prototype.toString = function() { + return String(this._wrapped); + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { + return _; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } +}()); - if (placeLineage && placeLineage.length) { - const placeDoc = placeLineage.shift(); - fillParentsInDocs(placeDoc, placeLineage); - doc.place = placeDoc; - } - return doc; - }; +/***/ }), - /* - * @returns {Object} subjectMaps - * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid] - * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid] - */ - const fetchSubjectsUuids = (records) => { - const shortcodes = []; - const recordToPlaceUuidMap = new Map(); - const recordToPatientUuidMap = new Map(); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/index.js": +/*!**************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/index.js ***! + \**************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - records.forEach(record => { - if (!utils.isReport(record)) { - return; - } +/** + * @module rules-engine + * + * Business logic for interacting with rules documents + */ - const patientId = utils.getPatientId(record); - const placeId = utils.getPlaceId(record); - recordToPatientUuidMap.set(record._id, patientId); - recordToPlaceUuidMap.set(record._id, placeId); +const pouchdbProvider = __webpack_require__(/*! ./pouchdb-provider */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js"); +const wireupToProvider = __webpack_require__(/*! ./provider-wireup */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js"); - shortcodes.push(patientId, placeId); - }); +/** + * @param {Object} db Medic pouchdb database + */ +module.exports = db => { + const provider = pouchdbProvider(db); + return { + /** + * @param {Object} settings Settings for the behavior of the rules engine + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object[]} settings.targets Target definitions from settings doc + * @param {Boolean} settings.enableTasks Flag to enable tasks + * @param {Boolean} settings.enableTargets Flag to enable targets + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's settings document + */ + initialize: (settings) => wireupToProvider.initialize(provider, settings), - if (!shortcodes.some(shortcode => shortcode)) { - return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }); - } + /** + * @returns {Boolean} True if the rules engine is enabled and ready for use + */ + isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(), - return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => { - records.forEach(record => { - const patientShortcode = recordToPatientUuidMap.get(record._id); - recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode)); + /** + * Refreshes all rules documents for a set of contacts and returns their task documents + * + * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are + * @returns {Promise} All the fresh task docs owned by contactIds + */ + fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds), - const placeShortcode = recordToPlaceUuidMap.get(record._id); - recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode)); - }); + /** + * Refreshes all rules documents and returns the latest target document + * + * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the + * target scores + * @param {Integer} filterInterval.start Start timestamp of interval + * @param {Integer} filterInterval.end End timestamp of interval + * @returns {Promise} Array of fresh targets + */ + fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval), - return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }; - }); + /** + * Indicate that the task documents associated with a given subjectId are dirty. + * + * @param {string[]} subjectIds An array of subject ids + * + * @returns {Promise} To mark the subjectIds as dirty + */ + updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds), + + /** + * Determines if either the settings or user's hydrated contact document have changed in a way which will impact + * the result of rules calculations. + * If they have changed in a meaningful way, the calculation state of all contacts is reset + * + * @param {Object} settings Updated settings + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object[]} settings.targets Target definitions from settings doc + * @param {Boolean} settings.enableTasks Flag to enable tasks + * @param {Boolean} settings.enableTargets Flag to enable targets + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's user-settings document + */ + rulesConfigChange: (settings) => { + const cacheIsReset = rulesStateStore.rulesConfigChange(settings); + if (cacheIsReset) { + rulesEmitter.shutdown(); + rulesEmitter.initialize(settings); + } + }, + + /** + * Returns a list of UUIDs of tracked contacts that are marked as dirty + * @returns {Array} list of dirty contacts UUIDs + */ + getDirtyContacts: () => rulesStateStore.getDirtyContacts(), }; +}; - /* - * @returns {Object} lineages - * @returns {Array} lineages.patientLineage - * @returns {Array} lineages.placeLineage - */ - const fetchSubjectLineage = (record) => { - if (!utils.isReport(record)) { - return Promise.resolve({ patientLineage: [], placeLineage: [] }); - } - const patientId = utils.getPatientId(record); - const placeId = utils.getPlaceId(record); +/***/ }), - if (!patientId && !placeId) { - return Promise.resolve({ patientLineage: [], placeLineage: [] }); - } +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js ***! + \*************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => { - const patientUuid = shortcodeToUuidMap.get(patientId); - const placeUuid = shortcodeToUuidMap.get(placeId); +/** + * @module pouchdb-provider + * + * Wireup for accessing rules document data via medic pouch db + */ - return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => { - const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || []; - const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || []; +// TODO work out how to pass in the logger from node/browser +/* eslint-disable no-console */ +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); +const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); - return { patientLineage, placeLineage }; - }); - }); - }; +const RULES_STATE_DOCID = '_local/rulesStateStore'; +const docsOf = (query) => { + return query.then(result => { + const rows = uniqBy(result.rows, 'id'); + return rows.map(row => row.doc).filter(existing => existing); + }); +}; - /* - * @returns {Map} map with [k, v] pairs of [shortcode, uuid] - */ - const contactUuidByShortcode = function(shortcodes) { - const keys = shortcodes - .filter(shortcode => shortcode) - .map(shortcode => [ 'shortcode', shortcode ]); - return DB.query('medic-client/contacts_by_reference', { keys }) - .then(function(results) { - const findIdWithKey = key => { - const matchingRow = results.rows.find(row => row.key[1] === key); - return matchingRow && matchingRow.id; - }; +const medicPouchProvider = db => { + const self = { + // PouchDB.query slows down when provided with a large keys array. + // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids + allTasks: prefix => { + const options = { startkey: `${prefix}-`, endkey: `${prefix}-\ufff0`, include_docs: true }; + return docsOf(db.query('medic-client/tasks_by_contact', options)); + }, - return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ]))); - }); - }; + allTaskData: userSettingsDoc => { + const userSettingsId = userSettingsDoc && userSettingsDoc._id; + return Promise.all([ + docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })), + docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })), + self.allTasks('requester'), + ]) + .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId })); + }, - const fetchLineageById = function(id) { - const options = { - startkey: [id], - endkey: [id, {}], - include_docs: true - }; - return DB.query('medic-client/docs_by_id_lineage', options) - .then(function(result) { - return result.rows.map(function(row) { - return row.doc; - }); - }); - }; + contactsBySubjectId: subjectIds => { + const keys = subjectIds.map(key => ['shortcode', key]); + return db.query('medic-client/contacts_by_reference', { keys, include_docs: true }) + .then(results => { + const shortcodeIds = results.rows.map(result => result.doc._id); + const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id)); - const fetchLineageByIds = function(ids) { - return fetchDocs(ids).then(function(docs) { - return hydrateDocs(docs).then(function(hydratedDocs) { - // Returning a list of docs just like fetchLineageById - const docsList = []; - hydratedDocs.forEach(function(hdoc) { - const docLineage = selfAndParents(hdoc); - docsList.push(docLineage); + return [...shortcodeIds, ...idsThatArentShortcodes]; }); - return docsList; - }); - }); - }; + }, - const fetchDoc = function(id) { - return DB.get(id) - .catch(function(err) { - if (err.status === 404) { - err.statusCode = 404; - } - throw err; + stateChangeCallback: docUpdateClosure(db), + + commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => { + const userContactId = userContactDoc && userContactDoc._id; + const userSettingsId = userSettingsDoc && userSettingsDoc._id; + const _id = `target~${docTag}~${userContactId}~${userSettingsId}`; + const createNew = () => ({ + _id, + type: 'target', + user: userSettingsId, + owner: userContactId, + reporting_period: docTag, }); - }; - const fetchHydratedDoc = function(id, options = {}, callback) { - let lineage; - let patientLineage; - let placeLineage; - if (typeof options === 'function') { - callback = options; - options = {}; - } + const today = moment().startOf('day').valueOf(); + return db.get(_id) + .catch(createNew) + .then(existingDoc => { + if (existingDoc.updated_date === today && !force) { + return false; + } - _.defaults(options, { - throwWhenMissingLineage: false, - }); + existingDoc.targets = targets; + existingDoc.updated_date = today; + return db.put(existingDoc); + }); + }, - return fetchLineageById(id) - .then(function(result) { - lineage = result; + commitTaskDocs: taskDocs => { + if (!taskDocs || taskDocs.length === 0) { + return Promise.resolve([]); + } - if (lineage.length === 0) { - if (options.throwWhenMissingLineage) { - const err = new Error(`Document not found: ${id}`); - err.code = 404; - throw err; - } else { - // Not a doc that has lineage, just do a normal fetch. - return fetchDoc(id); - } - } + console.debug(`Committing ${taskDocs.length} task document updates`); + return db.bulkDocs(taskDocs) + .catch(err => console.error('Error committing task documents', err)); + }, - return fetchSubjectLineage(lineage[0]) - .then((lineages = {}) => { - patientLineage = lineages.patientLineage; - placeLineage = lineages.placeLineage; + existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })), - return fetchContacts(lineage.concat(patientLineage, placeLineage)); - }) - .then(function(contacts) { - fillContactsInDocs(lineage, contacts); - fillContactsInDocs(patientLineage, contacts); - fillContactsInDocs(placeLineage, contacts); - return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage); - }); - }) - .then(function(result) { - if (callback) { - callback(null, result); - } - return result; - }) - .catch(function(err) { - if (callback) { - callback(err); - } else { - throw err; - } - }); - }; + tasksByRelation: (contactIds, prefix) => { + const keys = contactIds.map(contactId => `${prefix}-${contactId}`); + return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true })); + }, - // for data_records, include the first-level contact. - const collectParentIds = function(docs) { - const ids = []; - docs.forEach(function(doc) { - let parent = doc.parent; - if (utils.isReport(doc)) { - const contactId = utils.getId(doc.contact); - if (!contactId) { - return; - } - ids.push(contactId); - parent = doc.contact; + taskDataFor: (contactIds, userSettingsDoc) => { + if (!contactIds || contactIds.length === 0) { + return Promise.resolve({}); } - ids.push(...extractParentIds(parent)); - }); - return _.uniq(ids); - }; + return docsOf(db.allDocs({ keys: contactIds, include_docs: true })) + .then(contactDocs => { + const subjectIds = contactDocs.reduce((agg, contactDoc) => { + registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId)); + return agg; + }, new Set(contactIds)); - // for data_records, doesn't include the first-level contact (it counts as a parent). - const collectLeafContactIds = function(partiallyHydratedDocs) { - const ids = []; - partiallyHydratedDocs.forEach(function(doc) { - const startLineageFrom = utils.isReport(doc) ? doc.contact : doc; - ids.push(...getContactIds(selfAndParents(startLineageFrom))); - }); + const keys = Array.from(subjectIds); + return Promise.all([ + docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })), + self.tasksByRelation(contactIds, 'requester'), + ]) + .then(([reportDocs, taskDocs]) => { + // tighten the connection between reports and contacts + // a report will only be allowed to generate tasks for a single contact! + reportDocs = reportDocs.filter(report => { + const subjectId = registrationUtils.getSubjectId(report); + return subjectIds.has(subjectId); + }); - return _.uniq(ids); + return { + userSettingsId: userSettingsDoc && userSettingsDoc._id, + contactDocs, + reportDocs, + taskDocs, + }; + }); + }); + }, }; - const fetchDocs = function(ids) { - if (!ids || !ids.length) { - return Promise.resolve([]); - } - const keys = _.uniq(ids.filter(id => id)); - if (keys.length === 0) { - return Promise.resolve([]); - } + return self; +}; - return DB.allDocs({ keys, include_docs: true }) - .then(function(results) { - return results.rows - .map(function(row) { - return row.doc; - }) - .filter(function(doc) { - return !!doc; - }); +medicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID; + +const docUpdateClosure = db => { + // previousResult helps avoid conflict errors if this functions is used asynchronously + let previousResult = Promise.resolve(); + return (baseDoc, assigned) => { + Object.assign(baseDoc, assigned); + + previousResult = previousResult + .then(() => db.put(baseDoc)) + .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; }) + .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`)) + .then(() => { + // unsure of how browsers handle long promise chains, so break the chain when possible + previousResult = Promise.resolve(); }); - }; - const hydrateDocs = function(docs) { - if (!docs.length) { - return Promise.resolve([]); - } + return previousResult; + }; +}; - const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return - const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched +module.exports = medicPouchProvider; - let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid] - let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid] - let subjectDocs; - return fetchSubjectsUuids(hydratedDocs) - .then((subjectMaps) => { - placeUuids = subjectMaps.placeUuids; - patientUuids = subjectMaps.patientUuids; +/***/ }), - return fetchDocs([...placeUuids.values(), ...patientUuids.values()]); - }) - .then(subjects => { - subjectDocs = subjects; - knownDocs.push(...subjects); +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js": +/*!************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js ***! + \************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - const firstRoundIdsToFetch = _.uniq([ - ...collectParentIds(hydratedDocs), - ...collectLeafContactIds(hydratedDocs), +/** + * @module wireup + * + * Wireup a data provider to the rules-engine + */ - ...collectParentIds(subjectDocs), - ...collectLeafContactIds(subjectDocs), - ]); +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); - return fetchDocs(firstRoundIdsToFetch); - }) - .then(function(firstRoundFetched) { - knownDocs.push(...firstRoundFetched); - const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched) - .filter(id => !knownDocs.some(doc => doc._id === id)); - return fetchDocs(secondRoundIdsToFetch); - }) - .then(function(secondRoundFetched) { - knownDocs.push(...secondRoundFetched); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); +const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js"); +const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); - fillContactsInDocs(knownDocs, knownDocs); - hydratedDocs.forEach((doc) => { - const reconstructLineage = (docWithLineage, parents) => { - const parentIds = extractParentIds(docWithLineage); - return parentIds.map(id => { - // how can we use hashmaps? - return getContactById(parents, id); - }); - }; +let wireupOptions; - const isReport = utils.isReport(doc); - const findParentsFor = isReport ? doc.contact : doc; - const lineage = reconstructLineage(findParentsFor, knownDocs); +module.exports = { + /** + * @param {Object} provider A data provider + * @param {Object} settings Settings for the behavior of the provider + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object[]} settings.targets Target definitions from settings doc + * @param {Boolean} settings.enableTasks Flag to enable tasks + * @param {Boolean} settings.enableTargets Flag to enable targets + * @param {number} settings.monthStartDate reporting interval start date + * @param {Object} userDoc User's hydrated contact document + */ + initialize: (provider, settings) => { + const isEnabled = rulesEmitter.initialize(settings); + if (!isEnabled) { + return Promise.resolve(); + } - if (isReport) { - lineage.unshift(doc); - } + const { enableTasks=true, enableTargets=true } = settings; + wireupOptions = { enableTasks, enableTargets }; - const patientDoc = getContactById(subjectDocs, patientUuids.get(doc._id)); - const patientLineage = reconstructLineage(patientDoc, knownDocs); + return provider + .existingRulesStateStore() + .then(existingStateDoc => { + if (!rulesEmitter.isLatestNoolsSchema()) { + throw Error('Rules Engine: Updates to the nools schema are required'); + } - const placeDoc = getContactById(subjectDocs, placeUuids.get(doc._id)); - const placeLineage = reconstructLineage(placeDoc, knownDocs); + const contactClosure = updatedState => provider.stateChangeCallback( + existingStateDoc, + { rulesStateStore: updatedState } + ); + const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure); + return handleIntervalTurnover(provider, settings).then(() => { + if (!needsBuilding) { + return; + } - mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage); + rulesStateStore.build(settings, contactClosure); }); - - return hydratedDocs; }); - }; + }, - const fetchHydratedDocs = docIds => { - if (!Array.isArray(docIds)) { - return Promise.reject(new Error('Invalid parameter: "docIds" must be an array')); + /** + * Refreshes the rules emissions for all contacts + * Fetches all tasks in non-terminal state owned by the contacts + * Updates the temporal states of the task documents + * Commits those changes (async) + * + * @param {Object} provider A data provider + * @param {string[]} contactIds An array of contact ids. If undefined, all task documents + * @returns {Promise} All the fresh task docs owned by contacts + */ + fetchTasksFor: (provider, contactIds) => { + if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) { + return disabledResponse(); } - if (!docIds.length) { - return Promise.resolve([]); + return enqueue(() => { + const calculationTimestamp = Date.now(); + return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds) + .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner')) + .then(tasksToDisplay => { + const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp); + provider.commitTaskDocs(docsToCommit); + return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready); + }); + }); + }, + + /** + * Refreshes the rules emissions for all contacts + * + * @param {Object} provider A data provider + * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target + * scores + * @param {Integer} filterInterval.start Start timestamp of interval + * @param {Integer} filterInterval.end End timestamp of interval + * @returns {Promise} The fresh aggregate target doc + */ + fetchTargets: (provider, filterInterval) => { + if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) { + return disabledResponse(); } - if (docIds.length === 1) { - return fetchHydratedDoc(docIds[0]) - .then(doc => [doc]) - .catch(err => { - if (err.status === 404) { - return []; - } + const calculationTimestamp = Date.now(); + const targetEmissionFilter = filterInterval && (emission => { + // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive + return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]'); + }); - throw err; + return enqueue(() => { + return refreshRulesEmissionForContacts(provider, calculationTimestamp) + .then(() => { + const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter); + return storeTargetsDoc(provider, targets, filterInterval).then(() => targets); }); + }); + }, + + /** + * Indicate that the rules emissions associated with a given subjectId are dirty + * + * @param {Object} provider A data provider + * @param {string[]} subjectIds An array of subject ids + * + * @returns {Promise} To complete the transaction marking the subjectIds as dirty + */ + updateEmissionsFor: (provider, subjectIds) => { + if (!subjectIds) { + subjectIds = []; } - return DB - .allDocs({ keys: docIds, include_docs: true }) - .then(result => { - const docs = result.rows.map(row => row.doc).filter(doc => doc); - return hydrateDocs(docs); - }); - }; + if (subjectIds && !Array.isArray(subjectIds)) { + subjectIds = [subjectIds]; + } - return { - /** - * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents) - * @param {String} id The id of the doc to fetch and hydrate - * @param {Object} [options] Options for the behavior of the hydration - * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate. - * When false, does a best effort to return the document regardless of content. - * @returns {Promise} A promise to return the hydrated doc. - */ - fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback), + // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required + return provider.contactsBySubjectId(subjectIds) + .then(contactIds => rulesStateStore.markDirty(contactIds)); + }, +}; - /** - * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc) - * If a doc is not found, it's simply excluded from the results list - * @param {Object[]} docs The array of docs to hydrate - * @returns {Promise} A promise to return the hydrated docs - */ - fetchHydratedDocs: docIds => fetchHydratedDocs(docIds), +let refreshQueue = Promise.resolve(); +const enqueue = callback => { + const listeners = []; + const eventQueue = []; + const emit = evtName => { + // we have to emit `queued` immediately, but there are no listeners listening at this point + // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they + // have events in eventQueue, and call their callback immediately for each matching queued event. + if (!listeners[evtName]) { + return eventQueue.push(evtName); + } + listeners[evtName].forEach(callback => callback()); + }; - /** - * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents) - * @param {Object[]} docs The array of docs to hydrate - * @returns {Promise} - */ - hydrateDocs: docs => hydrateDocs(docs), + emit('queued'); + refreshQueue = refreshQueue.then(() => { + emit('running'); + return callback(); + }); - fetchLineageById, - fetchLineageByIds, - fillContactsInDocs, - fillParentsInDocs, - fetchContacts, + refreshQueue.on = (evtName, callback) => { + listeners[evtName] = listeners[evtName] || []; + listeners[evtName].push(callback); + eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback()); + return refreshQueue; }; -}; + return refreshQueue; +}; -/***/ }), +const disabledResponse = () => { + const p = Promise.resolve([]); + p.on = () => p; + return p; +}; -/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/index.js": -/*!*********************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/index.js ***! - \*********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => { + const refreshAndSave = (freshData, updatedContactIds) => ( + refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions) + .then(refreshed => Promise.all([ + rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions), + provider.commitTaskDocs(refreshed.updatedTaskDocs), + ])) + ); -/** - * @module lineage - */ -module.exports = (Promise, DB) => Object.assign( - {}, - __webpack_require__(/*! ./hydration */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js")(Promise, DB), - __webpack_require__(/*! ./minify */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js") -); + const refreshForAllContacts = (calculationTimestamp) => ( + provider.allTaskData(rulesStateStore.currentUserSettings()) + .then(freshData => ( + refreshAndSave(freshData) + .then(() => { + const contactIds = freshData.contactDocs.map(doc => doc._id); + const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => { + registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId)); + return agg; + }, new Set()); -/***/ }), + const headlessSubjectIds = freshData.reportDocs + .map(doc => registrationUtils.getSubjectId(doc)) + .filter(subjectId => !subjectIds.has(subjectId)); -/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js": -/*!**********************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js ***! - \**********************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]); + }) + )) + ); -const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js"); -const RECURSION_LIMIT = 50; + const refreshForKnownContacts = (calculationTimestamp, contactIds) => { + const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId)); + return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings()) + .then(freshData => refreshAndSave(freshData, dirtyContactIds)) + .then(() => { + rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds); + }); + }; -// Minifies things you would attach to another doc: -// doc.parent = minify(doc.parent) -// Not: -// minify(doc) -function minifyLineage(parent) { - if (!parent || !parent._id) { - return parent; - } + return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => { + if (contactIds) { + return refreshForKnownContacts(calculationTimestamp, contactIds); + } - const docId = parent._id; - const result = { _id: parent._id }; - let minified = result; - for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) { - if (guard === 0) { - throw Error(`Could not minify ${docId}, possible parent recursion.`); + // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in + // reports/tasks) + if (!rulesStateStore.hasAllContacts()) { + return refreshForAllContacts(calculationTimestamp); } - minified.parent = { _id: parent.parent._id }; - minified = minified.parent; - parent = parent.parent; - } + // Once the contact state store has all contacts, trust it and only refresh those marked dirty + return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds()); + }); +}; - return result; -} +const storeTargetsDoc = (provider, targets, filterInterval, force = false) => { + const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest'; + const minifyTarget = target => ({ id: target.id, value: target.value }); -/** - * Remove all hyrdrated items and leave just the ids - * @param {Object} doc The doc to minify - */ -function minify(doc) { - if (!doc) { - return; - } - if (doc.parent) { - doc.parent = minifyLineage(doc.parent); - } - if (doc.contact && doc.contact._id) { - const miniContact = { _id: doc.contact._id }; - if (doc.contact.parent) { - miniContact.parent = minifyLineage(doc.contact.parent); - } - doc.contact = miniContact; + return provider.commitTargetDoc( + targets.map(minifyTarget), + rulesStateStore.currentUserContact(), + rulesStateStore.currentUserSettings(), + targetDocTag, + force + ); +}; + +// Because we only save the `target` document once per day (when we calculate targets for the first time), +// we're losing all updates to targets that happened in the last day of the reporting period. +// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding +// reporting interval (that includes the date when the state was calculated). +// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`, +// which means that they would all be excluded from the emission filter (being outside the past reporting interval). +// https://github.com/medic/cht-core/issues/6209 +const handleIntervalTurnover = (provider, { monthStartDate }) => { + if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) { + return Promise.resolve(); } - if (doc.type === 'data_record') { - delete doc.patient; - delete doc.place; + + const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt(); + if (!stateCalculatedAt) { + return Promise.resolve(); } - if (utils.validLinkedDocs(doc)) { - Object.keys(doc.linked_docs).forEach(key => { - doc.linked_docs[key] = utils.getId(doc.linked_docs[key]); - }); + const currentInterval = calendarInterval.getCurrent(monthStartDate); + // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive + if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) { + return Promise.resolve(); } -} -module.exports = { - minify, - minifyLineage, + const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt); + const targetEmissionFilter = (emission => { + // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive + return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]'); + }); + + const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter); + return storeTargetsDoc(provider, targets, filterInterval, true); }; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js": -/*!*********************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js ***! - \*********************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js ***! + \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const contactTypeUtils = __webpack_require__(/*! @medic/contact-types-utils */ "./node_modules/cht-core-3-11/shared-libs/contact-types-utils/src/index.js"); -const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); +/** + * @module refresh-rules-emissions + * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks + * Creates or updates one task document per unique emission id + * Cancels task documents in non-terminal states if they were not emitted + * + * @requires rules-emitter to be initialized + */ -const isContact = doc => { - if (!doc) { - return; - } +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); +const transformTaskEmissionToDoc = __webpack_require__(/*! ./transform-task-emission-to-doc */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js"); - return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type); +/** + * @param {Object[]} freshData.contactDocs A set of contact documents + * @param {Object[]} freshData.reportDocs All of the contacts' reports + * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact) + * @param {Object[]} freshData.userSettingsId The id of the user's settings document + * + * @param {int} calculationTimestamp Timestamp for the round of rules calculations + * + * @param {Object=} [options] Options for the behavior when refreshing rules + * @param {Boolean} [options.enableTasks=true] Flag to enable tasks + * @param {Boolean} [options.enableTargets=true] Flag to enable targets + * + * @returns {Object} result + * @returns {Object[]} result.targetEmissions Array of raw target emissions + * @returns {Object[]} result.updatedTaskDocs Array of updated task documents + */ +module.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => { + const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData; + return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs) + .then(emissions => Promise.all([ + enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [], + enableTargets ? emissions.targets : [], + ])) + .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions })); }; -const getId = (item) => item && (typeof item === 'string' ? item : item._id); +const getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => { + const { taskDocs = [], userSettingsId } = freshData; + const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs( + taskDocs, + calculationTimestamp + ); -// don't process linked docs for non-contact types -// linked_docs property should be a key-value object -const validLinkedDocs = doc => { - return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs); -}; + const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp)); + const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp) + .map(taskEmission => { + const existingDoc = emissionIdToLatestDocMap[taskEmission._id]; + return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc); + }); -const isReport = (doc) => doc.type === 'data_record'; -const getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id; -const getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id; + const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc); + const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp); + const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp); + const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc); + return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs]; +}; +/** + * Examine the existing task documents which were previously emitted by the same contact + * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive + */ +const getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => { + const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state)); + const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id)); -module.exports = { - getId, - validLinkedDocs, - isReport, - getPatientId, - getPlaceId, + return existingNonTerminalTaskDocs + .filter(doc => !currentEmissionIds.has(doc.emission._id)) + .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt)); }; +/** + * All duplicate task docs that are not in a terminal state are "Cancelled" with a "duplicate" reason + * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB + * @param {number} calculatedAt - Timestamp for the round of rules calculations + * @returns {Array} - task docs with updated state + */ +const getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => { + return duplicatedTaskDocs + .filter(doc => !TaskStates.isTerminal(doc.state)) + .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate')); +}; -/***/ }), - -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/* +It is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner. +We pick the "most ready" emission. +*/ +const disambiguateEmissions = (taskEmissions, forTime) => { + const winners = taskEmissions.reduce((agg, emission) => { + if (!agg[emission._id]) { + agg[emission._id] = emission; + } else { + const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled; + const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled; + if (TaskStates.isMoreReadyThan(incomingState, currentState)) { + agg[emission._id] = emission; + } + } + return agg; + }, {}); -var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js"), - hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js"), - hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js"), - hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js"), - hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js"); + return Object.keys(winners).map(key => winners[key]); // Object.values() +}; /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. + * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in + * on multiple devices). When this happens, we pick the "most ready" most recent task. However, tasks that are authored + * in the future are discarded. + * @param {Array} taskDocs - An array of already exiting task documents + * @param {number} forTime - current calculation timestamp + * @returns {Object} result + * @returns {Object} result.winners - A map of emission id to task pairs + * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; +const disambiguateTaskDocs = (taskDocs, forTime) => { + const duplicates = []; + const winners = {}; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime); + + Object.keys(taskDocsByEmissionId).forEach(emissionId => { + taskDocsByEmissionId[emissionId].forEach(taskDoc => { + if (!winners[emissionId]) { + winners[emissionId] = taskDoc; + return; + } + + const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state); + if ( + // if taskDoc is more ready + stateComparison < 0 || + // or taskDoc is more recent, when having the same state + (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn) + ) { + duplicates.push(winners[emissionId]); + winners[emissionId] = taskDoc; + } else { + duplicates.push(taskDoc); + } + }); + }); -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; + return { winners, duplicates }; +}; -module.exports = Hash; +const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { + const tasksByEmission = {}; + taskDocs + // mitigate the fallout of a user who rewinds their system-clock after creating task docs + .filter(doc => doc.authoredOn <= maxTimestamp) + .forEach(doc => { + const emissionId = doc.emission._id; + if (!tasksByEmission[emissionId]) { + tasksByEmission[emissionId] = []; + } + tasksByEmission[emissionId].push(doc); + }); + return tasksByEmission; +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js ***! - \*****************************************************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js ***! + \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js"), - listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js"), - listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js"), - listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js"), - listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js"); - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. + * @module rules-emitter + * Encapsulates interactions with the nools library + * Handles marshaling of documents into nools facts + * Promisifies the execution of partner "rules" code + * Ensures memory allocated by nools is freed after each run */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} +const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js"); +const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; +let flow; -module.exports = ListCache; +/** +* Sets the rules emitter to an uninitialized state. +*/ +const shutdown = () => { + nools.deleteFlows(); + flow = undefined; +}; +module.exports = { + /** + * Initializes the rules emitter + * + * @param {Object} settings Settings for the behavior of the rules emitter + * @param {Object} settings.rules Rules code from settings doc + * @param {Object[]} settings.taskSchedules Task schedules from settings doc + * @param {Object} settings.contact The logged in user's contact document + * @returns {Boolean} Success + */ + initialize: (settings) => { + if (flow) { + throw Error('Attempted to initialize the rules emitter multiple times.'); + } -/***/ }), + if (!settings.rules) { + return false; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + shutdown(); -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); + try { + const settingsDoc = { tasks: { schedules: settings.taskSchedules } }; + const nootilsInstance = nootils(settingsDoc); + flow = nools.compile(settings.rules, { + name: 'medic', + scope: { + Utils: nootilsInstance, + user: settings.contact, + }, + }); + } catch (err) { + shutdown(); + throw err; + } -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'); + return !!flow; + }, -module.exports = Map; + /** + * When upgrading to version 3.8, partners are required to make schema changes in their partner code + * TODO: Add link to documentation + * + * @returns True if the schema changes are in place + */ + isLatestNoolsSchema: () => { + if (!flow) { + throw Error('task emitter is not enabled -- cannot determine schema version'); + } + const Task = flow.getDefined('task'); + const Target = flow.getDefined('target'); + const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr); + return hasProperty(Task.prototype, 'readyStart') && + hasProperty(Task.prototype, 'readyEnd') && + hasProperty(Target.prototype, 'contact'); + }, -/***/ }), + /** + * Runs the partner's rules code for a set of documents and returns all emissions from nools + * + * @param {Object[]} contactDocs A set of contact documents + * @param {Object[]} reportDocs All of the contacts' reports + * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact) + * + * @returns {Promise} emissions The raw emissions from nools + * @returns {Object[]} emissions.tasks Array of task emissions + * @returns {Object[]} emissions.targets Array of target emissions + */ + getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => { + if (!flow) { + throw Error('task emitter is not enabled -- cannot get emissions'); + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (!Array.isArray(contactDocs)) { + throw Error('invalid argument: contactDocs is expected to be an array'); + } -var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js"), - mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js"), - mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js"), - mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js"), - mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js"); + if (!Array.isArray(reportDocs)) { + throw Error('invalid argument: reportDocs is expected to be an array'); + } -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + if (!Array.isArray(taskDocs)) { + throw Error('invalid argument: taskDocs is expected to be an array'); + } - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + const session = startSession(); + try { + const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs); + facts.forEach(session.assert); + } catch (err) { + session.dispose(); + throw err; + } -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; + return session.match(); + }, -module.exports = MapCache; + /** + * @returns True if the rules emitter is initialized and ready for use + */ + isEnabled: () => !!flow, + shutdown, +}; -/***/ }), +const startSession = function() { + if (!flow) { + throw Error('Failed to start task session. Not initialized'); + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const session = flow.getSession(); + const tasks = []; + const targets = []; + session.on('task', task => tasks.push(task)); + session.on('target', target => targets.push(target)); -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); + return { + assert: session.assert.bind(session), + dispose: session.dispose.bind(session), -/* Built-in method references that are verified to be native. */ -var Set = getNative(root, 'Set'); + // session.match can return a thenable but not a promise. so wrap it in a real promise + match: () => new Promise((resolve, reject) => { + session.match(err => { + session.dispose(); + if (err) { + return reject(err); + } -module.exports = Set; + resolve({ tasks, targets }); + }); + }), + }; +}; +const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { + const Contact = flow.getDefined('contact'); -/***/ }), + const factByContactId = contactDocs.reduce((agg, contact) => { + agg[contact._id] = new Contact({ contact, reports: [], tasks: [] }); + return agg; + }, {}); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const factBySubjectId = contactDocs.reduce((agg, contactDoc) => { + const subjectIds = registrationUtils.getSubjectIds(contactDoc); + for (const subjectId of subjectIds) { + if (!agg[subjectId]) { + agg[subjectId] = factByContactId[contactDoc._id]; + } + } + return agg; + }, {}); -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js"), - setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js"), - setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js"); + const addHeadlessContact = (contactId) => { + const contact = contactId ? { _id: contactId } : undefined; + const newFact = new Contact({ contact, reports: [], tasks: [] }); + factByContactId[contactId] = factBySubjectId[contactId] = newFact; + return newFact; + }; -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; + for (const report of reportDocs) { + const subjectIdInReport = registrationUtils.getSubjectId(report); + const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport); + factOfPatient.reports.push(report); + } - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); + if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) { + for (const task of taskDocs) { + const sourceId = task.requester; + const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId); + factOfPatient.tasks.push(task); + } } -} -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; -module.exports = SetCache; + return Object.keys(factByContactId).map(key => { + factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date); + return factByContactId[key]; + }); // Object.values(factByContactId) +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js ***! - \**************************************************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js ***! + \**************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); +/** + * @module rules-state-store + * In-memory datastore containing + * 1. Details on the state of each contact's rules calculations + * 2. Target emissions @see target-state + */ +const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); +const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js"); -/** Built-in value references. */ -var Symbol = root.Symbol; +const EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000; +let state; +let currentUserContact; +let currentUserSettings; +let onStateChange; -module.exports = Symbol; +const self = { + /** + * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state. + * + * @param {Object} existingState State object previously passed to the stateChangeCallback + * @param {Object} settings Settings for the behavior of the rules store + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's user-settings document + * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes. + * Receives the updated state as the only parameter. + * @returns {Boolean} that represents whether or not the state needs to be rebuilt + */ + load: (existingState, settings, stateChangeCallback) => { + if (state) { + throw Error('Attempted to initialize the rules-state-store multiple times.'); + } + state = existingState; + currentUserContact = settings.contact; + currentUserSettings = settings.user; + setOnChangeState(stateChangeCallback); -/***/ }), + const rulesConfigHash = hashRulesConfig(settings); + if (state && state.rulesConfigHash !== rulesConfigHash) { + state.stale = true; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return !state || state.stale; + }, -var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js"); + /** + * Initializes an empty rules-state-store. + * + * @param {Object} settings Settings for the behavior of the rules store + * @param {Object} settings.contact User's hydrated contact document + * @param {Object} settings.user User's user-settings document + * @param {number} settings.monthStartDate reporting interval start date + * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes. + * Receives the updated state as the only parameter. + */ + build: (settings, stateChangeCallback) => { + if (state && !state.stale) { + throw Error('Attempted to initialize the rules-state-store multiple times.'); + } -/** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; -} + state = { + rulesConfigHash: hashRulesConfig(settings), + contactState: {}, + targetState: targetState.createEmptyState(settings.targets), + monthStartDate: settings.monthStartDate, + }; + currentUserContact = settings.contact; + currentUserSettings = settings.user; -module.exports = arrayIncludes; + setOnChangeState(stateChangeCallback); + return onStateChange(state); + }, + /** + * "Dirty" indicates that the contact's task documents are not up to date. They should be refreshed before being used. + * + * The dirty state can be due to: + * 1. The time of a contact's most recent task calculation is unknown + * 2. The contact's most recent task calculation expires + * 3. The contact is explicitly marked as dirty + * 4. Configurations impacting rules calculations have changed + * + * @param {string} contactId The id of the contact to test for dirtiness + * @returns {Boolean} True if dirty + */ + isDirty: contactId => { + if (!contactId) { + return false; + } -/***/ }), + if (!state.contactState[contactId]) { + return true; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js ***! - \*************************************************************************************************************/ -/***/ ((module) => { + const now = Date.now(); + const { calculatedAt, expireAt, isDirty } = state.contactState[contactId]; + return !expireAt || + isDirty || + calculatedAt > now || /* system clock changed */ + expireAt < now; /* isExpired */ + }, -/** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; + /** + * Determines if either the settings document or user's hydrated contact document have changed in a way which + * will impact the result of rules calculations. + * If they have changed in a meaningful way, the calculation state of all contacts is reset + * + * @param {Object} settings Settings for the behavior of the rules store + * @returns {Boolean} True if the state of all contacts has been reset + */ + rulesConfigChange: (settings) => { + const rulesConfigHash = hashRulesConfig(settings); + if (state.rulesConfigHash !== rulesConfigHash) { + state = { + rulesConfigHash, + contactState: {}, + targetState: targetState.createEmptyState(settings.targets), + monthStartDate: settings.monthStartDate, + }; + currentUserContact = settings.contact; + currentUserSettings = settings.user; - while (++index < length) { - if (comparator(value, array[index])) { + onStateChange(state); return true; } - } - return false; -} - -module.exports = arrayIncludesWith; + return false; + }, -/***/ }), + /** + * @param {int} calculatedAt Timestamp of the calculation + * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated + */ + markFresh: (calculatedAt, contactIds) => { + if (!Array.isArray(contactIds)) { + contactIds = [contactIds]; + } + contactIds = contactIds.filter(id => id); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (contactIds.length === 0) { + return; + } -var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js"); + const reportingInterval = calendarInterval.getCurrent(state.monthStartDate); + const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS; -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; + for (const contactId of contactIds) { + state.contactState[contactId] = { + calculatedAt, + expireAt: Math.min(reportingInterval.end, defaultExpiry), + }; } - } - return -1; -} - -module.exports = assocIndexOf; + return onStateChange(state); + }, -/***/ }), + /** + * @param {string[]} contactIds Array of contact ids to be marked as dirty + */ + markDirty: contactIds => { + if (!Array.isArray(contactIds)) { + contactIds = [contactIds]; + } + contactIds = contactIds.filter(id => id); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js ***! - \*********************************************************************************************************/ -/***/ ((module) => { + if (contactIds.length === 0) { + return; + } -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); + for (const contactId of contactIds) { + if (!state.contactState[contactId]) { + state.contactState[contactId] = {}; + } - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; + state.contactState[contactId].isDirty = true; } - } - return -1; -} -module.exports = baseFindIndex; + return onStateChange(state); + }, + /** + * @returns {string[]} The id of all contacts tracked by the store + */ + getContactIds: () => Object.keys(state.contactState), -/***/ }), + /** + * The rules system supports the concept of "headless" reports and "headless" task documents. In these scenarios, + * a report exists on a user's device while the associated contact document of that report is not on the device. + * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the + * needs_signoff attribute but not the associated patient. + * + * In these cases, getting a list of "all the contacts with rules" requires us to look not just through contact + * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which + * indicates if the contact ids in the store can serve as a trustworthy authority. + * + * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with + * rules + */ + markAllFresh: (calculatedAt, contactIds) => { + state.allContactIds = true; + return self.markFresh(calculatedAt, contactIds); + }, -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + /** + * @returns True if markAllFresh has been called on the current store state. + */ + hasAllContacts: () => !!state.allContactIds, -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js"), - getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js"), - objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js"); + /** + * @returns {string} User contact document + */ + currentUserContact: () => currentUserContact, -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; + /** + * @returns {string} User settings document + */ + currentUserSettings: () => currentUserSettings, -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + /** + * @returns {number} The timestamp when the current loaded state was last updated + */ + stateLastUpdatedAt: () => state.calculatedAt, -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} + /** + * @returns {number} current monthStartDate + */ + getMonthStartDate: () => state.monthStartDate, -module.exports = baseGetTag; + /** + * @returns {boolean} whether or not the state is loaded + */ + isLoaded: () => !!state, + /** + * Store a set of target emissions which were emitted by refreshing a set of contacts + * + * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed. + * If undefined, all contacts are updated. + * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter). + */ + storeTargetEmissions: (contactIds, targetEmissions) => { + const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions); + if (isUpdated) { + return onStateChange(state); + } + }, -/***/ }), + /** + * Aggregates the stored target emissions into target models + * + * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should + * be aggregated + * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf()) + * + * @returns {Object[]} result + * @returns {string} result[n].* All attributes of the target as defined in the settings doc + * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter + * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the + * latest emission with truthy "pass" + * @returns {Integer} result[n].percent The percentage of pass/total + */ + aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions( + state.targetState, + targetEmissionFilter + ), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + /** + * Returns a list of UUIDs of tracked contacts that are marked as dirty + * @returns {Array} list of dirty contacts UUIDs + */ + getDirtyContacts: () => self.getContactIds().filter(self.isDirty), +}; -var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js"), - baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js"), - strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js"); +const hashRulesConfig = (settings) => { + const asString = JSON.stringify(settings); + return md5(asString); +}; -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); -} +const setOnChangeState = (stateChangeCallback) => { + onStateChange = (state) => { + state.calculatedAt = new Date().getTime(); -module.exports = baseIndexOf; + if (stateChangeCallback && typeof stateChangeCallback === 'function') { + return stateChangeCallback(state); + } + }; +}; + +// ensure all exported functions are only ever called after initialization +module.exports = Object.keys(self).reduce((agg, key) => { + agg[key] = (...args) => { + if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) { + throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`); + } + + return self[key](...args); + }; + return agg; +}, {}); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js ***! - \*****************************************************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js ***! + \*********************************************************************************/ /***/ ((module) => { /** - * The base implementation of `_.isNaN` without support for number objects. + * @module target-state * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * Stores raw target-emissions in a minified, efficient, deterministic structure + * Handles removal of "cancelled" target emissions + * Aggregates target emissions into targets */ -function baseIsNaN(value) { - return value !== value; -} - -module.exports = baseIsNaN; +/** @summary state + * Functions in this module all accept a "state" parameter or return a "state" object. + * This state has the following structure: + * + * @example + * { + * target.id: { + * id: 'target_id', + * type: 'count', + * goal: 0, + * .. + * + * emissions: { + * emission.id: { + * requestor.id: { + * pass: boolean, + * date: timestamp, + * order: timestamp, + * }, + * .. + * }, + * .. + * } + * }, + * .. + * } + */ -/***/ }), - -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js"), - isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js"); +module.exports = { + /** + * Builds an empty target-state. + * + * @param {Object[]} targets An array of target definitions + */ + createEmptyState: (targets=[]) => { + return targets + .reduce((agg, definition) => { + agg[definition.id] = Object.assign({}, definition, { emissions: {} }); + return agg; + }, {}); + }, -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + storeTargetEmissions: (state, contactIds, targetEmissions) => { + let isUpdated = false; + if (!Array.isArray(targetEmissions)) { + throw Error('targetEmissions argument must be an array'); + } -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; + // Remove all emissions that were previously emitted by the contact ("cancelled emissions") + if (!contactIds) { + for (const targetId of Object.keys(state)) { + state[targetId].emissions = {}; + } + } else { + for (const contactId of contactIds) { + for (const targetId of Object.keys(state)) { + for (const emissionId of Object.keys(state[targetId].emissions)) { + const emission = state[targetId].emissions[emissionId]; + if (emission[contactId]) { + delete emission[contactId]; + isUpdated = true; + } + } + } + } + } -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; + // Merge the emission data into state + for (const emission of targetEmissions) { + const target = state[emission.type]; + const requestor = emission.contact && emission.contact._id; + if (target && requestor && !emission.deleted) { + const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {}; + targetRequestors[requestor] = { + pass: !!emission.pass, + groupBy: emission.groupBy, + date: emission.date, + order: emission.contact.reported_date || -1, + }; + isUpdated = true; + } + } -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; + return isUpdated; + }, -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + aggregateStoredTargetEmissions: (state, targetEmissionFilter) => { + const pick = (obj, attrs) => attrs + .reduce((agg, attr) => { + if (Object.hasOwnProperty.call(obj, attr)) { + agg[attr] = obj[attr]; + } + return agg; + }, {}); -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); + const scoreTarget = target => { + const emissionIds = Object.keys(target.emissions); + const relevantEmissions = emissionIds + // emissions passing the "targetEmissionFilter" + .map(emissionId => { + const requestorIds = Object.keys(target.emissions[emissionId]); + const filteredInstanceIds = requestorIds.filter(requestorId => { + return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]); + }); + return pick(target.emissions[emissionId], filteredInstanceIds); + }) -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} + // if there are multiple emissions with the same id emitted by different contacts, disambiguate them + .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor)) + .filter(emission => emission); -module.exports = baseIsNative; + const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte; + if (!passingThreshold) { + return { + pass: relevantEmissions.filter(emission => emission.pass).length, + total: relevantEmissions.length, + }; + } + const countPassedEmissionsByGroup = {}; + const countEmissionsByGroup = {}; -/***/ }), + relevantEmissions.forEach(emission => { + const groupBy = emission.groupBy; + if (!groupBy) { + return; + } + if (!countPassedEmissionsByGroup[groupBy]) { + countPassedEmissionsByGroup[groupBy] = 0; + countEmissionsByGroup[groupBy] = 0; + } + countEmissionsByGroup[groupBy]++; + if (emission.pass) { + countPassedEmissionsByGroup[groupBy]++; + } + }); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const groups = Object.keys(countEmissionsByGroup); -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js"), - arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js"), - arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js"), - createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js"); + return { + pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length, + total: groups.length, + }; + }; -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; + const aggregateTarget = target => { + const aggregated = pick( + target, + ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible'] + ); + aggregated.value = scoreTarget(target); -/** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; + if (aggregated.type === 'percent') { + aggregated.value.percent = aggregated.value.total ? + Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0; + } - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; + return aggregated; + }; - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; + const emissionOfLatestRequestor = emissionsByRequestor => { + return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => { + const current = emissionsByRequestor[requestorId]; + if (!previousValue || !previousValue.order || current.order > previousValue.order) { + return current; } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; -} + return previousValue; + }, undefined); + }; -module.exports = baseUniq; + return Object.keys(state).map(targetId => aggregateTarget(state[targetId])); + }, +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js ***! - \****************************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js": +/*!********************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js ***! + \********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @module task-states + * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine */ -function cacheHas(cache, key) { - return cache.has(key); -} - -module.exports = cacheHas; +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -/***/ }), +/** + * Problems: + * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading + * to this rules-engine. + * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged. + * The two scenarios above are important for maintaining the client-side performance of the app. + * + * Therefore, we only consider task emissions "timely" if they end within a fixed time period. + * However, if this window is too short then users who don't login frequently may fail to create a task document at all. + * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are + * recorded as docs. + */ +const TIMELY_WHEN_NEWER_THAN_DAYS = 60; -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// This must be a comparable string format to avoid a bunch of parsing. For example, "2000-01-01" < "2010-11-31" +const formatString = 'YYYY-MM-DD'; -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js"); +const States = { + /** + * Task has been calculated but it is scheduled in the future + */ + Draft: 'Draft', -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; + /** + * Task is currently showing to the user + */ + Ready: 'Ready', -module.exports = coreJsData; + /** + * Task was not emitted when refreshing the contact + * Task resulted from invalid emissions + */ + Cancelled: 'Cancelled', + /** + * Task was emitted with { resolved: true } + */ + Completed: 'Completed', -/***/ }), + /** + * Task was never terminated and is now outside the allowed time window + */ + Failed: 'Failed', +}; -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const getDisplayWindow = (taskEmission) => { + const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate; + if (hasExistingDisplayWindow) { + return { + dueDate: taskEmission.dueDate, + startDate: taskEmission.startDate, + endDate: taskEmission.endDate, + }; + } -var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js"), - noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js"); + const dueDate = moment(taskEmission.date); + if (!dueDate.isValid()) { + return { dueDate: NaN, startDate: NaN, endDate: NaN }; + } -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; + return { + dueDate: dueDate.format(formatString), + startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString), + endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString), + }; +}; -/** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ -var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); +const mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled]; +const orderOf = state => { + const order = mostReadyOrder.indexOf(state); + return order >= 0 ? order : mostReadyOrder.length; }; -module.exports = createSet; +module.exports = { + isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state), + isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB), -/***/ }), + compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js ***! - \******************************************************************************************************/ -/***/ ((module) => { + calculateState: (taskEmission, timestamp) => { + if (!taskEmission) { + return false; + } -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + if (taskEmission.resolved) { + return States.Completed; + } -module.exports = freeGlobal; + if (taskEmission.deleted) { + return States.Cancelled; + } + // invalid data yields falsey + if (!taskEmission.date && !taskEmission.dueDate) { + return false; + } -/***/ }), + const { startDate, endDate } = getDisplayWindow(taskEmission); + if (!startDate || !endDate || startDate > endDate || endDate < startDate) { + return false; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const timestampAsDate = moment(timestamp).format(formatString); + if (startDate > timestampAsDate) { + return States.Draft; + } -var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js"); + if (endDate < timestampAsDate) { + return States.Failed; + } -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} + return States.Ready; + }, -module.exports = getMapData; + getDisplayWindow, + isTimely: (taskEmission, timestamp) => { + const { endDate } = getDisplayWindow(taskEmission); + return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString); + }, -/***/ }), + setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => { + if (!taskDoc) { + return; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (!updatedState) { + taskDoc.state = States.Cancelled; + taskDoc.stateReason = 'invalid'; + } else { + taskDoc.state = updatedState; + if (reason) { + taskDoc.stateReason = reason; + } + } -var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js"), - getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js"); + const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || []; + const mostRecentState = stateHistory[stateHistory.length - 1]; + if (!mostRecentState || taskDoc.state !== mostRecentState.state) { + const stateChange = { state: taskDoc.state, timestamp }; + stateHistory.push(stateChange); + } -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} + return taskDoc; + }, +}; -module.exports = getNative; +Object.assign(module.exports, States); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js ***! - \*****************************************************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js ***! + \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. + * @module transform-task-emission-to-doc + * Transforms a task emission into the schema used by task documents + * Minifies all unneeded data from the emission + * Merges emission data into an existing document, or creates a new task document (as appropriate) */ -var nativeObjectToString = objectProto.toString; -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. + * @param {Object} taskEmission A task emission from the rules engine + * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated + * @param {Object} existingDoc The most recent taskDocument with the same emission id + + * @returns {Object} result + * @returns {Object} result.taskDoc The result of the transformation + * @returns {Boolean} result.isUpdated True if the document is new or has been altered */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; +module.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => { + const emittedState = TaskStates.calculateState(taskEmission, calculatedAt); + const baseFromExistingDoc = !!existingDoc && + (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState); - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} + // reduce document churn - don't tweak data on existing docs in terminal states + const baselineStateOfExistingDoc = baseFromExistingDoc && + !TaskStates.isTerminal(existingDoc.state) && + JSON.stringify(existingDoc); + const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt); + taskDoc.user = userSettingsId; + taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id; + taskDoc.owner = taskEmission.contact && taskEmission.contact._id; + minifyEmission(taskDoc, taskEmission); + TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt); - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; + const isUpdated = (() => { + if (!baseFromExistingDoc) { + // do not create new documents where the initial state is cancelled (invalid emission) + return taskDoc.state !== TaskStates.Cancelled; } - } - return result; -} -module.exports = getRawTag; + return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc; + })(); + return { + isUpdated, + taskDoc, + }; +}; -/***/ }), +const minifyEmission = (taskDoc, emission) => { + const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ] + .reduce((agg, attr) => { + if (Object.hasOwnProperty.call(emission, attr)) { + agg[attr] = emission[attr]; + } + return agg; + }, {}); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js ***! - \****************************************************************************************************/ -/***/ ((module) => { + /* + The declarative configuration "contactLabel" results in a task emission with a contact with only a name attribute. + For backward compatibility, contacts which don't provide an id should not be minified and rehydrated. + */ + if (emission.contact) { + minified.contact = { name: emission.contact.name }; + } -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} + if (emission.date || emission.dueDate) { + const timeWindow = TaskStates.getDisplayWindow(emission); + Object.assign(minified, timeWindow); + } + minified.actions && minified.actions + .filter(action => action && action.content) + .forEach(action => { + if (!minified.forId) { + minified.forId = action.content.contact && action.content.contact._id; + } + delete action.content.contact; + }); -module.exports = getValue; + taskDoc.emission = minified; + return taskDoc; +}; + +const newTaskDoc = (emission, userSettingsId, calculatedAt) => ({ + _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`, + type: 'task', + authoredOn: calculatedAt, + stateHistory: [], +}); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js ***! - \*****************************************************************************************************/ +/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js ***! + \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash + * @module update-temporal-states + * As time elapses, documents change state because the timing window has been reached. + * Eg. Documents with state Draft move to state Ready just because it is now after midnight */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; -} - -module.exports = hashClear; - - -/***/ }), - -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js ***! - \******************************************************************************************************/ -/***/ ((module) => { +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. + * @param {Object[]} taskDocs A list of task documents to evaluate + * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} +module.exports = (taskDocs, timestamp = Date.now()) => { + const docsToCommit = []; + for (const taskDoc of taskDocs) { + let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp); + if (taskDoc.authoredOn > timestamp) { + updatedState = TaskStates.Cancelled; + } -module.exports = hashDelete; + if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) { + TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp); + docsToCommit.push(taskDoc); + } + } + + return docsToCommit; +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js ***! - \***************************************************************************************************/ +/***/ "./node_modules/cht-core-3-12/shared-libs/calendar-interval/src/index.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/calendar-interval/src/index.js ***! + \*******************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; +const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +const normalizeStartDate = (intervalStartDate) => { + intervalStartDate = parseInt(intervalStartDate); -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; + if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) { + intervalStartDate = 1; } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} - -module.exports = hashGet; + return intervalStartDate; +}; -/***/ }), +const getMinimumStartDate = (intervalStartDate, relativeDate) => { + return moment + .min( + relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'), + relativeDate.clone().startOf('month') + ) + .valueOf(); +}; -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js ***! - \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => { + return moment + .min( + relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'), + relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month') + ) + .valueOf(); +}; -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); +const getInterval = (intervalStartDate, referenceDate = moment()) => { + intervalStartDate = normalizeStartDate(intervalStartDate); + if (intervalStartDate === 1) { + return { + start: referenceDate.startOf('month').valueOf(), + end: referenceDate.endOf('month').valueOf() + }; + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + if (intervalStartDate <= referenceDate.date()) { + return { + start: referenceDate.date(intervalStartDate).startOf('day').valueOf(), + end: getMinimumEndDate(intervalStartDate, true, referenceDate) + }; + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + return { + start: getMinimumStartDate(intervalStartDate, referenceDate), + end: getMinimumEndDate(intervalStartDate, false, referenceDate) + }; +}; -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); -} +module.exports = { + // Returns the timestamps of the start and end of the current calendar interval + // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) + // + // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned + // f.e. `intervalStartDate` === 31 would generate next intervals : + // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30] + getCurrent: (intervalStartDate) => getInterval(intervalStartDate), -module.exports = hashHas; + /** + * Returns the timestamps of the start and end of the a calendar interval that contains a reference date + * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31) + * @param {Number} timestamp - the reference date the interval should include + * @returns { start: number, end: number } - timestamps that define the calendar interval + */ + getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)), +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js ***! - \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js"); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; +/***/ "./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js": +/*!***************************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js ***! + \***************************************************************************/ +/***/ ((module) => { /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. + * CHT Script API - Auth module + * Provides tools related to Authentication. */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} - -module.exports = hashSet; +const ADMIN_ROLE = '_admin'; +const NATIONAL_ADMIN_ROLE = 'national_admin'; // Deprecated: kept for backwards compatibility: #4525 +const DISALLOWED_PERMISSION_PREFIX = '!'; -/***/ }), - -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js ***! - \*****************************************************************************************************/ -/***/ ((module) => { +const isAdmin = (userRoles) => { + if (!Array.isArray(userRoles)) { + return false; + } -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} + return [ADMIN_ROLE, NATIONAL_ADMIN_ROLE].some(role => userRoles.includes(role)); +}; -module.exports = isKeyable; +const groupPermissions = (permissions) => { + const groups = { allowed: [], disallowed: [] }; + permissions.forEach(permission => { + if (permission.indexOf(DISALLOWED_PERMISSION_PREFIX) === 0) { + // Removing the DISALLOWED_PERMISSION_PREFIX and keeping the permission name. + groups.disallowed.push(permission.substring(1)); + } else { + groups.allowed.push(permission); + } + }); -/***/ }), + return groups; +}; -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const debug = (reason, permissions, roles) => { + // eslint-disable-next-line no-console + console.debug(`CHT Script API :: ${reason}. User roles: ${roles}. Wanted permissions: ${permissions}`); +}; -var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js"); +const checkUserHasPermissions = (permissions, userRoles, chtPermissionsSettings, expectedToHave) => { + return permissions.every(permission => { + const roles = chtPermissionsSettings[permission]; -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); + if (!roles) { + return !expectedToHave; + } -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} + return expectedToHave === userRoles.some(role => roles.includes(role)); + }); +}; -module.exports = isMasked; +const verifyParameters = (permissions, userRoles, chtPermissionsSettings) => { + if (!Array.isArray(permissions) || !permissions.length) { + debug('Permissions to verify are not provided or have invalid type'); + return false; + } + if (!Array.isArray(userRoles)) { + debug('User roles are not provided or have invalid type'); + return false; + } -/***/ }), + if (!chtPermissionsSettings || !Object.keys(chtPermissionsSettings).length) { + debug('CHT-Core\'s configured permissions are not provided'); + return false; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js ***! - \**********************************************************************************************************/ -/***/ ((module) => { + return true; +}; /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache + * Verify if the user's role has the permission(s). + * @param permissions {string | string[]} Permission(s) to verify + * @param userRoles {string[]} Array of user roles. + * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings. + * @return {boolean} */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} +const hasPermissions = (permissions, userRoles, chtPermissionsSettings) => { + if (permissions && typeof permissions === 'string') { + permissions = [ permissions ]; + } -module.exports = listCacheClear; + if (!verifyParameters(permissions, userRoles, chtPermissionsSettings)) { + return false; + } + const { allowed, disallowed } = groupPermissions(permissions); -/***/ }), + if (isAdmin(userRoles)) { + if (disallowed.length) { + debug('Disallowed permission(s) found for admin', permissions, userRoles); + return false; + } + // Admin has the permissions automatically. + return true; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js ***! - \***********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const hasDisallowed = !checkUserHasPermissions(disallowed, userRoles, chtPermissionsSettings, false); + const hasAllowed = checkUserHasPermissions(allowed, userRoles, chtPermissionsSettings, true); -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); + if (hasDisallowed) { + debug('Found disallowed permission(s)', permissions, userRoles); + return false; + } -/** Used for built-in method references. */ -var arrayProto = Array.prototype; + if (!hasAllowed) { + debug('Missing permission(s)', permissions, userRoles); + return false; + } -/** Built-in value references. */ -var splice = arrayProto.splice; + return true; +}; /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. + * Verify if the user's role has all the permissions of any of the provided groups. + * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping + * @param userRoles {string[]} Array of user roles. + * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings. + * @return {boolean} */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { +const hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => { + if (!verifyParameters(permissionsGroupList, userRoles, chtPermissionsSettings)) { return false; } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} - -module.exports = listCacheDelete; + const validGroup = permissionsGroupList.every(permissions => Array.isArray(permissions)); + if (!validGroup) { + debug('Permission groups to verify are invalid'); + return false; + } -/***/ }), + const allowedGroupList = []; + const disallowedGroupList = []; + permissionsGroupList.forEach(permissions => { + const { allowed, disallowed } = groupPermissions(permissions); + allowedGroupList.push(allowed); + disallowedGroupList.push(disallowed); + }); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (isAdmin(userRoles)) { + if (disallowedGroupList.every(permissions => permissions.length)) { + debug('Disallowed permission(s) found for admin', permissionsGroupList, userRoles); + return false; + } + // Admin has the permissions automatically. + return true; + } -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); + const hasAnyPermissionGroup = permissionsGroupList.some((permissions, i) => { + const hasAnyAllowed = checkUserHasPermissions(allowedGroupList[i], userRoles, chtPermissionsSettings, true); + const hasAnyDisallowed = !checkUserHasPermissions(disallowedGroupList[i], userRoles, chtPermissionsSettings, false); + // Checking the 'permission group' is valid. + return hasAnyAllowed && !hasAnyDisallowed; + }); -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + if (!hasAnyPermissionGroup) { + debug('No matching permissions', permissionsGroupList, userRoles); + return false; + } - return index < 0 ? undefined : data[index][1]; -} + return true; +}; -module.exports = listCacheGet; +module.exports = { + hasPermissions, + hasAnyPermission +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js ***! - \********************************************************************************************************/ +/***/ "./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/index.js": +/*!****************************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/index.js ***! + \****************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * CHT Script API - Index + * Builds and exports a versioned API from feature modules. + * Whenever possible keep this file clean by defining new features in modules. */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -module.exports = listCacheHas; - - -/***/ }), - -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const auth = __webpack_require__(/*! ./auth */ "./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js"); -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js"); +/** + * Verify if the user's role has the permission(s). + * @param permissions {string | string[]} Permission(s) to verify + * @param userRoles {string[]} Array of user roles. + * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings. + * @return {boolean} + */ +const hasPermissions = (permissions, userRoles, chtPermissionsSettings) => { + return auth.hasPermissions(permissions, userRoles, chtPermissionsSettings); +}; /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. + * Verify if the user's role has all the permissions of any of the provided groups. + * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping + * @param userRoles {string[]} Array of user roles. + * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings. + * @return {boolean} */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); +const hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => { + return auth.hasAnyPermission(permissionsGroupList, userRoles, chtPermissionsSettings); +}; - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; +module.exports = { + v1: { + hasPermissions, + hasAnyPermission } - return this; -} - -module.exports = listCacheSet; +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js ***! - \*********************************************************************************************************/ +/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js": +/*!*************************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js ***! + \*************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js"), - ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js"); +const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); +_.uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js"); -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} +const deepCopy = obj => JSON.parse(JSON.stringify(obj)); -module.exports = mapCacheClear; +const selfAndParents = function(self) { + const parents = []; + let current = self; + while (current) { + if (parents.includes(current)) { + return parents; + } + parents.push(current); + current = current.parent; + } + return parents; +}; -/***/ }), +const extractParentIds = current => selfAndParents(current) + .map(parent => parent._id) + .filter(id => id); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id); -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); +const getContactIds = (contacts) => { + const ids = []; + contacts.forEach(doc => { + if (!doc) { + return; + } -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} + const id = utils.getId(doc.contact); + id && ids.push(id); -module.exports = mapCacheDelete; + if (!utils.validLinkedDocs(doc)) { + return; + } + Object.keys(doc.linked_docs).forEach(key => { + const id = utils.getId(doc.linked_docs[key]); + id && ids.push(id); + }); + }); + return _.uniq(ids); +}; -/***/ }), +module.exports = function(Promise, DB) { + const fillParentsInDocs = function(doc, lineage) { + if (!doc || !lineage.length) { + return doc; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // Parent hierarchy starts at the contact for data_records + let currentParent; + if (utils.isReport(doc)) { + currentParent = doc.contact = lineage.shift() || doc.contact; + } else { + // It's a contact + currentParent = doc; + } -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); + const parentIds = extractParentIds(currentParent.parent); + lineage.forEach(function(l, i) { + currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] }; + currentParent = currentParent.parent; + }); + + return doc; + }; + + const fillContactsInDocs = function(docs, contacts) { + if (!contacts || !contacts.length) { + return; + } + + docs.forEach(function(doc) { + if (!doc) { + return; + } + const id = utils.getId(doc.contact); + const contactDoc = getContactById(contacts, id); + if (contactDoc) { + doc.contact = deepCopy(contactDoc); + } -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} + if (!utils.validLinkedDocs(doc)) { + return; + } -module.exports = mapCacheGet; + Object.keys(doc.linked_docs).forEach(key => { + const id = utils.getId(doc.linked_docs[key]); + const contactDoc = getContactById(contacts, id); + if (contactDoc) { + doc.linked_docs[key] = deepCopy(contactDoc); + } + }); + }); + }; + const fetchContacts = function(lineage) { + const contactIds = getContactIds(lineage); -/***/ }), + // Only fetch docs that are new to us + const lineageContacts = []; + const contactsToFetch = []; + contactIds.forEach(function(id) { + const contact = getContactById(lineage, id); + if (contact) { + lineageContacts.push(deepCopy(contact)); + } else { + contactsToFetch.push(id); + } + }); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return fetchDocs(contactsToFetch) + .then(function(fetchedContacts) { + return lineageContacts.concat(fetchedContacts); + }); + }; -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); + const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) { + const doc = lineage.shift(); + fillParentsInDocs(doc, lineage); -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} + if (patientLineage && patientLineage.length) { + const patientDoc = patientLineage.shift(); + fillParentsInDocs(patientDoc, patientLineage); + doc.patient = patientDoc; + } -module.exports = mapCacheHas; + if (placeLineage && placeLineage.length) { + const placeDoc = placeLineage.shift(); + fillParentsInDocs(placeDoc, placeLineage); + doc.place = placeDoc; + } + return doc; + }; -/***/ }), + /* + * @returns {Object} subjectMaps + * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid] + * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid] + */ + const fetchSubjectsUuids = (records) => { + const shortcodes = []; + const recordToPlaceUuidMap = new Map(); + const recordToPatientUuidMap = new Map(); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + records.forEach(record => { + if (!utils.isReport(record)) { + return; + } -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js"); + const patientId = utils.getPatientId(record); + const placeId = utils.getPlaceId(record); + recordToPatientUuidMap.set(record._id, patientId); + recordToPlaceUuidMap.set(record._id, placeId); -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; + shortcodes.push(patientId, placeId); + }); - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} + if (!shortcodes.some(shortcode => shortcode)) { + return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }); + } -module.exports = mapCacheSet; + return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => { + records.forEach(record => { + const patientShortcode = recordToPatientUuidMap.get(record._id); + recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode)); + const placeShortcode = recordToPlaceUuidMap.get(record._id); + recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode)); + }); -/***/ }), + return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap }; + }); + }; -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + /* + * @returns {Object} lineages + * @returns {Array} lineages.patientLineage + * @returns {Array} lineages.placeLineage + */ + const fetchSubjectLineage = (record) => { + if (!utils.isReport(record)) { + return Promise.resolve({ patientLineage: [], placeLineage: [] }); + } -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js"); + const patientId = utils.getPatientId(record); + const placeId = utils.getPlaceId(record); -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); + if (!patientId && !placeId) { + return Promise.resolve({ patientLineage: [], placeLineage: [] }); + } -module.exports = nativeCreate; + return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => { + const patientUuid = shortcodeToUuidMap.get(patientId); + const placeUuid = shortcodeToUuidMap.get(placeId); + return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => { + const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || []; + const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || []; -/***/ }), + return { patientLineage, placeLineage }; + }); + }); + }; -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js ***! - \**********************************************************************************************************/ -/***/ ((module) => { + /* + * @returns {Map} map with [k, v] pairs of [shortcode, uuid] + */ + const contactUuidByShortcode = function(shortcodes) { + const keys = shortcodes + .filter(shortcode => shortcode) + .map(shortcode => [ 'shortcode', shortcode ]); -/** Used for built-in method references. */ -var objectProto = Object.prototype; + return DB.query('medic-client/contacts_by_reference', { keys }) + .then(function(results) { + const findIdWithKey = key => { + const matchingRow = results.rows.find(row => row.key[1] === key); + return matchingRow && matchingRow.id; + }; -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; + return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ]))); + }); + }; -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); -} + const fetchLineageById = function(id) { + const options = { + startkey: [id], + endkey: [id, {}], + include_docs: true + }; + return DB.query('medic-client/docs_by_id_lineage', options) + .then(function(result) { + return result.rows.map(function(row) { + return row.doc; + }); + }); + }; -module.exports = objectToString; + const fetchLineageByIds = function(ids) { + return fetchDocs(ids).then(function(docs) { + return hydrateDocs(docs).then(function(hydratedDocs) { + // Returning a list of docs just like fetchLineageById + const docsList = []; + hydratedDocs.forEach(function(hdoc) { + const docLineage = selfAndParents(hdoc); + docsList.push(docLineage); + }); + return docsList; + }); + }); + }; + const fetchDoc = function(id) { + return DB.get(id) + .catch(function(err) { + if (err.status === 404) { + err.statusCode = 404; + } + throw err; + }); + }; -/***/ }), + const fetchHydratedDoc = function(id, options = {}, callback) { + let lineage; + let patientLineage; + let placeLineage; + if (typeof options === 'function') { + callback = options; + options = {}; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + _.defaults(options, { + throwWhenMissingLineage: false, + }); -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js"); + return fetchLineageById(id) + .then(function(result) { + lineage = result; -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + if (lineage.length === 0) { + if (options.throwWhenMissingLineage) { + const err = new Error(`Document not found: ${id}`); + err.code = 404; + throw err; + } else { + // Not a doc that has lineage, just do a normal fetch. + return fetchDoc(id); + } + } -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); + return fetchSubjectLineage(lineage[0]) + .then((lineages = {}) => { + patientLineage = lineages.patientLineage; + placeLineage = lineages.placeLineage; -module.exports = root; + return fetchContacts(lineage.concat(patientLineage, placeLineage)); + }) + .then(function(contacts) { + fillContactsInDocs(lineage, contacts); + fillContactsInDocs(patientLineage, contacts); + fillContactsInDocs(placeLineage, contacts); + return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage); + }); + }) + .then(function(result) { + if (callback) { + callback(null, result); + } + return result; + }) + .catch(function(err) { + if (callback) { + callback(err); + } else { + throw err; + } + }); + }; + // for data_records, include the first-level contact. + const collectParentIds = function(docs) { + const ids = []; + docs.forEach(function(doc) { + let parent = doc.parent; + if (utils.isReport(doc)) { + const contactId = utils.getId(doc.contact); + if (!contactId) { + return; + } + ids.push(contactId); + parent = doc.contact; + } -/***/ }), + ids.push(...extractParentIds(parent)); + }); + return _.uniq(ids); + }; -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js ***! - \*******************************************************************************************************/ -/***/ ((module) => { + // for data_records, doesn't include the first-level contact (it counts as a parent). + const collectLeafContactIds = function(partiallyHydratedDocs) { + const ids = []; + partiallyHydratedDocs.forEach(function(doc) { + const startLineageFrom = utils.isReport(doc) ? doc.contact : doc; + ids.push(...getContactIds(selfAndParents(startLineageFrom))); + }); -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; + return _.uniq(ids); + }; -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} + const fetchDocs = function(ids) { + if (!ids || !ids.length) { + return Promise.resolve([]); + } + const keys = _.uniq(ids.filter(id => id)); + if (keys.length === 0) { + return Promise.resolve([]); + } -module.exports = setCacheAdd; + return DB.allDocs({ keys, include_docs: true }) + .then(function(results) { + return results.rows + .map(function(row) { + return row.doc; + }) + .filter(function(doc) { + return !!doc; + }); + }); + }; + const hydrateDocs = function(docs) { + if (!docs.length) { + return Promise.resolve([]); + } -/***/ }), + const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return + const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js ***! - \*******************************************************************************************************/ -/***/ ((module) => { + let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid] + let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid] -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} + return fetchSubjectsUuids(hydratedDocs) + .then((subjectMaps) => { + placeUuids = subjectMaps.placeUuids; + patientUuids = subjectMaps.patientUuids; -module.exports = setCacheHas; + return fetchDocs([...placeUuids.values(), ...patientUuids.values()]); + }) + .then(subjects => { + knownDocs.push(...subjects); + const firstRoundIdsToFetch = _.uniq([ + ...collectParentIds(hydratedDocs), + ...collectLeafContactIds(hydratedDocs), -/***/ }), + ...collectParentIds(subjects), + ...collectLeafContactIds(subjects), + ]); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js ***! - \******************************************************************************************************/ -/***/ ((module) => { + return fetchDocs(firstRoundIdsToFetch); + }) + .then(function(firstRoundFetched) { + knownDocs.push(...firstRoundFetched); + const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched) + .filter(id => !knownDocs.some(doc => doc._id === id)); + return fetchDocs(secondRoundIdsToFetch); + }) + .then(function(secondRoundFetched) { + knownDocs.push(...secondRoundFetched); -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); + fillContactsInDocs(knownDocs, knownDocs); + hydratedDocs.forEach((doc) => { + const reconstructLineage = (docWithLineage, parents) => { + const parentIds = extractParentIds(docWithLineage); + return parentIds.map(id => { + // how can we use hashmaps? + return getContactById(parents, id); + }); + }; - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} + const isReport = utils.isReport(doc); + const findParentsFor = isReport ? doc.contact : doc; + const lineage = reconstructLineage(findParentsFor, knownDocs); -module.exports = setToArray; + if (isReport) { + lineage.unshift(doc); + } + const patientDoc = getContactById(knownDocs, patientUuids.get(doc._id)); + const patientLineage = reconstructLineage(patientDoc, knownDocs); -/***/ }), + const placeDoc = getContactById(knownDocs, placeUuids.get(doc._id)); + const placeLineage = reconstructLineage(placeDoc, knownDocs); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js ***! - \*********************************************************************************************************/ -/***/ ((module) => { + mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage); + }); -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; + return hydratedDocs; + }); + }; - while (++index < length) { - if (array[index] === value) { - return index; + const fetchHydratedDocs = docIds => { + if (!Array.isArray(docIds)) { + return Promise.reject(new Error('Invalid parameter: "docIds" must be an array')); } - } - return -1; -} -module.exports = strictIndexOf; + if (!docIds.length) { + return Promise.resolve([]); + } + if (docIds.length === 1) { + return fetchHydratedDoc(docIds[0]) + .then(doc => [doc]) + .catch(err => { + if (err.status === 404) { + return []; + } -/***/ }), + throw err; + }); + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js ***! - \****************************************************************************************************/ -/***/ ((module) => { + return DB + .allDocs({ keys: docIds, include_docs: true }) + .then(result => { + const docs = result.rows.map(row => row.doc).filter(doc => doc); + return hydrateDocs(docs); + }); + }; -/** Used for built-in method references. */ -var funcProto = Function.prototype; + return { + /** + * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents) + * @param {String} id The id of the doc to fetch and hydrate + * @param {Object} [options] Options for the behavior of the hydration + * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate. + * When false, does a best effort to return the document regardless of content. + * @returns {Promise} A promise to return the hydrated doc. + */ + fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback), -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; + /** + * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc) + * If a doc is not found, it's simply excluded from the results list + * @param {Object[]} docs The array of docs to hydrate + * @returns {Promise} A promise to return the hydrated docs + */ + fetchHydratedDocs: docIds => fetchHydratedDocs(docIds), -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} + /** + * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents) + * @param {Object[]} docs The array of docs to hydrate + * @returns {Promise} + */ + hydrateDocs: docs => hydrateDocs(docs), -module.exports = toSource; + fetchLineageById, + fetchLineageByIds, + fillContactsInDocs, + fillParentsInDocs, + fetchContacts, + }; +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js ***! - \*********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/index.js": +/*!*********************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/index.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true + * @module lineage */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -module.exports = eq; +module.exports = (Promise, DB) => Object.assign( + {}, + __webpack_require__(/*! ./hydration */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js")(Promise, DB), + __webpack_require__(/*! ./minify */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js") +); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js ***! - \*****************************************************************************************************/ +/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js": +/*!**********************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js ***! + \**********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js"); - -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js"); +const RECURSION_LIMIT = 50; -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; +// Minifies things you would attach to another doc: +// doc.parent = minify(doc.parent) +// Not: +// minify(doc) +function minifyLineage(parent) { + if (!parent || !parent._id) { + return parent; } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} - -module.exports = isFunction; + const docId = parent._id; + const result = { _id: parent._id }; + let minified = result; + for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) { + if (guard === 0) { + throw Error(`Could not minify ${docId}, possible parent recursion.`); + } -/***/ }), + minified.parent = { _id: parent.parent._id }; + minified = minified.parent; + parent = parent.parent; + } -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js ***! - \***************************************************************************************************/ -/***/ ((module) => { + return result; +} /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false + * Remove all hyrdrated items and leave just the ids + * @param {Object} doc The doc to minify */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); +function minify(doc) { + if (!doc) { + return; + } + if (doc.parent) { + doc.parent = minifyLineage(doc.parent); + } + if (doc.contact && doc.contact._id) { + const miniContact = { _id: doc.contact._id }; + if (doc.contact.parent) { + miniContact.parent = minifyLineage(doc.contact.parent); + } + doc.contact = miniContact; + } + if (doc.type === 'data_record') { + delete doc.patient; + delete doc.place; + } + + if (utils.validLinkedDocs(doc)) { + Object.keys(doc.linked_docs).forEach(key => { + doc.linked_docs[key] = utils.getId(doc.linked_docs[key]); + }); + } } -module.exports = isObject; +module.exports = { + minify, + minifyLineage, +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js ***! - \***********************************************************************************************/ -/***/ ((module) => { +/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js": +/*!*********************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ -function noop() { - // No operation performed. -} +const contactTypeUtils = __webpack_require__(/*! @medic/contact-types-utils */ "./node_modules/cht-core-3-13/shared-libs/contact-types-utils/src/index.js"); +const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); -module.exports = noop; +const isContact = doc => { + if (!doc) { + return; + } + return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type); +}; -/***/ }), +const getId = (item) => item && (typeof item === 'string' ? item : item._id); -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// don't process linked docs for non-contact types +// linked_docs property should be a key-value object +const validLinkedDocs = doc => { + return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs); +}; -var baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js"); +const isReport = (doc) => doc.type === 'data_record'; +const getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id; +const getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id; -/** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ -function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; -} -module.exports = uniq; +module.exports = { + getId, + validLinkedDocs, + isReport, + getPatientId, + getPlaceId, +}; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/registration-utils/src/index.js": /*!********************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/registration-utils/src/index.js ***! \********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { -const uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js"); +const uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); const formCodeMatches = (conf, form) => { return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form); @@ -69292,9 +70451,9 @@ exports.getSubjectId = report => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js ***! \******************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -69328,7 +70487,7 @@ exports.getSubjectId = report => { if (true) { if ( true && module.exports) { - module.exports = defineArgumentsExtended(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")); + module.exports = defineArgumentsExtended(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")); } } else {} @@ -69339,9 +70498,9 @@ exports.getSubjectId = report => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js ***! \**************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -69996,7 +71155,7 @@ exports.getSubjectId = report => { if (true) { if ( true && module.exports) { - module.exports = defineArray(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + module.exports = defineArray(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); } } else {} @@ -70011,9 +71170,9 @@ exports.getSubjectId = report => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -70054,9 +71213,9 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js ***! \*****************************************************************************************/ /***/ ((module) => { @@ -70160,9 +71319,9 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js ***! \*************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -71094,7 +72253,7 @@ module.exports = charenc; if (true) { if ( true && module.exports) { - module.exports = defineDate(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")); + module.exports = defineDate(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")); } } else {} @@ -71110,9 +72269,9 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -72041,19 +73200,19 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js"); +module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js"); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js ***! \********************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -72136,7 +73295,7 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor if (true) { if ( true && module.exports) { - module.exports = defineExtended(__webpack_require__(/*! extender */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js")); + module.exports = defineExtended(__webpack_require__(/*! extender */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js")); } } else {} @@ -72152,9 +73311,9 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js ***! \***********************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -72686,7 +73845,7 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor if (true) { if ( true && module.exports) { - module.exports = defineExtender(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")); + module.exports = defineExtender(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")); } } else {} @@ -72695,19 +73854,19 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js"); +module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js"); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js ***! \*****************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -72949,7 +74108,7 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co if (true) { if ( true && module.exports) { - module.exports = defineFunction(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + module.exports = defineFunction(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); } } else {} @@ -72965,9 +74124,9 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js": /*!**************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js ***! \**************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -73216,7 +74375,7 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co if (true) { if ( true && module.exports) { - module.exports = defineHt(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")().register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")).register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")).register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js"))); + module.exports = defineHt(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")().register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")).register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")).register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js"))); } } else {} @@ -73232,9 +74391,9 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -73263,9 +74422,9 @@ function isSlowBuffer (obj) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js ***! \***********************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -73756,7 +74915,7 @@ function isSlowBuffer (obj) { if (true) { if ( true && module.exports) { - module.exports = defineIsa(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")); + module.exports = defineIsa(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")); } } else {} @@ -73767,9 +74926,9 @@ function isSlowBuffer (obj) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js ***! \*****************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -74666,11 +75825,11 @@ function isSlowBuffer (obj) { if (true) { if ( true && module.exports) { - module.exports = defineLeafy(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")() - .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")) - .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")) - .register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")) - .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js")) + module.exports = defineLeafy(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")() + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js")) ); } @@ -74687,14 +75846,14 @@ function isSlowBuffer (obj) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var DataView = getNative(root, 'DataView'); @@ -74704,17 +75863,17 @@ module.exports = DataView; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js": /*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js ***! \******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js"), - hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js"), - hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js"), - hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js"), - hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js"); +var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js"), + hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js"), + hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js"), + hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js"), + hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js"); /** * Creates a hash object. @@ -74746,17 +75905,17 @@ module.exports = Hash; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js"), - listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js"), - listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js"), - listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js"), - listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js"); +var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js"), + listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js"), + listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js"), + listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js"), + listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js"); /** * Creates an list cache object. @@ -74788,14 +75947,14 @@ module.exports = ListCache; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js ***! \*****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Map = getNative(root, 'Map'); @@ -74805,17 +75964,17 @@ module.exports = Map; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js"), - mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js"), - mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js"), - mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js"), - mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js"); +var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js"), + mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js"), + mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js"), + mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js"), + mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js"); /** * Creates a map cache object to store key-value pairs. @@ -74847,14 +76006,14 @@ module.exports = MapCache; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Promise = getNative(root, 'Promise'); @@ -74864,14 +76023,14 @@ module.exports = Promise; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js ***! \*****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Set = getNative(root, 'Set'); @@ -74881,15 +76040,15 @@ module.exports = Set; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"), - setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js"), - setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js"); +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"), + setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js"), + setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js"); /** * @@ -74918,18 +76077,18 @@ module.exports = SetCache; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js"), - stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js"), - stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js"), - stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js"), - stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js"); +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js"), + stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js"), + stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js"), + stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js"), + stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js"); /** * Creates a stack cache object to store key-value pairs. @@ -74955,13 +76114,13 @@ module.exports = Stack; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /** Built-in value references. */ var Symbol = root.Symbol; @@ -74971,13 +76130,13 @@ module.exports = Symbol; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /** Built-in value references. */ var Uint8Array = root.Uint8Array; @@ -74987,14 +76146,14 @@ module.exports = Uint8Array; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var WeakMap = getNative(root, 'WeakMap'); @@ -75004,9 +76163,9 @@ module.exports = WeakMap; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -75039,13 +76198,13 @@ module.exports = arrayFilter; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js"); +var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js"); /** * A specialized version of `_.includes` for arrays without support for @@ -75066,9 +76225,9 @@ module.exports = arrayIncludes; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js ***! \*******************************************************************************************************/ /***/ ((module) => { @@ -75098,18 +76257,18 @@ module.exports = arrayIncludesWith; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); +var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -75157,9 +76316,9 @@ module.exports = arrayLikeKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -75188,9 +76347,9 @@ module.exports = arrayMap; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -75218,9 +76377,9 @@ module.exports = arrayPush; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -75251,13 +76410,13 @@ module.exports = arraySome; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js"); +var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js"); /** * Gets the index at which the `key` is found in `array` of key-value pairs. @@ -75282,9 +76441,9 @@ module.exports = assocIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js ***! \***************************************************************************************************/ /***/ ((module) => { @@ -75316,14 +76475,14 @@ module.exports = baseFindIndex; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** * The base implementation of `_.get` without support for default values. @@ -75350,14 +76509,14 @@ module.exports = baseGet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js ***! \****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"); +var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"); /** * The base implementation of `getAllKeys` and `getAllKeysIn` which uses @@ -75380,15 +76539,15 @@ module.exports = baseGetAllKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js"), - objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js"); /** `Object#toString` result references. */ var nullTag = '[object Null]', @@ -75418,9 +76577,9 @@ module.exports = baseGetTag; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -75441,15 +76600,15 @@ module.exports = baseHasIn; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js"), - baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js"), - strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js"); +var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js"), + baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js"), + strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js"); /** * The base implementation of `_.indexOf` without `fromIndex` bounds checks. @@ -75471,14 +76630,14 @@ module.exports = baseIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var argsTag = '[object Arguments]'; @@ -75499,14 +76658,14 @@ module.exports = baseIsArguments; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** * The base implementation of `_.isEqual` which supports partial comparisons @@ -75537,20 +76696,20 @@ module.exports = baseIsEqual; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), - equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js"), - equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js"), - getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js"), + equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; @@ -75630,14 +76789,14 @@ module.exports = baseIsEqualDeep; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), - baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"); +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -75702,9 +76861,9 @@ module.exports = baseIsMatch; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -75724,16 +76883,16 @@ module.exports = baseIsNaN; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), - isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); /** * Used to match `RegExp` @@ -75781,15 +76940,15 @@ module.exports = baseIsNative; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', @@ -75851,17 +77010,17 @@ module.exports = baseIsTypedArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js"), - baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - property = __webpack_require__(/*! ./property */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js"); +var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js"), + baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + property = __webpack_require__(/*! ./property */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js"); /** * The base implementation of `_.iteratee`. @@ -75892,14 +77051,14 @@ module.exports = baseIteratee; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js"), - nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js"); +var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js"), + nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -75932,15 +77091,15 @@ module.exports = baseKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js"), - getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"); +var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js"), + getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"); /** * The base implementation of `_.matches` which doesn't clone `source`. @@ -75964,19 +77123,19 @@ module.exports = baseMatches; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"), - get = __webpack_require__(/*! ./get */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js"), - hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"), + get = __webpack_require__(/*! ./get */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -76007,9 +77166,9 @@ module.exports = baseMatchesProperty; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js ***! \**************************************************************************************************/ /***/ ((module) => { @@ -76031,13 +77190,13 @@ module.exports = baseProperty; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); /** * A specialized version of `baseProperty` which supports deep paths. @@ -76057,9 +77216,9 @@ module.exports = basePropertyDeep; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -76087,16 +77246,16 @@ module.exports = baseTimes; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -76134,9 +77293,9 @@ module.exports = baseToString; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -76158,18 +77317,18 @@ module.exports = baseUnary; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), - arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js"), - arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"), - createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js"), + arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"), + createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -76240,9 +77399,9 @@ module.exports = baseUniq; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -76263,16 +77422,16 @@ module.exports = cacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js"), - toString = __webpack_require__(/*! ./toString */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js"); +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js"), + toString = __webpack_require__(/*! ./toString */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js"); /** * Casts `value` to a path array if it's not one. @@ -76294,13 +77453,13 @@ module.exports = castPath; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); /** Used to detect overreaching core-js shims. */ var coreJsData = root['__core-js_shared__']; @@ -76310,15 +77469,15 @@ module.exports = coreJsData; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js"), - noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -76339,15 +77498,15 @@ module.exports = createSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), - arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"); +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -76432,18 +77591,18 @@ module.exports = equalArrays; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js"), - eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), - mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -76554,13 +77713,13 @@ module.exports = equalByTag; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js"); +var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; @@ -76653,9 +77812,9 @@ module.exports = equalObjects; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -76667,15 +77826,15 @@ module.exports = freeGlobal; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js"), - getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js"); +var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js"); /** * Creates an array of own enumerable property names and symbols of `object`. @@ -76693,13 +77852,13 @@ module.exports = getAllKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js"); +var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js"); /** * Gets the data for `map`. @@ -76721,14 +77880,14 @@ module.exports = getMapData; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js"); +var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js"); /** * Gets the property names, values, and compare flags of `object`. @@ -76755,14 +77914,14 @@ module.exports = getMatchData; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js"), - getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js"); +var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js"), + getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js"); /** * Gets the native function at `key` of `object`. @@ -76782,13 +77941,13 @@ module.exports = getNative; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -76838,14 +77997,14 @@ module.exports = getRawTag; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js"), - stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js"); +var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -76878,19 +78037,19 @@ module.exports = getSymbols; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js"), - Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js"), - Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js"), - WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js"), - baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); +var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js"), + Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js"), + baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); /** `Object#toString` result references. */ var mapTag = '[object Map]', @@ -76946,9 +78105,9 @@ module.exports = getTag; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -76969,18 +78128,18 @@ module.exports = getValue; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** * Checks if `path` exists on `object`. @@ -77018,13 +78177,13 @@ module.exports = hasPath; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** * Removes all key-value entries from the hash. @@ -77043,9 +78202,9 @@ module.exports = hashClear; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -77070,13 +78229,13 @@ module.exports = hashDelete; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -77110,13 +78269,13 @@ module.exports = hashGet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -77143,13 +78302,13 @@ module.exports = hashHas; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -77176,9 +78335,9 @@ module.exports = hashSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -77211,14 +78370,14 @@ module.exports = isIndex; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, @@ -77250,9 +78409,9 @@ module.exports = isKey; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -77275,13 +78434,13 @@ module.exports = isKeyable; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js"); +var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js"); /** Used to detect methods masquerading as native. */ var maskSrcKey = (function() { @@ -77305,9 +78464,9 @@ module.exports = isMasked; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -77333,13 +78492,13 @@ module.exports = isPrototype; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js": /*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js"); +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js"); /** * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. @@ -77358,9 +78517,9 @@ module.exports = isStrictComparable; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js ***! \****************************************************************************************************/ /***/ ((module) => { @@ -77381,13 +78540,13 @@ module.exports = listCacheClear; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** Used for built-in method references. */ var arrayProto = Array.prototype; @@ -77426,13 +78585,13 @@ module.exports = listCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** * Gets the list cache value for `key`. @@ -77455,13 +78614,13 @@ module.exports = listCacheGet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** * Checks if a list cache value for `key` exists. @@ -77481,13 +78640,13 @@ module.exports = listCacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** * Sets the list cache `key` to `value`. @@ -77517,15 +78676,15 @@ module.exports = listCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js"), - ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js"); +var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js"), + ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js"); /** * Removes all key-value entries from the map. @@ -77548,13 +78707,13 @@ module.exports = mapCacheClear; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js ***! \****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Removes `key` and its value from the map. @@ -77576,13 +78735,13 @@ module.exports = mapCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Gets the map value for `key`. @@ -77602,13 +78761,13 @@ module.exports = mapCacheGet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Checks if a map value for `key` exists. @@ -77628,13 +78787,13 @@ module.exports = mapCacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Sets the map `key` to `value`. @@ -77660,9 +78819,9 @@ module.exports = mapCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -77688,9 +78847,9 @@ module.exports = mapToArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js ***! \*************************************************************************************************************/ /***/ ((module) => { @@ -77718,13 +78877,13 @@ module.exports = matchesStrictComparable; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js"); +var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js"); /** Used as the maximum memoize cache size. */ var MAX_MEMOIZE_SIZE = 500; @@ -77754,13 +78913,13 @@ module.exports = memoizeCapped; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"); /* Built-in method references that are verified to be native. */ var nativeCreate = getNative(Object, 'create'); @@ -77770,13 +78929,13 @@ module.exports = nativeCreate; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js"); +var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js"); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeKeys = overArg(Object.keys, Object); @@ -77786,14 +78945,14 @@ module.exports = nativeKeys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js ***! \**********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; @@ -77827,9 +78986,9 @@ module.exports = nodeUtil; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js ***! \****************************************************************************************************/ /***/ ((module) => { @@ -77859,9 +79018,9 @@ module.exports = objectToString; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -77884,13 +79043,13 @@ module.exports = overArg; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js": /*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js ***! \******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); /** Detect free variable `self`. */ var freeSelf = typeof self == 'object' && self && self.Object === Object && self; @@ -77903,9 +79062,9 @@ module.exports = root; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -77932,9 +79091,9 @@ module.exports = setCacheAdd; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -77956,9 +79115,9 @@ module.exports = setCacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -77984,13 +79143,13 @@ module.exports = setToArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"); +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"); /** * Removes all key-value entries from the stack. @@ -78009,9 +79168,9 @@ module.exports = stackClear; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -78037,9 +79196,9 @@ module.exports = stackDelete; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -78061,9 +79220,9 @@ module.exports = stackGet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -78085,15 +79244,15 @@ module.exports = stackHas; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js"), - MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -78129,9 +79288,9 @@ module.exports = stackSet; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js ***! \***************************************************************************************************/ /***/ ((module) => { @@ -78162,13 +79321,13 @@ module.exports = strictIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js"); +var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js"); /** Used to match property names within property paths. */ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; @@ -78199,13 +79358,13 @@ module.exports = stringToPath; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -78230,9 +79389,9 @@ module.exports = toKey; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -78266,9 +79425,9 @@ module.exports = toSource; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js": /*!***************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js ***! \***************************************************************************************/ /***/ ((module) => { @@ -78313,13 +79472,13 @@ module.exports = eq; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js": /*!****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js ***! \****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); /** * Gets the value at `path` of `object`. If the resolved value is @@ -78356,14 +79515,14 @@ module.exports = get; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js": /*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js ***! \******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js"), - hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js"); +var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js"); /** * Checks if `path` is a direct or inherited property of `object`. @@ -78400,9 +79559,9 @@ module.exports = hasIn; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -78431,14 +79590,14 @@ module.exports = identity; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -78477,9 +79636,9 @@ module.exports = isArguments; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js ***! \********************************************************************************************/ /***/ ((module) => { @@ -78513,14 +79672,14 @@ module.exports = isArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js"); +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js"); /** * Checks if `value` is array-like. A value is considered array-like if it's @@ -78556,15 +79715,15 @@ module.exports = isArrayLike; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js ***! \*********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js"), - stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"), + stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js"); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; @@ -78605,14 +79764,14 @@ module.exports = isBuffer; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js"); /** `Object#toString` result references. */ var asyncTag = '[object AsyncFunction]', @@ -78652,9 +79811,9 @@ module.exports = isFunction; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -78697,9 +79856,9 @@ module.exports = isLength; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -78738,9 +79897,9 @@ module.exports = isObject; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -78777,14 +79936,14 @@ module.exports = isObjectLike; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var symbolTag = '[object Symbol]'; @@ -78816,15 +79975,15 @@ module.exports = isSymbol; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js"), - baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js"), - nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js"); +var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js"); /* Node.js helper references. */ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; @@ -78853,15 +80012,15 @@ module.exports = isTypedArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js ***! \*****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js"), - baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js"); +var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js"), + baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js"); /** * Creates an array of the own enumerable property names of `object`. @@ -78900,13 +80059,13 @@ module.exports = keys; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -78983,9 +80142,9 @@ module.exports = memoize; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js ***! \*****************************************************************************************/ /***/ ((module) => { @@ -79010,16 +80169,16 @@ module.exports = noop; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js"), - basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js"), + basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** * Creates a function that returns the value at `path` of a given object. @@ -79052,9 +80211,9 @@ module.exports = property; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -79085,9 +80244,9 @@ module.exports = stubArray; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -79113,13 +80272,13 @@ module.exports = stubFalse; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js"); +var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js"); /** * Converts `value` to a string. An empty string is returned for `null` @@ -79151,14 +80310,14 @@ module.exports = toString; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js"), - baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js"); +var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js"), + baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js"); /** * This method is like `_.uniq` except that it accepts `iteratee` which is @@ -79192,17 +80351,17 @@ module.exports = uniqBy; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js": /*!*************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js ***! \*************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { (function(){ - var crypt = __webpack_require__(/*! crypt */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js"), - utf8 = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js").utf8, - isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js"), - bin = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js").bin, + var crypt = __webpack_require__(/*! crypt */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js"), + utf8 = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js").utf8, + isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js"), + bin = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js").bin, // The core md5 = function (message, options) { @@ -79214,7 +80373,7 @@ module.exports = uniqBy; message = utf8.stringToBytes(message); else if (isBuffer(message)) message = Array.prototype.slice.call(message, 0); - else if (!Array.isArray(message)) + else if (!Array.isArray(message) && message.constructor !== Uint8Array) message = message.toString(); // else, assume byte array already @@ -79362,13 +80521,13 @@ module.exports = uniqBy; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js ***! \*******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const _ = __webpack_require__(/*! underscore */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js"); +const _ = __webpack_require__(/*! underscore */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs"); const NO_LMP_DATE_MODIFIER = 4; @@ -79484,25 +80643,25 @@ module.exports = function(settings) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { -module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js"); +module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js"); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), declare = extd.declare, AVLTree = extd.AVLTree, LinkedList = extd.LinkedList, @@ -79694,16 +80853,16 @@ module.exports = declare(EventEmitter, { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js ***! \******************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /*jshint evil:true*/ -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, isString = extd.isString; @@ -79778,18 +80937,18 @@ exports.createDefined = createDefined; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js ***! \*****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /*jshint evil:true*/ -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), - constraintMatcher = __webpack_require__(/*! ../constraintMatcher.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + constraintMatcher = __webpack_require__(/*! ../constraintMatcher.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), indexOf = extd.indexOf, forEach = extd.forEach, removeDuplicates = extd.removeDuplicates, @@ -79797,8 +80956,8 @@ var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/ obj = extd.hash, keys = obj.keys, merge = extd.merge, - rules = __webpack_require__(/*! ../rule */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), - common = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js"), + rules = __webpack_require__(/*! ../rule */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + common = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js"), modifiers = common.modifiers, createDefined = common.createDefined, createFunction = common.createFunction; @@ -79982,7 +81141,7 @@ exports.compile = function (flowObj, options, cb, Container) { return flow; }; -exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js").transpile; +exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js").transpile; @@ -79990,20 +81149,20 @@ exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-c /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js ***! \*********************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, indexOf = extd.indexOf, merge = extd.merge, isString = extd.isString, - modifiers = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js").modifiers, - constraintMatcher = __webpack_require__(/*! ../constraintMatcher */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), - parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"); + modifiers = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js").modifiers, + constraintMatcher = __webpack_require__(/*! ../constraintMatcher */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"); function definedToJs(options) { /*jshint evil:true*/ @@ -80181,13 +81340,13 @@ exports.transpile = function (flowObj, options) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js ***! \************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { -var map = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js").map; +var map = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js").map; function salience(a, b) { return a.rule.priority - b.rule.priority; @@ -80245,16 +81404,16 @@ exports.strategy = function (strats) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js ***! \**************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), deepEqual = extd.deepEqual, merge = extd.merge, instanceOf = extd.instanceOf, @@ -80270,7 +81429,7 @@ var Constraint = declare({ instance: { constructor: function (constraint) { if (!constraintMatcher) { - constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"); + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"); } this.id = id++; this.constraint = constraint; @@ -80516,23 +81675,23 @@ Constraint.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js ***! \*********************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isArray = extd.isArray, forEach = extd.forEach, some = extd.some, indexOf = extd.indexOf, isNumber = extd.isNumber, removeDups = extd.removeDuplicates, - atoms = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"); + atoms = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"); function getProps(val) { return extd(val).map(function mapper(val) { @@ -81004,16 +82163,16 @@ exports.getIndexableProperties = function (constraint) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isBoolean = extd.isBoolean, declare = extd.declare, indexOf = extd.indexOf, @@ -81154,16 +82313,16 @@ var Context = declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), Promise = extd.Promise, - nextTick = __webpack_require__(/*! ./nextTick */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js"), + nextTick = __webpack_require__(/*! ./nextTick */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js"), isPromiseLike = extd.isPromiseLike; Promise.extend({ @@ -81268,13 +82427,13 @@ Promise.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arr = __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js"), +var arr = __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js"), unique = arr.unique, indexOf = arr.indexOf, map = arr.map, @@ -81403,14 +82562,14 @@ function union(arr1, arr2) { return unique(arr1.concat(arr2)); } -module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js")() - .register(__webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js")) +module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")() + .register(__webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js")) .register(arr) - .register(__webpack_require__(/*! object-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js")) - .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js")) - .register(__webpack_require__(/*! promise-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js")) - .register(__webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js")) - .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register(__webpack_require__(/*! object-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js")) + .register(__webpack_require__(/*! promise-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js")) + .register(__webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")) .register("intersection", intersection) .register("inPlaceIntersection", inPlaceIntersection) .register("inPlaceDifference", inPlaceDifference) @@ -81418,32 +82577,32 @@ module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3- .register("diffHash", diffHash) .register("unionArr", union) .register("plucker", plucker) - .register("HashTable", __webpack_require__(/*! ht */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js")) - .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js")) - .register(__webpack_require__(/*! leafy */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js")) - .register("LinkedList", __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js")); + .register("HashTable", __webpack_require__(/*! ht */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js")) + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! leafy */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js")) + .register("LinkedList", __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js")); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), bind = extd.bind, declare = extd.declare, - nodes = __webpack_require__(/*! ./nodes */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js"), + nodes = __webpack_require__(/*! ./nodes */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js"), EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter, - wm = __webpack_require__(/*! ./workingMemory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js"), + wm = __webpack_require__(/*! ./workingMemory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js"), WorkingMemory = wm.WorkingMemory, - ExecutionStragegy = __webpack_require__(/*! ./executionStrategy */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js"), - AgendaTree = __webpack_require__(/*! ./agenda */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js"); + ExecutionStragegy = __webpack_require__(/*! ./executionStrategy */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js"), + AgendaTree = __webpack_require__(/*! ./agenda */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js"); module.exports = declare(EventEmitter, { @@ -81554,24 +82713,24 @@ module.exports = declare(EventEmitter, { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), instanceOf = extd.instanceOf, forEach = extd.forEach, declare = extd.declare, - InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, - conflictStrategies = __webpack_require__(/*! ./conflict */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js"), + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, + conflictStrategies = __webpack_require__(/*! ./conflict */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js"), conflictResolution = conflictStrategies.strategy(["salience", "activationRecency"]), - rule = __webpack_require__(/*! ./rule */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), - Flow = __webpack_require__(/*! ./flow */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js"); + rule = __webpack_require__(/*! ./rule */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + Flow = __webpack_require__(/*! ./flow */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js"); var flows = {}; var FlowContainer = declare({ @@ -81673,9 +82832,9 @@ var FlowContainer = declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js ***! \*********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -81690,11 +82849,11 @@ var FlowContainer = declare({ */ -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), fs = __webpack_require__(/*! fs */ "fs"), path = __webpack_require__(/*! path */ "path"), - compile = __webpack_require__(/*! ./compile */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js"), - FlowContainer = __webpack_require__(/*! ./flowContainer */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js"); + compile = __webpack_require__(/*! ./compile */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js"), + FlowContainer = __webpack_require__(/*! ./flowContainer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js"); function isNoolsFile(file) { return (/\.nools$/).test(file); @@ -81757,14 +82916,14 @@ exports.parse = parse; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js"); +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js"); declare({ instance: { @@ -81848,14 +83007,14 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /*global setImmediate, window, MessageChannel*/ -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); var nextTick; if (typeof setImmediate === "function") { // In IE10, or use https://github.com/NobleJS/setImmediate @@ -81894,15 +83053,15 @@ module.exports = nextTick; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - intersection = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js").intersection; +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + intersection = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js").intersection; Node.extend({ instance: { @@ -81938,14 +83097,14 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js ***! \*******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); AlphaNode.extend({ instance: { @@ -81979,16 +83138,16 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js ***! \*******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"); Node.extend({ instance: { @@ -82010,17 +83169,17 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), keys = extd.hash.keys, - Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - LeftMemory = __webpack_require__(/*! ./misc/leftMemory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js"), RightMemory = __webpack_require__(/*! ./misc/rightMemory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js"); + Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + LeftMemory = __webpack_require__(/*! ./misc/leftMemory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js"), RightMemory = __webpack_require__(/*! ./misc/rightMemory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js"); Node.extend({ @@ -82275,14 +83434,14 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js ***! \**********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); AlphaNode.extend({ instance: { @@ -82327,16 +83486,16 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js": /*!************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js ***! \************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), +var FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), isDefined = extd.isDefined, isArray = extd.isArray; @@ -82436,15 +83595,15 @@ FromNotNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js": /*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), - LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"); +var NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"); NotNode.extend({ @@ -82619,20 +83778,20 @@ NotNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), EqualityConstraint = constraint.EqualityConstraint, HashConstraint = constraint.HashConstraint, ReferenceConstraint = constraint.ReferenceConstraint, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), isDefined = extd.isDefined, isEmpty = extd.isEmpty, forEach = extd.forEach, @@ -82843,20 +84002,20 @@ JoinNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), EqualityConstraint = constraint.EqualityConstraint, HashConstraint = constraint.HashConstraint, ReferenceConstraint = constraint.ReferenceConstraint, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), isDefined = extd.isDefined, forEach = extd.forEach, isArray = extd.isArray; @@ -83012,19 +84171,19 @@ JoinNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js ***! \***************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, some = extd.some, declare = extd.declare, - pattern = __webpack_require__(/*! ../pattern.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + pattern = __webpack_require__(/*! ../pattern.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), ObjectPattern = pattern.ObjectPattern, FromPattern = pattern.FromPattern, FromNotPattern = pattern.FromNotPattern, @@ -83033,23 +84192,23 @@ var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/ NotPattern = pattern.NotPattern, CompositePattern = pattern.CompositePattern, InitialFactPattern = pattern.InitialFactPattern, - constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), HashConstraint = constraints.HashConstraint, ReferenceConstraint = constraints.ReferenceConstraint, - AliasNode = __webpack_require__(/*! ./aliasNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js"), - EqualityNode = __webpack_require__(/*! ./equalityNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js"), - JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), - NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), - FromNode = __webpack_require__(/*! ./fromNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js"), - FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), - ExistsNode = __webpack_require__(/*! ./existsNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js"), - ExistsFromNode = __webpack_require__(/*! ./existsFromNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js"), - LeftAdapterNode = __webpack_require__(/*! ./leftAdapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js"), - RightAdapterNode = __webpack_require__(/*! ./rightAdapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js"), - TypeNode = __webpack_require__(/*! ./typeNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js"), - TerminalNode = __webpack_require__(/*! ./terminalNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js"), - PropertyNode = __webpack_require__(/*! ./propertyNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js"); + AliasNode = __webpack_require__(/*! ./aliasNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js"), + EqualityNode = __webpack_require__(/*! ./equalityNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js"), + JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + FromNode = __webpack_require__(/*! ./fromNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js"), + FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + ExistsNode = __webpack_require__(/*! ./existsNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js"), + ExistsFromNode = __webpack_require__(/*! ./existsFromNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js"), + LeftAdapterNode = __webpack_require__(/*! ./leftAdapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js"), + RightAdapterNode = __webpack_require__(/*! ./rightAdapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js"), + TypeNode = __webpack_require__(/*! ./typeNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js"), + TerminalNode = __webpack_require__(/*! ./terminalNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js"), + PropertyNode = __webpack_require__(/*! ./propertyNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js"); function hasRefernceConstraints(pattern) { return some(pattern.constraints || [], function (c) { @@ -83281,15 +84440,15 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), - JoinReferenceNode = __webpack_require__(/*! ./joinReferenceNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js"); +var BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + JoinReferenceNode = __webpack_require__(/*! ./joinReferenceNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js"); BetaNode.extend({ @@ -83352,15 +84511,15 @@ BetaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js": /*!***************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js ***! \***************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint; var DEFUALT_CONSTRAINT = { @@ -83470,14 +84629,14 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js ***! \*************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); Node.extend({ instance: { @@ -83514,9 +84673,9 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js ***! \**********************************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { @@ -83674,14 +84833,14 @@ exports.getMemory = (function () { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js ***! \*************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); Memory.extend({ @@ -83696,19 +84855,19 @@ Memory.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), plucker = extd.plucker, declare = extd.declare, - getMemory = __webpack_require__(/*! ./helpers */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js").getMemory, - Table = __webpack_require__(/*! ./table */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js"), - TupleEntry = __webpack_require__(/*! ./tupleEntry */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js"); + getMemory = __webpack_require__(/*! ./helpers */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js").getMemory, + Table = __webpack_require__(/*! ./table */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js"), + TupleEntry = __webpack_require__(/*! ./tupleEntry */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js"); var id = 0; @@ -83844,14 +85003,14 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js": /*!**************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js ***! \**************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); Memory.extend({ @@ -83866,14 +85025,14 @@ Memory.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js": /*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), pPush = Array.prototype.push, HashTable = extd.HashTable, AVLTree = extd.AVLTree; @@ -84051,14 +85210,14 @@ AVLTree.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js ***! \*************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), indexOf = extd.indexOf; // HashSet = require("./hashSet"); @@ -84107,20 +85266,20 @@ extd.declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, indexOf = extd.indexOf, intersection = extd.intersection, declare = extd.declare, HashTable = extd.HashTable, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"); + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"); var count = 0; declare({ @@ -84243,17 +85402,17 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - InitialFact = __webpack_require__(/*! ../pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact; +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + InitialFact = __webpack_require__(/*! ../pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact; JoinNode.extend({ @@ -84524,16 +85683,16 @@ JoinNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js ***! \**********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); AlphaNode.extend({ instance: { @@ -84584,14 +85743,14 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js": /*!**************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js ***! \**************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); Node.extend({ instance: { @@ -84628,15 +85787,15 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js ***! \**********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), bind = extd.bind; Node.extend({ @@ -84705,15 +85864,15 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"); AlphaNode.extend({ instance: { @@ -84762,9 +85921,9 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js": /*!****************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js ***! \****************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { @@ -85580,16 +86739,16 @@ if ( true && __webpack_require__.c[__webpack_require__.s] === module) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js ***! \****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { (function () { "use strict"; - var constraintParser = __webpack_require__(/*! ./constraint/parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js"), - noolParser = __webpack_require__(/*! ./nools/nool.parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js"); + var constraintParser = __webpack_require__(/*! ./constraint/parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js"), + noolParser = __webpack_require__(/*! ./nools/nool.parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js"); exports.parseConstraint = function (expression) { try { @@ -85606,19 +86765,19 @@ if ( true && __webpack_require__.c[__webpack_require__.s] === module) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js": /*!****************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js ***! \****************************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var tokens = __webpack_require__(/*! ./tokens.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js"), - extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var tokens = __webpack_require__(/*! ./tokens.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), keys = extd.hash.keys, - utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"); + utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"); var parse = function (src, keywords, context) { var orig = src; @@ -85655,18 +86814,18 @@ exports.parse = function (src, file) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js": /*!***********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js ***! \***********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -var utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"), +var utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"), fs = __webpack_require__(/*! fs */ "fs"), - extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), filter = extd.filter, indexOf = extd.indexOf, predicates = ["not", "or", "exists"], @@ -86016,9 +87175,9 @@ module.exports = topLevelTokens; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js ***! \*********************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -86120,21 +87279,21 @@ exports.findNextToken = function (str, startIndex, endIndex) { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js ***! \***********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isEmpty = extd.isEmpty, merge = extd.merge, forEach = extd.forEach, declare = extd.declare, - constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), - constraint = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + constraint = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), EqualityConstraint = constraint.EqualityConstraint, FromConstraint = constraint.FromConstraint; @@ -86282,23 +87441,23 @@ ObjectPattern.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js ***! \********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isArray = extd.isArray, Promise = extd.Promise, declare = extd.declare, isHash = extd.isHash, isString = extd.isString, format = extd.format, - parser = __webpack_require__(/*! ./parser */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), - pattern = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + parser = __webpack_require__(/*! ./parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + pattern = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), ObjectPattern = pattern.ObjectPattern, FromPattern = pattern.FromPattern, NotPattern = pattern.NotPattern, @@ -86608,17 +87767,17 @@ exports.createRule = createRule; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js ***! \*****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js"), - LinkedList = __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), - InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js"), + LinkedList = __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, id = 0; var Fact = declare({ @@ -86733,9 +87892,9 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js ***! \***************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -86937,7 +88096,7 @@ declare({ if (true) { if ( true && module.exports) { - module.exports = defineObject(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")); + module.exports = defineObject(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")); } } else {} @@ -86953,9 +88112,9 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js ***! \****************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -87445,7 +88604,7 @@ declare({ if (true) { if ( true && module.exports) { - module.exports = definePromise(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js"), __webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + module.exports = definePromise(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js"), __webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); } } else {} @@ -87460,9 +88619,9 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js ***! \***************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -88093,7 +89252,7 @@ declare({ if (true) { if ( true && module.exports) { - module.exports = defineString(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js")); + module.exports = defineString(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")); } } else {} @@ -88109,1713 +89268,2198 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js ***! - \***************************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs ***! + \***********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { -/* module decorator */ module = __webpack_require__.nmd(module); -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.9.1 -// http://underscorejs.org -// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore.js 1.13.1 +// https://underscorejs.org +// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. -(function() { - - // Baseline setup - // -------------- +Object.defineProperty(exports, "__esModule", ({ value: true })); - // Establish the root object, `window` (`self`) in the browser, `global` - // on the server, or `this` in some virtual machines. We use `self` - // instead of `window` for `WebWorker` support. - var root = typeof self == 'object' && self.self === self && self || - typeof global == 'object' && global.global === global && global || - this || - {}; +// Current version. +var VERSION = '1.13.1'; - // Save the previous value of the `_` variable. - var previousUnderscore = root._; +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = typeof self == 'object' && self.self === self && self || + typeof global == 'object' && global.global === global && global || + Function('return this')() || + {}; - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype; - var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; - // Create quick reference variables for speed access to core prototypes. - var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create; +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; - // Naked function reference for surrogate-prototype-swapping. - var Ctor = function(){}; +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for their old module API. If we're in - // the browser, add `_` as a global object. - // (`nodeType` is checked to ensure that `module` - // and `exports` are not HTML elements.) - if ( true && !exports.nodeType) { - if ( true && !module.nodeType && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; - // Current version. - _.VERSION = '1.9.1'; +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; - // Internal function that returns an efficient (for current engines) version - // of the passed-in callback, to be repeatedly applied in other Underscore - // functions. - var optimizeCb = function(func, context, argCount) { - if (context === void 0) return func; - switch (argCount == null ? 3 : argCount) { - case 1: return function(value) { - return func.call(context, value); - }; - // The 2-argument case is omitted because we’re not using it. - case 3: return function(value, index, collection) { - return func.call(context, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(context, accumulator, value, index, collection); - }; +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; } - return function() { - return func.apply(context, arguments); - }; + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); }; +} - var builtinIteratee; +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; +} - // An internal function to generate callbacks that can be applied to each - // element in a collection, returning the desired result — either `identity`, - // an arbitrary callback, a property matcher, or a property accessor. - var cb = function(value, context, argCount) { - if (_.iteratee !== builtinIteratee) return _.iteratee(value, context); - if (value == null) return _.identity; - if (_.isFunction(value)) return optimizeCb(value, context, argCount); - if (_.isObject(value) && !_.isArray(value)) return _.matcher(value); - return _.property(value); - }; +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - // External wrapper for our callback generator. Users may customize - // `_.iteratee` if they want additional predicate/iteratee shorthand styles. - // This abstraction hides the internal-only argCount argument. - _.iteratee = builtinIteratee = function(value, context) { - return cb(value, context, Infinity); - }; +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; +} - // Some functions take a variable number of arguments, or a few expected - // arguments at the beginning and then a variable number of values to operate - // on. This helper accumulates all remaining arguments past the function’s - // argument length (or an explicit `startIndex`), into an array that becomes - // the last argument. Similar to ES6’s "rest parameter". - var restArguments = function(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; +} + +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} + +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return toString.call(obj) === tag; }; +} - // An internal function for creating a new object that inherits from another. - var baseCreate = function(prototype) { - if (!_.isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; +var isString = tagTester('String'); + +var isNumber = tagTester('Number'); + +var isDate = tagTester('Date'); + +var isRegExp = tagTester('RegExp'); + +var isError = tagTester('Error'); + +var isSymbol = tagTester('Symbol'); + +var isArrayBuffer = tagTester('ArrayBuffer'); + +var isFunction = tagTester('Function'); + +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; }; +} - var shallowProperty = function(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; +var isFunction$1 = isFunction; + +var hasObjectTag = tagTester('Object'); + +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + +var isDataView = tagTester('DataView'); + +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +} + +var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); + +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +var isArray = nativeIsArray || tagTester('Array'); + +// Internal function to check whether `key` is an own property name of `obj`. +function has$1(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); +} + +var isArguments = tagTester('Arguments'); + +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has$1(obj, 'callee'); }; + } +}()); + +var isArguments$1 = isArguments; + +// Is a given object a finite number? +function isFinite$1(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} + +// Is the given value `NaN`? +function isNaN$1(obj) { + return isNumber(obj) && _isNaN(obj); +} + +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; }; +} - var has = function(obj, path) { - return obj != null && hasOwnProperty.call(obj, path); +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - var deepGet = function(obj, path) { - var length = path.length; - for (var i = 0; i < length; i++) { - if (obj == null) return void 0; - obj = obj[path[i]]; - } - return length ? obj : void 0; +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; }; +} - // Helper for collection methods to determine whether a collection - // should be iterated as an array or as an object. - // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength - // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 - var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; - var getLength = shallowProperty('length'); - var isArrayLike = function(collection) { - var length = getLength(collection); - return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; - }; +// Internal helper to obtain the `byteLength` property of an object. +var getByteLength = shallowProperty('byteLength'); - // Collection Functions - // -------------------- +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +var isBufferLike = createSizePropertyCheck(getByteLength); - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles raw objects in addition to array-likes. Treats all - // sparse array-likes as if they were dense. - _.each = _.forEach = function(obj, iteratee, context) { - iteratee = optimizeCb(iteratee, context); - var i, length; - if (isArrayLike(obj)) { - for (i = 0, length = obj.length; i < length; i++) { - iteratee(obj[i], i, obj); - } - } else { - var keys = _.keys(obj); - for (i = 0, length = keys.length; i < length; i++) { - iteratee(obj[keys[i]], keys[i], obj); - } +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : + isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +} + +var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); + +// Internal helper to obtain the `length` property of an object. +var getLength = shallowProperty('length'); + +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key]; }, + push: function(key) { + hash[key] = true; + return keys.push(key); } - return obj; }; +} - // Return the results of applying the iteratee to each element. - _.map = _.collect = function(obj, iteratee, context) { - iteratee = cb(iteratee, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length, - results = Array(length); - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - results[index] = iteratee(obj[currentKey], currentKey, obj); +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = isFunction$1(constructor) && constructor.prototype || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); } - return results; - }; + } +} - // Create a reducing function iterating left or right. - var createReduce = function(dir) { - // Wrap code that reassigns argument variables in a separate function than - // the one that accesses `arguments.length` to avoid a perf hit. (#1991) - var reducer = function(obj, iteratee, memo, initial) { - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length, - index = dir > 0 ? 0 : length - 1; - if (!initial) { - memo = obj[keys ? keys[index] : index]; - index += dir; - } - for (; index >= 0 && index < length; index += dir) { - var currentKey = keys ? keys[index] : index; - memo = iteratee(memo, obj[currentKey], currentKey, obj); - } - return memo; - }; +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has$1(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} + +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || isArguments$1(obj) + )) return length === 0; + return getLength(keys(obj)) === 0; +} + +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} + +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _$1(obj) { + if (obj instanceof _$1) return obj; + if (!(this instanceof _$1)) return new _$1(obj); + this._wrapped = obj; +} + +_$1.VERSION = VERSION; + +// Extracts the result from a wrapped and chained object. +_$1.prototype.value = function() { + return this._wrapped; +}; + +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; + +_$1.prototype.toString = function() { + return String(this._wrapped); +}; + +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + getByteLength(bufferSource) + ); +} + +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; + +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} + +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _$1) a = a._wrapped; + if (b instanceof _$1) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { + if (!isDataView$1(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } + + var areArrays = className === '[object Array]'; + if (!areArrays && isTypedArray$1(a)) { + var byteLength = getByteLength(a); + if (byteLength !== getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; - return function(obj, iteratee, memo, context) { - var initial = arguments.length >= 3; - return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); - }; - }; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && + isFunction$1(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. - _.reduce = _.foldl = _.inject = createReduce(1); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } - // The right-associative version of reduce, also known as `foldr`. - _.reduceRight = _.foldr = createReduce(-1); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey; - var key = keyFinder(obj, predicate, context); - if (key !== void 0 && key !== -1) return obj[key]; - }; + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} - // Return all the elements that pass a truth test. - // Aliased as `select`. - _.filter = _.select = function(obj, predicate, context) { - var results = []; - predicate = cb(predicate, context); - _.each(obj, function(value, index, list) { - if (predicate(value, index, list)) results.push(value); - }); - return results; - }; +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); +} - // Return all the elements for which a truth test fails. - _.reject = function(obj, predicate, context) { - return _.filter(obj, _.negate(cb(predicate)), context); - }; +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} - // Determine whether all of the elements match a truth test. - // Aliased as `all`. - _.every = _.all = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length; - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - if (!predicate(obj[currentKey], currentKey, obj)) return false; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!isFunction$1(obj[methods[i]])) return false; } - return true; + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); }; +} - // Determine if at least one element in the object matches a truth test. - // Aliased as `any`. - _.some = _.any = function(obj, predicate, context) { - predicate = cb(predicate, context); - var keys = !isArrayLike(obj) && _.keys(obj), - length = (keys || obj).length; - for (var index = 0; index < length; index++) { - var currentKey = keys ? keys[index] : index; - if (predicate(obj[currentKey], currentKey, obj)) return true; - } - return false; - }; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; - // Determine if the array or object contains a given item (using `===`). - // Aliased as `includes` and `include`. - _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = _.values(obj); - if (typeof fromIndex != 'number' || guard) fromIndex = 0; - return _.indexOf(obj, item, fromIndex) >= 0; - }; +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); - // Invoke a method (with arguments) on every item in a collection. - _.invoke = restArguments(function(obj, path, args) { - var contextPath, func; - if (_.isFunction(path)) { - func = path; - } else if (_.isArray(path)) { - contextPath = path.slice(0, -1); - path = path[path.length - 1]; - } - return _.map(obj, function(context) { - var method = func; - if (!method) { - if (contextPath && contextPath.length) { - context = deepGet(context, contextPath); - } - if (context == null) return void 0; - method = context[path]; - } - return method == null ? method : method.apply(context, args); - }); - }); +var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, _.property(key)); - }; +var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs) { - return _.filter(obj, _.matcher(attrs)); - }; +var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.find(obj, _.matcher(attrs)); - }; +var isWeakSet = tagTester('WeakSet'); - // Return the maximum element (or element-based computation). - _.max = function(obj, iteratee, context) { - var result = -Infinity, lastComputed = -Infinity, - value, computed; - if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { - obj = isArrayLike(obj) ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value != null && value > result) { - result = value; - } - } - } else { - iteratee = cb(iteratee, context); - _.each(obj, function(v, index, list) { - computed = iteratee(v, index, list); - if (computed > lastComputed || computed === -Infinity && result === -Infinity) { - result = v; - lastComputed = computed; - } - }); - } - return result; - }; +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; + } + return values; +} - // Return the minimum element (or element-based computation). - _.min = function(obj, iteratee, context) { - var result = Infinity, lastComputed = Infinity, - value, computed; - if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { - obj = isArrayLike(obj) ? obj : _.values(obj); - for (var i = 0, length = obj.length; i < length; i++) { - value = obj[i]; - if (value != null && value < result) { - result = value; - } +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; +} + +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; +} + +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (isFunction$1(obj[key])) names.push(key); + } + return names.sort(); +} + +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; } - } else { - iteratee = cb(iteratee, context); - _.each(obj, function(v, index, list) { - computed = iteratee(v, index, list); - if (computed < lastComputed || computed === Infinity && result === Infinity) { - result = v; - lastComputed = computed; - } - }); } - return result; + return obj; }; +} - // Shuffle a collection. - _.shuffle = function(obj) { - return _.sample(obj, Infinity); - }; +// Extend a given object with all the properties in passed-in object(s). +var extend = createAssigner(allKeys); - // Sample **n** random values from a collection using the modern version of the - // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). - // If **n** is not specified, returns a single random element. - // The internal `guard` argument allows it to work with `map`. - _.sample = function(obj, n, guard) { - if (n == null || guard) { - if (!isArrayLike(obj)) obj = _.values(obj); - return obj[_.random(obj.length - 1)]; - } - var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj); - var length = getLength(sample); - n = Math.max(Math.min(n, length), 0); - var last = length - 1; - for (var index = 0; index < n; index++) { - var rand = _.random(index, last); - var temp = sample[index]; - sample[index] = sample[rand]; - sample[rand] = temp; - } - return sample.slice(0, n); - }; +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +var extendOwn = createAssigner(keys); - // Sort the object's values by a criterion produced by an iteratee. - _.sortBy = function(obj, iteratee, context) { - var index = 0; - iteratee = cb(iteratee, context); - return _.pluck(_.map(obj, function(value, key, list) { - return { - value: value, - index: index++, - criteria: iteratee(value, key, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index - right.index; - }), 'value'); - }; +// Fill in a given object with default properties. +var defaults = createAssigner(allKeys, true); - // An internal function used for aggregate "group by" operations. - var group = function(behavior, partition) { - return function(obj, iteratee, context) { - var result = partition ? [[], []] : {}; - iteratee = cb(iteratee, context); - _.each(obj, function(value, index) { - var key = iteratee(value, index, obj); - behavior(result, value, key); - }); - return result; - }; - }; +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; +} - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = group(function(result, value, key) { - if (has(result, key)) result[key].push(value); else result[key] = [value]; - }); +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} - // Indexes the object's values by a criterion, similar to `groupBy`, but for - // when you know that your index values will be unique. - _.indexBy = group(function(result, value, key) { - result[key] = value; - }); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; +} - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = group(function(result, value, key) { - if (has(result, key)) result[key]++; else result[key] = 1; - }); +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); +} - var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; - // Safely create a real, live array from anything iterable. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (_.isString(obj)) { - // Keep surrogate pair characters together - return obj.match(reStrSymbol); - } - if (isArrayLike(obj)) return _.map(obj, _.identity); - return _.values(obj); - }; +// Invokes `interceptor` with the `obj` and then returns `obj`. +// The primary purpose of this method is to "tap into" a method chain, in +// order to perform operations on intermediate results within the chain. +function tap(obj, interceptor) { + interceptor(obj); + return obj; +} - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : _.keys(obj).length; - }; +// Normalize a (deep) property `path` to array. +// Like `_.iteratee`, this function can be customized. +function toPath$1(path) { + return isArray(path) ? path : [path]; +} +_$1.toPath = toPath$1; - // Split a collection into two arrays: one whose elements all satisfy the given - // predicate, and one whose elements all do not satisfy the predicate. - _.partition = group(function(result, value, pass) { - result[pass ? 0 : 1].push(value); - }, true); +// Internal wrapper for `_.toPath` to enable minification. +// Similar to `cb` for `_.iteratee`. +function toPath(path) { + return _$1.toPath(path); +} - // Array Functions - // --------------- +// Internal function to obtain a nested property in `obj` along `path`. +function deepGet(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; + } + return length ? obj : void 0; +} - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null || array.length < 1) return n == null ? void 0 : []; - if (n == null || guard) return array[0]; - return _.initial(array, array.length - n); - }; +// Get the value of the (deep) property on `path` from `object`. +// If any property in `path` does not exist or if the value is +// `undefined`, return `defaultValue` instead. +// The `path` is normalized through `_.toPath`. +function get(object, path, defaultValue) { + var value = deepGet(object, toPath(path)); + return isUndefined(value) ? defaultValue : value; +} - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. - _.initial = function(array, n, guard) { - return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); - }; +// Shortcut function for checking if an object has a given property directly on +// itself (in other words, not on a prototype). Unlike the internal `has` +// function, this public version can also traverse nested properties. +function has(obj, path) { + path = toPath(path); + var length = path.length; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (!has$1(obj, key)) return false; + obj = obj[key]; + } + return !!length; +} - // Get the last element of an array. Passing **n** will return the last N - // values in the array. - _.last = function(array, n, guard) { - if (array == null || array.length < 1) return n == null ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return _.rest(array, Math.max(0, array.length - n)); - }; +// Keep the identity function around for default iteratees. +function identity(value) { + return value; +} - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); +// Returns a predicate for checking whether an object has a given set of +// `key:value` pairs. +function matcher(attrs) { + attrs = extendOwn({}, attrs); + return function(obj) { + return isMatch(obj, attrs); }; +} - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, Boolean); +// Creates a function that, when passed an object, will traverse that object’s +// properties down the given `path`, specified as an array of keys or indices. +function property(path) { + path = toPath(path); + return function(obj) { + return deepGet(obj, path); }; +} - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, strict, output) { - output = output || []; - var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { - var value = input[i]; - if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { - // Flatten current level of array or arguments object. - if (shallow) { - var j = 0, len = value.length; - while (j < len) output[idx++] = value[j++]; - } else { - flatten(value, shallow, strict, output); - idx = output.length; - } - } else if (!strict) { - output[idx++] = value; - } - } - return output; +// Internal function that returns an efficient (for current engines) version +// of the passed-in callback, to be repeatedly applied in other Underscore +// functions. +function optimizeCb(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + // The 2-argument case is omitted because we’re not using it. + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); }; +} - // Flatten out an array, either recursively (by default), or just one level. - _.flatten = function(array, shallow) { - return flatten(array, shallow, false); - }; +// An internal function to generate callbacks that can be applied to each +// element in a collection, returning the desired result — either `_.identity`, +// an arbitrary callback, a property matcher, or a property accessor. +function baseIteratee(value, context, argCount) { + if (value == null) return identity; + if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (isObject(value) && !isArray(value)) return matcher(value); + return property(value); +} - // Return a version of the array that does not contain the specified value(s). - _.without = restArguments(function(array, otherArrays) { - return _.difference(array, otherArrays); - }); +// External wrapper for our callback generator. Users may customize +// `_.iteratee` if they want additional predicate/iteratee shorthand styles. +// This abstraction hides the internal-only `argCount` argument. +function iteratee(value, context) { + return baseIteratee(value, context, Infinity); +} +_$1.iteratee = iteratee; - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // The faster algorithm will not work with an iteratee if the iteratee - // is not a one-to-one function, so providing an iteratee will disable - // the faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iteratee, context) { - if (!_.isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!_.contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!_.contains(result, value)) { - result.push(value); - } - } - return result; - }; +// The function we call internally to generate a callback. It invokes +// `_.iteratee` if overridden, otherwise `baseIteratee`. +function cb(value, context, argCount) { + if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + return baseIteratee(value, context, argCount); +} - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = restArguments(function(arrays) { - return _.uniq(flatten(arrays, true, true)); - }); +// Returns the results of applying the `iteratee` to each element of `obj`. +// In contrast to `_.map` it returns an object. +function mapObject(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = keys(obj), + length = _keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = _keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; +} - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (_.contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!_.contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; - }; +// Predicate-generating function. Often useful outside of Underscore. +function noop(){} - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = restArguments(function(array, rest) { - rest = flatten(rest, true, true); - return _.filter(array, function(value){ - return !_.contains(rest, value); - }); - }); +// Generates a function for a given object that returns a given property. +function propertyOf(obj) { + if (obj == null) return noop; + return function(path) { + return get(obj, path); + }; +} - // Complement of _.zip. Unzip accepts an array of arrays and groups - // each array's elements on shared indices. - _.unzip = function(array) { - var length = array && _.max(array, getLength).length || 0; - var result = Array(length); +// Run a function **n** times. +function times(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; +} - for (var index = 0; index < length; index++) { - result[index] = _.pluck(array, index); - } - return result; - }; +// Return a random integer between `min` and `max` (inclusive). +function random(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); +} - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = restArguments(_.unzip); +// A (possibly faster) way to get the current timestamp as an integer. +var now = Date.now || function() { + return new Date().getTime(); +}; - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. Passing by pairs is the reverse of _.pairs. - _.object = function(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; +// Internal helper to generate functions for escaping and unescaping strings +// to/from HTML interpolation. +function createEscaper(map) { + var escaper = function(match) { + return map[match]; }; - - // Generator function to create the findIndex and findLastIndex functions. - var createPredicateIndexFinder = function(dir) { - return function(array, predicate, context) { - predicate = cb(predicate, context); - var length = getLength(array); - var index = dir > 0 ? 0 : length - 1; - for (; index >= 0 && index < length; index += dir) { - if (predicate(array[index], index, array)) return index; - } - return -1; - }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; }; +} - // Returns the first index on an array-like that passes a predicate test. - _.findIndex = createPredicateIndexFinder(1); - _.findLastIndex = createPredicateIndexFinder(-1); - - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iteratee, context) { - iteratee = cb(iteratee, context, 1); - var value = iteratee(obj); - var low = 0, high = getLength(array); - while (low < high) { - var mid = Math.floor((low + high) / 2); - if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; - } - return low; - }; +// Internal list of HTML entities for escaping. +var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' +}; - // Generator function to create the indexOf and lastIndexOf functions. - var createIndexFinder = function(dir, predicateFind, sortedIndex) { - return function(array, item, idx) { - var i = 0, length = getLength(array); - if (typeof idx == 'number') { - if (dir > 0) { - i = idx >= 0 ? idx : Math.max(idx + length, i); - } else { - length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; - } - } else if (sortedIndex && idx && length) { - idx = sortedIndex(array, item); - return array[idx] === item ? idx : -1; - } - if (item !== item) { - idx = predicateFind(slice.call(array, i, length), _.isNaN); - return idx >= 0 ? idx + i : -1; - } - for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { - if (array[idx] === item) return idx; - } - return -1; - }; - }; +// Function for escaping strings to HTML interpolation. +var _escape = createEscaper(escapeMap); - // Return the position of the first occurrence of an item in an array, - // or -1 if the item is not included in the array. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); - _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); +// Internal list of HTML entities for unescaping. +var unescapeMap = invert(escapeMap); - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +// Function for unescaping strings from HTML interpolation. +var _unescape = createEscaper(unescapeMap); - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); +// By default, Underscore uses ERB-style template delimiters. Change the +// following template settings to use alternative delimiters. +var templateSettings = _$1.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g +}; - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; - } +// When customizing `_.templateSettings`, if you don't want to define an +// interpolation, evaluation or escaping regex, we need one that is +// guaranteed not to match. +var noMatch = /(.)^/; - return range; - }; +// Certain characters need to be escaped so that they can be put into a +// string literal. +var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' +}; - // Chunk a single array into multiple arrays, each containing `count` or fewer - // items. - _.chunk = function(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); - } - return result; - }; +var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; - // Function (ahem) Functions - // ------------------ +function escapeChar(match) { + return '\\' + escapes[match]; +} - // Determines whether to execute a function as a constructor - // or a normal function with the provided arguments. - var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { - if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); - var self = baseCreate(sourceFunc.prototype); - var result = sourceFunc.apply(self, args); - if (_.isObject(result)) return result; - return self; - }; +// In order to prevent third-party code injection through +// `_.templateSettings.variable`, we test it against the following regular +// expression. It is intentionally a bit more liberal than just matching valid +// identifiers, but still prevents possible loopholes through defaults or +// destructuring assignment. +var bareIdentifier = /^\s*(\w|\$)+\s*$/; - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = restArguments(function(func, context, args) { - if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); - var bound = restArguments(function(callArgs) { - return executeBound(func, bound, context, this, args.concat(callArgs)); - }); - return bound; - }); +// JavaScript micro-templating, similar to John Resig's implementation. +// Underscore templating handles arbitrary delimiters, preserves whitespace, +// and correctly escapes quotes within interpolated code. +// NB: `oldSettings` only exists for backwards compatibility. +function template(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = defaults({}, settings, _$1.templateSettings); - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. _ acts - // as a placeholder by default, allowing any combination of arguments to be - // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. - _.partial = restArguments(function(func, boundArgs) { - var placeholder = _.partial.placeholder; - var bound = function() { - var position = 0, length = boundArgs.length; - var args = Array(length); - for (var i = 0; i < length; i++) { - args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; - } - while (position < arguments.length) args.push(arguments[position++]); - return executeBound(func, bound, this, this, args); - }; - return bound; - }); + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); - _.partial.placeholder = _; + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; - // Bind a number of an object's methods to that object. Remaining arguments - // are the method names to be bound. Useful for ensuring that all callbacks - // defined on an object belong to it. - _.bindAll = restArguments(function(obj, keys) { - keys = flatten(keys, false, false); - var index = keys.length; - if (index < 1) throw new Error('bindAll must be passed function names'); - while (index--) { - var key = keys[index]; - obj[key] = _.bind(obj[key], obj); + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; } - }); - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memoize = function(key) { - var cache = memoize.cache; - var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has(cache, address)) cache[address] = func.apply(this, arguments); - return cache[address]; - }; - memoize.cache = {}; - return memoize; - }; - - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = restArguments(function(func, wait, args) { - return setTimeout(function() { - return func.apply(null, args); - }, wait); + // Adobe VMs need the match returned to produce the correct offset. + return match; }); + source += "';\n"; - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = _.partial(_.delay, _, 1); - - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. Normally, the throttled function will run - // as much as it can, without ever going more than once per `wait` duration; - // but if you'd like to disable the execution on the leading edge, pass - // `{leading: false}`. To disable execution on the trailing edge, ditto. - _.throttle = function(func, wait, options) { - var timeout, context, args, result; - var previous = 0; - if (!options) options = {}; - - var later = function() { - previous = options.leading === false ? 0 : _.now(); - timeout = null; - result = func.apply(context, args); - if (!timeout) context = args = null; - }; + var argument = settings.variable; + if (argument) { + // Insure against third-party code injection. (CVE-2021-23358) + if (!bareIdentifier.test(argument)) throw new Error( + 'variable is not a bare identifier: ' + argument + ); + } else { + // If a variable is not specified, place data values in local scope. + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } - var throttled = function() { - var now = _.now(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0 || remaining > wait) { - if (timeout) { - clearTimeout(timeout); - timeout = null; - } - previous = now; - result = func.apply(context, args); - if (!timeout) context = args = null; - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); - } - return result; - }; + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; - throttled.cancel = function() { - clearTimeout(timeout); - previous = 0; - timeout = context = args = null; - }; + var render; + try { + render = new Function(argument, '_', source); + } catch (e) { + e.source = source; + throw e; + } - return throttled; + var template = function(data) { + return render.call(this, data, _$1); }; - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, result; + // Provide the compiled source as a convenience for precompilation. + template.source = 'function(' + argument + '){\n' + source + '}'; - var later = function(context, args) { - timeout = null; - if (args) result = func.apply(context, args); - }; + return template; +} - var debounced = restArguments(function(args) { - if (timeout) clearTimeout(timeout); - if (immediate) { - var callNow = !timeout; - timeout = setTimeout(later, wait); - if (callNow) result = func.apply(this, args); - } else { - timeout = _.delay(later, wait, this, args); - } +// Traverses the children of `obj` along `path`. If a child is a function, it +// is invoked with its parent as context. Returns the value of the final +// child, or `fallback` if any child is undefined. +function result(obj, path, fallback) { + path = toPath(path); + var length = path.length; + if (!length) { + return isFunction$1(fallback) ? fallback.call(obj) : fallback; + } + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. + } + obj = isFunction$1(prop) ? prop.call(obj) : prop; + } + return obj; +} - return result; - }); +// Generate a unique integer id (unique within the entire client session). +// Useful for temporary DOM ids. +var idCounter = 0; +function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; +} - debounced.cancel = function() { - clearTimeout(timeout); - timeout = null; - }; +// Start chaining a wrapped Underscore object. +function chain(obj) { + var instance = _$1(obj); + instance._chain = true; + return instance; +} - return debounced; - }; +// Internal function to execute `sourceFunc` bound to `context` with optional +// `args`. Determines whether to execute a function as a constructor or as a +// normal function. +function executeBound(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (isObject(result)) return result; + return self; +} - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return _.partial(wrapper, func); +// Partially apply a function by creating a version that has had some of its +// arguments pre-filled, without changing its dynamic `this` context. `_` acts +// as a placeholder by default, allowing any combination of arguments to be +// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. +var partial = restArguments(function(func, boundArgs) { + var placeholder = partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); }; + return bound; +}); - // Returns a negated version of the passed-in predicate. - _.negate = function(predicate) { - return function() { - return !predicate.apply(this, arguments); - }; - }; +partial.placeholder = _$1; - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var args = arguments; - var start = args.length - 1; - return function() { - var i = start; - var result = args[start].apply(this, arguments); - while (i--) result = args[i].call(this, result); - return result; - }; - }; +// Create a function bound to a given object (assigning `this`, and arguments, +// optionally). +var bind = restArguments(function(func, context, args) { + if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArguments(function(callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); + }); + return bound; +}); - // Returns a function that will only be executed on and after the Nth call. - _.after = function(times, func) { - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; +// Internal helper for collection methods to determine whether a collection +// should be iterated as an array or as an object. +// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength +// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 +var isArrayLike = createSizePropertyCheck(getLength); - // Returns a function that will only be executed up to (but not including) the Nth call. - _.before = function(times, func) { - var memo; - return function() { - if (--times > 0) { - memo = func.apply(this, arguments); +// Internal implementation of a recursive `flatten` function. +function flatten$1(input, depth, strict, output) { + output = output || []; + if (!depth && depth !== 0) { + depth = Infinity; + } else if (depth <= 0) { + return output.concat(input); + } + var idx = output.length; + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + // Flatten current level of array or arguments object. + if (depth > 1) { + flatten$1(value, depth - 1, strict, output); + idx = output.length; + } else { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; } - if (times <= 1) func = null; - return memo; - }; - }; + } else if (!strict) { + output[idx++] = value; + } + } + return output; +} - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = _.partial(_.before, 2); +// Bind a number of an object's methods to that object. Remaining arguments +// are the method names to be bound. Useful for ensuring that all callbacks +// defined on an object belong to it. +var bindAll = restArguments(function(obj, keys) { + keys = flatten$1(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = bind(obj[key], obj); + } + return obj; +}); - _.restArguments = restArguments; +// Memoize an expensive function by storing its results. +function memoize(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; +} - // Object Functions - // ---------------- +// Delays a function for the given number of milliseconds, and then calls +// it with the arguments supplied. +var delay = restArguments(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); +}); - // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. - var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); - var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// Defers a function, scheduling it to run after the current call stack has +// cleared. +var defer = partial(delay, _$1, 1); - var collectNonEnumProps = function(obj, keys) { - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = _.isFunction(constructor) && constructor.prototype || ObjProto; +// Returns a function, that, when invoked, will only be triggered at most once +// during a given window of time. Normally, the throttled function will run +// as much as it can, without ever going more than once per `wait` duration; +// but if you'd like to disable the execution on the leading edge, pass +// `{leading: false}`. To disable execution on the trailing edge, ditto. +function throttle(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; - // Constructor is a special case. - var prop = 'constructor'; - if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + var later = function() { + previous = options.leading === false ? 0 : now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { - keys.push(prop); + var throttled = function() { + var _now = now(); + if (!previous && options.leading === false) previous = _now; + var remaining = wait - (_now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; } + previous = _now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); } + return result; }; - // Retrieve the names of an object's own properties. - // Delegates to **ECMAScript 5**'s native `Object.keys`. - _.keys = function(obj) { - if (!_.isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; }; - // Retrieve all the property names of an object. - _.allKeys = function(obj) { - if (!_.isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; - }; + return throttled; +} - // Retrieve the values of an object's properties. - _.values = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[keys[i]]; +// When a sequence of calls of the returned function ends, the argument +// function is triggered. The end of a sequence is defined by the `wait` +// parameter. If `immediate` is passed, the argument function will be +// triggered at the beginning of the sequence instead of at the end. +function debounce(func, wait, immediate) { + var timeout, previous, args, result, context; + + var later = function() { + var passed = now() - previous; + if (wait > passed) { + timeout = setTimeout(later, wait - passed); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); + // This check is needed because `func` can recursively invoke `debounced`. + if (!timeout) args = context = null; } - return values; }; - // Returns the results of applying the iteratee to each element of the object. - // In contrast to _.map it returns an object. - _.mapObject = function(obj, iteratee, context) { - iteratee = cb(iteratee, context); - var keys = _.keys(obj), - length = keys.length, - results = {}; - for (var index = 0; index < length; index++) { - var currentKey = keys[index]; - results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + var debounced = restArguments(function(_args) { + context = this; + args = _args; + previous = now(); + if (!timeout) { + timeout = setTimeout(later, wait); + if (immediate) result = func.apply(context, args); } - return results; + return result; + }); + + debounced.cancel = function() { + clearTimeout(timeout); + timeout = args = context = null; }; - // Convert an object into a list of `[key, value]` pairs. - // The opposite of _.object. - _.pairs = function(obj) { - var keys = _.keys(obj); - var length = keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [keys[i], obj[keys[i]]]; - } - return pairs; + return debounced; +} + +// Returns the first function passed as an argument to the second, +// allowing you to adjust arguments, run code before and after, and +// conditionally execute the original function. +function wrap(func, wrapper) { + return partial(wrapper, func); +} + +// Returns a negated version of the passed-in predicate. +function negate(predicate) { + return function() { + return !predicate.apply(this, arguments); }; +} - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - var keys = _.keys(obj); - for (var i = 0, length = keys.length; i < length; i++) { - result[obj[keys[i]]] = keys[i]; - } +// Returns a function that is the composition of a list of functions, each +// consuming the return value of the function that follows. +function compose() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); return result; }; +} - // Return a sorted list of the function names available on the object. - // Aliased as `methods`. - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); +// Returns a function that will only be executed on and after the Nth call. +function after(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); } - return names.sort(); }; +} - // An internal function for creating assigner functions. - var createAssigner = function(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; +// Returns a function that will only be executed up to (but not including) the +// Nth call. +function before(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; }; +} - // Extend a given object with all the properties in passed-in object(s). - _.extend = createAssigner(_.allKeys); +// Returns a function that will be executed at most one time, no matter how +// often you call it. Useful for lazy initialization. +var once = partial(before, 2); - // Assigns a given object with all the own properties in the passed-in object(s). - // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) - _.extendOwn = _.assign = createAssigner(_.keys); +// Returns the first key on an object that passes a truth test. +function findKey(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = keys(obj), key; + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) return key; + } +} - // Returns the first key on an object that passes a predicate test. - _.findKey = function(obj, predicate, context) { +// Internal function to generate `_.findIndex` and `_.findLastIndex`. +function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { predicate = cb(predicate, context); - var keys = _.keys(obj), key; - for (var i = 0, length = keys.length; i < length; i++) { - key = keys[i]; - if (predicate(obj[key], key, obj)) return key; + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; } + return -1; }; +} - // Internal pick helper function to determine if `obj` has key `key`. - var keyInObj = function(value, key, obj) { - return key in obj; - }; - - // Return a copy of the object only containing the whitelisted properties. - _.pick = restArguments(function(obj, keys) { - var result = {}, iteratee = keys[0]; - if (obj == null) return result; - if (_.isFunction(iteratee)) { - if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); - keys = _.allKeys(obj); - } else { - iteratee = keyInObj; - keys = flatten(keys, false, false); - obj = Object(obj); - } - for (var i = 0, length = keys.length; i < length; i++) { - var key = keys[i]; - var value = obj[key]; - if (iteratee(value, key, obj)) result[key] = value; - } - return result; - }); - - // Return a copy of the object without the blacklisted properties. - _.omit = restArguments(function(obj, keys) { - var iteratee = keys[0], context; - if (_.isFunction(iteratee)) { - iteratee = _.negate(iteratee); - if (keys.length > 1) context = keys[1]; - } else { - keys = _.map(flatten(keys, false, false), String); - iteratee = function(value, key) { - return !_.contains(keys, key); - }; - } - return _.pick(obj, iteratee, context); - }); - - // Fill in a given object with default properties. - _.defaults = createAssigner(_.allKeys, true); - - // Creates an object that inherits from the given prototype object. - // If additional properties are provided then they will be added to the - // created object. - _.create = function(prototype, props) { - var result = baseCreate(prototype); - if (props) _.extendOwn(result, props); - return result; - }; +// Returns the first index on an array-like that passes a truth test. +var findIndex = createPredicateIndexFinder(1); - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; +// Returns the last index on an array-like that passes a truth test. +var findLastIndex = createPredicateIndexFinder(-1); - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; +// Use a comparator function to figure out the smallest index at which +// an object should be inserted so as to maintain order. Uses binary search. +function sortedIndex(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; +} - // Returns whether an object has a given set of `key:value` pairs. - _.isMatch = function(object, attrs) { - var keys = _.keys(attrs), length = keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; +// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. +function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; } - return true; + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), isNaN$1); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; }; +} +// Return the position of the first occurrence of an item in an array, +// or -1 if the item is not included in the array. +// If the array is large and already in sort order, pass `true` +// for **isSorted** to use binary search. +var indexOf = createIndexFinder(1, findIndex, sortedIndex); - // Internal recursive comparison function for `isEqual`. - var eq, deepEq; - eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); - }; +// Return the position of the last occurrence of an item in an array, +// or -1 if the item is not included in the array. +var lastIndexOf = createIndexFinder(-1, findLastIndex); - // Internal recursive comparison function for `isEqual`. - deepEq = function(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - switch (className) { - // Strings, numbers, regular expressions, dates, and booleans are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - } +// Return the first value which passes a truth test. +function find(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; +} - var areArrays = className === '[object Array]'; - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; +// Convenience version of a common use case of `_.find`: getting the first +// object containing specific `key:value` pairs. +function findWhere(obj, attrs) { + return find(obj, matcher(attrs)); +} - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && - _.isFunction(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } +// The cornerstone for collection functions, an `each` +// implementation, aka `forEach`. +// Handles raw objects in addition to array-likes. Treats all +// sparse array-likes as if they were dense. +function each(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; + } else { + var _keys = keys(obj); + for (i = 0, length = _keys.length; i < length; i++) { + iteratee(obj[_keys[i]], _keys[i], obj); } + } + return obj; +} - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); +// Return the results of applying the iteratee to each element. +function map(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; +} - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var keys = _.keys(a), key; - length = keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (_.keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = keys[length]; - if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } +// Internal helper to create a reducing function, iterating left or right. +function createReduce(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function(obj, iteratee, memo, initial) { + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[_keys ? _keys[index] : index]; + index += dir; } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; - }; - - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b); - }; - - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; - return _.keys(obj).length === 0; + for (; index >= 0 && index < length; index += dir) { + var currentKey = _keys ? _keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; }; - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); }; +} - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) === '[object Array]'; - }; +// **Reduce** builds up a single result from a list of values, aka `inject`, +// or `foldl`. +var reduce = createReduce(1); - // Is a given variable an object? - _.isObject = function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - }; +// The right-associative version of reduce, also known as `foldr`. +var reduceRight = createReduce(-1); - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet. - _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) === '[object ' + name + ']'; - }; +// Return all the elements that pass a truth test. +function filter(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); }); + return results; +} - // Define a fallback version of the method in browsers (ahem, IE < 9), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return has(obj, 'callee'); - }; +// Return all the elements for which a truth test fails. +function reject(obj, predicate, context) { + return filter(obj, negate(cb(predicate)), context); +} + +// Determine whether all of the elements pass a truth test. +function every(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; } + return true; +} - // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, - // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). - var nodelist = root.document && root.document.childNodes; - if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - _.isFunction = function(obj) { - return typeof obj == 'function' || false; - }; +// Determine if at least one element in the object passes a truth test. +function some(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; } + return false; +} - // Is a given object a finite number? - _.isFinite = function(obj) { - return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj)); - }; +// Determine if the array or object contains a given item (using `===`). +function contains(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return indexOf(obj, item, fromIndex) >= 0; +} - // Is the given value `NaN`? - _.isNaN = function(obj) { - return _.isNumber(obj) && isNaN(obj); - }; +// Invoke a method (with arguments) on every item in a collection. +var invoke = restArguments(function(obj, path, args) { + var contextPath, func; + if (isFunction$1(path)) { + func = path; + } else { + path = toPath(path); + contextPath = path.slice(0, -1); + path = path[path.length - 1]; + } + return map(obj, function(context) { + var method = func; + if (!method) { + if (contextPath && contextPath.length) { + context = deepGet(context, contextPath); + } + if (context == null) return void 0; + method = context[path]; + } + return method == null ? method : method.apply(context, args); + }); +}); - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; - }; +// Convenience version of a common use case of `_.map`: fetching a property. +function pluck(obj, key) { + return map(obj, property(key)); +} - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; +// Convenience version of a common use case of `_.filter`: selecting only +// objects containing specific `key:value` pairs. +function where(obj, attrs) { + return filter(obj, matcher(attrs)); +} - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; +// Return the maximum element (or element-based computation). +function max(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; +} - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, path) { - if (!_.isArray(path)) { - return has(obj, path); +// Return the minimum element (or element-based computation). +function min(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } } - var length = path.length; - for (var i = 0; i < length; i++) { - var key = path[i]; - if (obj == null || !hasOwnProperty.call(obj, key)) { - return false; + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; } - obj = obj[key]; + }); + } + return result; +} + +// Sample **n** random values from a collection using the modern version of the +// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). +// If **n** is not specified, returns a single random element. +// The internal `guard` argument allows it to work with `_.map`. +function sample(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = values(obj); + return obj[random(obj.length - 1)]; + } + var sample = isArrayLike(obj) ? clone(obj) : values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); +} + +// Shuffle a collection. +function shuffle(obj) { + return sample(obj, Infinity); +} + +// Sort the object's values by a criterion produced by an iteratee. +function sortBy(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return pluck(map(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; } - return !!length; + return left.index - right.index; + }), 'value'); +} + +// An internal function used for aggregate "group by" operations. +function group(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; }; +} - // Utility Functions - // ----------------- +// Groups the object's values by a criterion. Pass either a string attribute +// to group by, or a function that returns the criterion. +var groupBy = group(function(result, value, key) { + if (has$1(result, key)) result[key].push(value); else result[key] = [value]; +}); - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; +// Indexes the object's values by a criterion, similar to `_.groupBy`, but for +// when you know that your index values will be unique. +var indexBy = group(function(result, value, key) { + result[key] = value; +}); + +// Counts instances of an object that group by a certain criterion. Pass +// either a string attribute to count by, or a function that returns the +// criterion. +var countBy = group(function(result, value, key) { + if (has$1(result, key)) result[key]++; else result[key] = 1; +}); + +// Split a collection into two arrays: one whose elements all pass the given +// truth test, and one whose elements all do not pass the truth test. +var partition = group(function(result, value, pass) { + result[pass ? 0 : 1].push(value); +}, true); + +// Safely create a real, live array from anything iterable. +var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; +function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return slice.call(obj); + if (isString(obj)) { + // Keep surrogate pair characters together. + return obj.match(reStrSymbol); + } + if (isArrayLike(obj)) return map(obj, identity); + return values(obj); +} - // Keep the identity function around for default iteratees. - _.identity = function(value) { - return value; - }; +// Return the number of elements in a collection. +function size(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : keys(obj).length; +} - // Predicate-generating functions. Often useful outside of Underscore. - _.constant = function(value) { - return function() { - return value; - }; - }; +// Internal `_.pick` helper function to determine whether `key` is an enumerable +// property name of `obj`. +function keyInObj(value, key, obj) { + return key in obj; +} - _.noop = function(){}; +// Return a copy of the object only containing the allowed properties. +var pick = restArguments(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (isFunction$1(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten$1(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; +}); - // Creates a function that, when passed an object, will traverse that object’s - // properties down the given `path`, specified as an array of keys or indexes. - _.property = function(path) { - if (!_.isArray(path)) { - return shallowProperty(path); - } - return function(obj) { - return deepGet(obj, path); +// Return a copy of the object without the disallowed properties. +var omit = restArguments(function(obj, keys) { + var iteratee = keys[0], context; + if (isFunction$1(iteratee)) { + iteratee = negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = map(flatten$1(keys, false, false), String); + iteratee = function(value, key) { + return !contains(keys, key); }; - }; + } + return pick(obj, iteratee, context); +}); - // Generates a function for a given object that returns a given property. - _.propertyOf = function(obj) { - if (obj == null) { - return function(){}; - } - return function(path) { - return !_.isArray(path) ? obj[path] : deepGet(obj, path); - }; - }; +// Returns everything but the last entry of the array. Especially useful on +// the arguments object. Passing **n** will return all the values in +// the array, excluding the last N. +function initial(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); +} - // Returns a predicate for checking whether an object has a given set of - // `key:value` pairs. - _.matcher = _.matches = function(attrs) { - attrs = _.extendOwn({}, attrs); - return function(obj) { - return _.isMatch(obj, attrs); - }; - }; +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} - // Run a function **n** times. - _.times = function(n, iteratee, context) { - var accum = Array(Math.max(0, n)); - iteratee = optimizeCb(iteratee, context, 1); - for (var i = 0; i < n; i++) accum[i] = iteratee(i); - return accum; - }; +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} - // A (possibly faster) way to get the current timestamp as an integer. - _.now = Date.now || function() { - return new Date().getTime(); - }; +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} - // List of HTML entities for escaping. - var escapeMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - var unescapeMap = _.invert(escapeMap); +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten(array, depth) { + return flatten$1(array, depth, false); +} - // Functions for escaping and unescaping strings to/from HTML interpolation. - var createEscaper = function(map) { - var escaper = function(match) { - return map[match]; - }; - // Regexes for identifying a key that needs to be escaped. - var source = '(?:' + _.keys(map).join('|') + ')'; - var testRegexp = RegExp(source); - var replaceRegexp = RegExp(source, 'g'); - return function(string) { - string = string == null ? '' : '' + string; - return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; - }; - }; - _.escape = createEscaper(escapeMap); - _.unescape = createEscaper(unescapeMap); +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +var difference = restArguments(function(array, rest) { + rest = flatten$1(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +}); - // Traverses the children of `obj` along `path`. If a child is a function, it - // is invoked with its parent as context. Returns the value of the final - // child, or `fallback` if any child is undefined. - _.result = function(obj, path, fallback) { - if (!_.isArray(path)) path = [path]; - var length = path.length; - if (!length) { - return _.isFunction(fallback) ? fallback.call(obj) : fallback; - } - for (var i = 0; i < length; i++) { - var prop = obj == null ? void 0 : obj[path[i]]; - if (prop === void 0) { - prop = fallback; - i = length; // Ensure we don't continue iterating. +// Return a version of the array that does not contain the specified value(s). +var without = restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +}); + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); } - obj = _.isFunction(prop) ? prop.call(obj) : prop; + } else if (!contains(result, value)) { + result.push(value); } - return obj; - }; + } + return result; +} - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +var union = restArguments(function(arrays) { + return uniq(flatten$1(arrays, true, true)); +}); - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate: /<%([\s\S]+?)%>/g, - interpolate: /<%=([\s\S]+?)%>/g, - escape: /<%-([\s\S]+?)%>/g - }; +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = array && max(array, getLength).length || 0; + var result = Array(length); - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} - var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; +// Zip together multiple lists into a single array -- elements that share +// an index go together. +var zip = restArguments(unzip); - var escapeChar = function(match) { - return '\\' + escapes[match]; - }; +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - // NB: `oldSettings` only exists for backwards compatibility. - _.template = function(text, settings, oldSettings) { - if (!settings && oldSettings) settings = oldSettings; - settings = _.defaults({}, settings, _.templateSettings); +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } - // Combine delimiters into one regular expression via alternation. - var matcher = RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset).replace(escapeRegExp, escapeChar); - index = offset + match.length; + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } else if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } else if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } + return range; +} - // Adobe VMs need the match returned to produce the correct offset. - return match; - }); - source += "';\n"; +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _$1(obj).chain() : obj; +} - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + 'return __p;\n'; +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _$1[name] = obj[name]; + _$1.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_$1, args)); + }; + }); + return _$1; +} - var render; - try { - render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } } + return chainResult(this, obj); + }; +}); - var template = function(data) { - return render.call(this, data, _); - }; +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); - // Provide the compiled source as a convenience for precompilation. - var argument = settings.variable || 'obj'; - template.source = 'function(' + argument + '){\n' + source + '}'; +// Named Exports - return template; - }; +var allExports = { + __proto__: null, + VERSION: VERSION, + restArguments: restArguments, + isObject: isObject, + isNull: isNull, + isUndefined: isUndefined, + isBoolean: isBoolean, + isElement: isElement, + isString: isString, + isNumber: isNumber, + isDate: isDate, + isRegExp: isRegExp, + isError: isError, + isSymbol: isSymbol, + isArrayBuffer: isArrayBuffer, + isDataView: isDataView$1, + isArray: isArray, + isFunction: isFunction$1, + isArguments: isArguments$1, + isFinite: isFinite$1, + isNaN: isNaN$1, + isTypedArray: isTypedArray$1, + isEmpty: isEmpty, + isMatch: isMatch, + isEqual: isEqual, + isMap: isMap, + isWeakMap: isWeakMap, + isSet: isSet, + isWeakSet: isWeakSet, + keys: keys, + allKeys: allKeys, + values: values, + pairs: pairs, + invert: invert, + functions: functions, + methods: functions, + extend: extend, + extendOwn: extendOwn, + assign: extendOwn, + defaults: defaults, + create: create, + clone: clone, + tap: tap, + get: get, + has: has, + mapObject: mapObject, + identity: identity, + constant: constant, + noop: noop, + toPath: toPath$1, + property: property, + propertyOf: propertyOf, + matcher: matcher, + matches: matcher, + times: times, + random: random, + now: now, + escape: _escape, + unescape: _unescape, + templateSettings: templateSettings, + template: template, + result: result, + uniqueId: uniqueId, + chain: chain, + iteratee: iteratee, + partial: partial, + bind: bind, + bindAll: bindAll, + memoize: memoize, + delay: delay, + defer: defer, + throttle: throttle, + debounce: debounce, + wrap: wrap, + negate: negate, + compose: compose, + after: after, + before: before, + once: once, + findKey: findKey, + findIndex: findIndex, + findLastIndex: findLastIndex, + sortedIndex: sortedIndex, + indexOf: indexOf, + lastIndexOf: lastIndexOf, + find: find, + detect: find, + findWhere: findWhere, + each: each, + forEach: each, + map: map, + collect: map, + reduce: reduce, + foldl: reduce, + inject: reduce, + reduceRight: reduceRight, + foldr: reduceRight, + filter: filter, + select: filter, + reject: reject, + every: every, + all: every, + some: some, + any: some, + contains: contains, + includes: contains, + include: contains, + invoke: invoke, + pluck: pluck, + where: where, + max: max, + min: min, + shuffle: shuffle, + sample: sample, + sortBy: sortBy, + groupBy: groupBy, + indexBy: indexBy, + countBy: countBy, + partition: partition, + toArray: toArray, + size: size, + pick: pick, + omit: omit, + first: first, + head: first, + take: first, + initial: initial, + last: last, + rest: rest, + tail: rest, + drop: rest, + compact: compact, + flatten: flatten, + without: without, + uniq: uniq, + unique: uniq, + union: union, + intersection: intersection, + difference: difference, + unzip: unzip, + transpose: unzip, + zip: zip, + object: object, + range: range, + chunk: chunk, + mixin: mixin, + 'default': _$1 +}; - // Add a "chain" function. Start chaining a wrapped Underscore object. - _.chain = function(obj) { - var instance = _(obj); - instance._chain = true; - return instance; - }; +// Default Export - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. +// Add all of the Underscore functions to the wrapper object. +var _ = mixin(allExports); +// Legacy Node.js API. +_._ = _; - // Helper function to continue chaining intermediate results. - var chainResult = function(instance, obj) { - return instance._chain ? _(obj).chain() : obj; - }; +exports.VERSION = VERSION; +exports._ = _; +exports._escape = _escape; +exports._unescape = _unescape; +exports.after = after; +exports.allKeys = allKeys; +exports.before = before; +exports.bind = bind; +exports.bindAll = bindAll; +exports.chain = chain; +exports.chunk = chunk; +exports.clone = clone; +exports.compact = compact; +exports.compose = compose; +exports.constant = constant; +exports.contains = contains; +exports.countBy = countBy; +exports.create = create; +exports.debounce = debounce; +exports.defaults = defaults; +exports.defer = defer; +exports.delay = delay; +exports.difference = difference; +exports.each = each; +exports.every = every; +exports.extend = extend; +exports.extendOwn = extendOwn; +exports.filter = filter; +exports.find = find; +exports.findIndex = findIndex; +exports.findKey = findKey; +exports.findLastIndex = findLastIndex; +exports.findWhere = findWhere; +exports.first = first; +exports.flatten = flatten; +exports.functions = functions; +exports.get = get; +exports.groupBy = groupBy; +exports.has = has; +exports.identity = identity; +exports.indexBy = indexBy; +exports.indexOf = indexOf; +exports.initial = initial; +exports.intersection = intersection; +exports.invert = invert; +exports.invoke = invoke; +exports.isArguments = isArguments$1; +exports.isArray = isArray; +exports.isArrayBuffer = isArrayBuffer; +exports.isBoolean = isBoolean; +exports.isDataView = isDataView$1; +exports.isDate = isDate; +exports.isElement = isElement; +exports.isEmpty = isEmpty; +exports.isEqual = isEqual; +exports.isError = isError; +exports.isFinite = isFinite$1; +exports.isFunction = isFunction$1; +exports.isMap = isMap; +exports.isMatch = isMatch; +exports.isNaN = isNaN$1; +exports.isNull = isNull; +exports.isNumber = isNumber; +exports.isObject = isObject; +exports.isRegExp = isRegExp; +exports.isSet = isSet; +exports.isString = isString; +exports.isSymbol = isSymbol; +exports.isTypedArray = isTypedArray$1; +exports.isUndefined = isUndefined; +exports.isWeakMap = isWeakMap; +exports.isWeakSet = isWeakSet; +exports.iteratee = iteratee; +exports.keys = keys; +exports.last = last; +exports.lastIndexOf = lastIndexOf; +exports.map = map; +exports.mapObject = mapObject; +exports.matcher = matcher; +exports.max = max; +exports.memoize = memoize; +exports.min = min; +exports.mixin = mixin; +exports.negate = negate; +exports.noop = noop; +exports.now = now; +exports.object = object; +exports.omit = omit; +exports.once = once; +exports.pairs = pairs; +exports.partial = partial; +exports.partition = partition; +exports.pick = pick; +exports.pluck = pluck; +exports.property = property; +exports.propertyOf = propertyOf; +exports.random = random; +exports.range = range; +exports.reduce = reduce; +exports.reduceRight = reduceRight; +exports.reject = reject; +exports.rest = rest; +exports.restArguments = restArguments; +exports.result = result; +exports.sample = sample; +exports.shuffle = shuffle; +exports.size = size; +exports.some = some; +exports.sortBy = sortBy; +exports.sortedIndex = sortedIndex; +exports.tap = tap; +exports.template = template; +exports.templateSettings = templateSettings; +exports.throttle = throttle; +exports.times = times; +exports.toArray = toArray; +exports.toPath = toPath$1; +exports.union = union; +exports.uniq = uniq; +exports.uniqueId = uniqueId; +exports.unzip = unzip; +exports.values = values; +exports.where = where; +exports.without = without; +exports.wrap = wrap; +exports.zip = zip; +//# sourceMappingURL=underscore-node-f.cjs.map - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - _.each(_.functions(obj), function(name) { - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_, args)); - }; - }); - return _; - }; - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); +/***/ }), - // Add all mutator Array functions to the wrapper. - _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; - return chainResult(this, obj); - }; - }); +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // Add all accessor Array functions to the wrapper. - _.each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return chainResult(this, method.apply(this._wrapped, arguments)); - }; - }); +// Underscore.js 1.13.1 +// https://underscorejs.org +// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. - // Extracts the result from a wrapped and chained object. - _.prototype.value = function() { - return this._wrapped; - }; +var underscoreNodeF = __webpack_require__(/*! ./underscore-node-f.cjs */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs"); - // Provide unwrapping proxy for some methods used in engine operations - // such as arithmetic and JSON stringification. - _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; - _.prototype.toString = function() { - return String(this._wrapped); - }; - // AMD registration happens at the end for compatibility with AMD loaders - // that may not enforce next-turn semantics on modules. Even though general - // practice for AMD registration is to be anonymous, underscore registers - // as a named module because, like jQuery, it is a base library that is - // popular enough to be bundled in a third party lib, but not be part of - // an AMD load request. Those cases could generate an error when an - // anonymous define() is called outside of a loader request. - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { - return _; - }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } -}()); +module.exports = underscoreNodeF._; +//# sourceMappingURL=underscore-node.cjs.map /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/index.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/index.js": /*!**************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/index.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/index.js ***! \**************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -89825,10 +91469,10 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscor * Business logic for interacting with rules documents */ -const pouchdbProvider = __webpack_require__(/*! ./pouchdb-provider */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js"); -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js"); -const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js"); -const wireupToProvider = __webpack_require__(/*! ./provider-wireup */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js"); +const pouchdbProvider = __webpack_require__(/*! ./pouchdb-provider */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js"); +const wireupToProvider = __webpack_require__(/*! ./provider-wireup */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js"); /** * @param {Object} db Medic pouchdb database @@ -89914,9 +91558,9 @@ module.exports = db => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js": /*!*************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js ***! \*************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -89929,8 +91573,8 @@ module.exports = db => { // TODO work out how to pass in the logger from node/browser /* eslint-disable no-console */ const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); -const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); +const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); const RULES_STATE_DOCID = '_local/rulesStateStore'; const docsOf = (query) => { @@ -90081,9 +91725,9 @@ module.exports = medicPouchProvider; /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js": /*!************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js ***! \************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -90094,14 +91738,14 @@ module.exports = medicPouchProvider; */ const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); -const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js"); -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js"); -const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js"); -const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); +const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js"); +const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); let wireupOptions; @@ -90368,9 +92012,9 @@ const handleIntervalTurnover = (provider, { monthStartDate }) => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -90383,9 +92027,9 @@ const handleIntervalTurnover = (provider, { monthStartDate }) => { * @requires rules-emitter to be initialized */ -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js"); -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); -const transformTaskEmissionToDoc = __webpack_require__(/*! ./transform-task-emission-to-doc */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); +const transformTaskEmissionToDoc = __webpack_require__(/*! ./transform-task-emission-to-doc */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js"); /** * @param {Object[]} freshData.contactDocs A set of contact documents @@ -90539,9 +92183,9 @@ const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js": /*!**********************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -90552,9 +92196,9 @@ const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { * Promisifies the execution of partner "rules" code * Ensures memory allocated by nools is freed after each run */ -const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js"); -const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js"); +const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); let flow; @@ -90595,6 +92239,7 @@ module.exports = { scope: { Utils: nootilsInstance, user: settings.contact, + cht: settings.chtScriptApi, }, }); } catch (err) { @@ -90750,9 +92395,9 @@ const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js": /*!**************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js ***! \**************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -90762,9 +92407,9 @@ const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { * 1. Details on the state of each contact's rules calculations * 2. Target emissions @see target-state */ -const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); -const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js"); +const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); +const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js"); const EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000; let state; @@ -91060,9 +92705,9 @@ module.exports = Object.keys(self).reduce((agg, key) => { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js": /*!*********************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js ***! \*********************************************************************************/ /***/ ((module) => { @@ -91251,9 +92896,9 @@ module.exports = { /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js": /*!********************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js ***! \********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -91417,9 +93062,9 @@ Object.assign(module.exports, States); /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -91430,7 +93075,7 @@ Object.assign(module.exports, States); * Merges emission data into an existing document, or creates a new task document (as appropriate) */ -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); /** * @param {Object} taskEmission A task emission from the rules engine @@ -91516,9 +93161,9 @@ const newTaskDoc = (emission, userSettingsId, calculatedAt) => ({ /***/ }), -/***/ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js": +/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js ***! + !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -91527,7 +93172,7 @@ const newTaskDoc = (emission, userSettingsId, calculatedAt) => ({ * As time elapses, documents change state because the timing window has been reached. * Eg. Documents with state Draft move to state Ready just because it is now after midnight */ -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); /** * @param {Object[]} taskDocs A list of task documents to evaluate @@ -91553,9 +93198,9 @@ module.exports = (taskDocs, timestamp = Date.now()) => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/calendar-interval/src/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js": /*!*******************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/calendar-interval/src/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js ***! \*******************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -91632,9 +93277,9 @@ module.exports = { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/auth.js": /*!***************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/auth.js ***! \***************************************************************************/ /***/ ((module) => { @@ -91807,9 +93452,9 @@ module.exports = { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/index.js": /*!****************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/index.js ***! \****************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -91818,7 +93463,7 @@ module.exports = { * Builds and exports a versioned API from feature modules. * Whenever possible keep this file clean by defining new features in modules. */ -const auth = __webpack_require__(/*! ./auth */ "./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js"); +const auth = __webpack_require__(/*! ./auth */ "./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/auth.js"); /** * Verify if the user's role has the permission(s). @@ -91852,15 +93497,127 @@ module.exports = { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/contact-types-utils/src/index.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/cht-core-3-13/shared-libs/contact-types-utils/src/index.js ***! + \*********************************************************************************/ +/***/ ((module) => { + +const HARDCODED_PERSON_TYPE = 'person'; +const HARDCODED_TYPES = [ + 'district_hospital', + 'health_center', + 'clinic', + 'person' +]; + +const getContactTypes = config => { + return config && Array.isArray(config.contact_types) && config.contact_types || []; +}; + +const getTypeId = (doc) => { + if (!doc) { + return; + } + return doc.type === 'contact' ? doc.contact_type : doc.type; +}; + +const getTypeById = (config, typeId) => { + const contactTypes = getContactTypes(config); + return contactTypes.find(type => type.id === typeId); +}; + +const isPersonType = (type) => { + return type && (type.person || type.id === HARDCODED_PERSON_TYPE); +}; + +const isPlaceType = (type) => { + return type && !type.person && type.id !== HARDCODED_PERSON_TYPE; +}; + +const hasParents = (type) => !!(type && type.parents && type.parents.length); + +const isParentOf = (parentType, childType) => { + if (!parentType || !childType) { + return false; + } + + const parentTypeId = typeof parentType === 'string' ? parentType : parentType.id; + return !!(childType && childType.parents && childType.parents.includes(parentTypeId)); +}; + +// A leaf place type is a contact type that does not have any child place types, but can have child person types +const getLeafPlaceTypes = (config) => { + const types = getContactTypes(config); + const placeTypes = types.filter(type => !type.person); + return placeTypes.filter(type => { + return placeTypes.every(inner => !inner.parents || !inner.parents.includes(type.id)); + }); +}; + +const getContactType = (config, contact) => { + const typeId = getTypeId(contact); + return typeId && getTypeById(config, typeId); +}; + +// returns true if contact's type exists and is a person type OR if contact's type is the hardcoded person type +const isPerson = (config, contact) => { + const typeId = getTypeId(contact); + const type = getTypeById(config, typeId) || { id: typeId }; + return isPersonType(type); +}; + +const isPlace = (config, contact) => { + const type = getContactType(config, contact); + return isPlaceType(type); +}; + +const isHardcodedType = type => HARDCODED_TYPES.includes(type); + +const isOrphan = (type) => !type.parents || !type.parents.length; +/** + * Returns an array of child types for the given type id. + * If parent is falsey, returns the types with no parent. + */ +const getChildren = (config, parentType) => { + const types = getContactTypes(config); + return types.filter(type => (!parentType && isOrphan(type)) || isParentOf(parentType, type)); +}; + +const getPlaceTypes = (config) => getContactTypes(config).filter(isPlaceType); +const getPersonTypes = (config) => getContactTypes(config).filter(isPersonType); + +module.exports = { + getTypeId, + getTypeById, + isPersonType, + isPlaceType, + hasParents, + isParentOf, + getLeafPlaceTypes, + getContactType, + isPerson, + isPlace, + isHardcodedType, + HARDCODED_TYPES, + getContactTypes, + getChildren, + getPlaceTypes, + getPersonTypes, +}; + + +/***/ }), + +/***/ "./node_modules/cht-core-3-13/shared-libs/lineage/src/hydration.js": /*!*************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/lineage/src/hydration.js ***! \*************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); _.uniq = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js"); -const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js"); +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-13/shared-libs/lineage/src/utils.js"); const deepCopy = obj => JSON.parse(JSON.stringify(obj)); @@ -92371,9 +94128,9 @@ module.exports = function(Promise, DB) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/lineage/src/index.js": /*!*********************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/lineage/src/index.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -92382,20 +94139,20 @@ module.exports = function(Promise, DB) { */ module.exports = (Promise, DB) => Object.assign( {}, - __webpack_require__(/*! ./hydration */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js")(Promise, DB), - __webpack_require__(/*! ./minify */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js") + __webpack_require__(/*! ./hydration */ "./node_modules/cht-core-3-13/shared-libs/lineage/src/hydration.js")(Promise, DB), + __webpack_require__(/*! ./minify */ "./node_modules/cht-core-3-13/shared-libs/lineage/src/minify.js") ); /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/lineage/src/minify.js": /*!**********************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/lineage/src/minify.js ***! \**********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js"); +const utils = __webpack_require__(/*! ./utils */ "./node_modules/cht-core-3-13/shared-libs/lineage/src/utils.js"); const RECURSION_LIMIT = 50; // Minifies things you would attach to another doc: @@ -92461,13 +94218,13 @@ module.exports = { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/lineage/src/utils.js": /*!*********************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/lineage/src/utils.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const contactTypeUtils = __webpack_require__(/*! @medic/contact-types-utils */ "./node_modules/cht-core-3-11/shared-libs/contact-types-utils/src/index.js"); +const contactTypeUtils = __webpack_require__(/*! @medic/contact-types-utils */ "./node_modules/cht-core-3-13/shared-libs/contact-types-utils/src/index.js"); const _ = __webpack_require__(/*! lodash/core */ "./node_modules/lodash/core.js"); const isContact = doc => { @@ -92502,9 +94259,9 @@ module.exports = { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/registration-utils/src/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js": /*!********************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/registration-utils/src/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js ***! \********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -92600,9 +94357,9 @@ exports.getSubjectId = report => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/arguments-extended/index.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/arguments-extended/index.js ***! \******************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -92636,7 +94393,7 @@ exports.getSubjectId = report => { if (true) { if ( true && module.exports) { - module.exports = defineArgumentsExtended(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")); + module.exports = defineArgumentsExtended(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js")); } } else {} @@ -92647,9 +94404,9 @@ exports.getSubjectId = report => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js ***! \**************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -93304,7 +95061,7 @@ exports.getSubjectId = report => { if (true) { if ( true && module.exports) { - module.exports = defineArray(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + module.exports = defineArray(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); } } else {} @@ -93319,9 +95076,9 @@ exports.getSubjectId = report => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/charenc/charenc.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/charenc/charenc.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -93362,9 +95119,9 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/crypt/crypt.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/crypt/crypt.js ***! \*****************************************************************************************/ /***/ ((module) => { @@ -93468,9 +95225,9 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/date-extended/index.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/date-extended/index.js ***! \*************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -94402,7 +96159,7 @@ module.exports = charenc; if (true) { if ( true && module.exports) { - module.exports = defineDate(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")); + module.exports = defineDate(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js")); } } else {} @@ -94418,9 +96175,9 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/declare.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/declare.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -95349,19 +97106,19 @@ module.exports = charenc; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js"); +module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/declare.js"); /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js ***! \********************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -95444,7 +97201,7 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor if (true) { if ( true && module.exports) { - module.exports = defineExtended(__webpack_require__(/*! extender */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js")); + module.exports = defineExtended(__webpack_require__(/*! extender */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/index.js")); } } else {} @@ -95460,9 +97217,9 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/extender.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/extender.js ***! \***********************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -95994,7 +97751,7 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor if (true) { if ( true && module.exports) { - module.exports = defineExtender(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")); + module.exports = defineExtender(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js")); } } else {} @@ -96003,19 +97760,19 @@ module.exports = __webpack_require__(/*! ./declare.js */ "./node_modules/cht-cor /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/index.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/index.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js"); +module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/extender.js"); /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/function-extended/index.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/function-extended/index.js ***! \*****************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -96257,7 +98014,7 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co if (true) { if ( true && module.exports) { - module.exports = defineFunction(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + module.exports = defineFunction(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); } } else {} @@ -96273,9 +98030,9 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/ht/index.js": /*!**************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/ht/index.js ***! \**************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -96524,7 +98281,7 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co if (true) { if ( true && module.exports) { - module.exports = defineHt(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")().register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")).register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")).register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js"))); + module.exports = defineHt(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js")().register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js")).register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js")).register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js"))); } } else {} @@ -96540,9 +98297,9 @@ module.exports = __webpack_require__(/*! ./extender.js */ "./node_modules/cht-co /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-buffer/index.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-buffer/index.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -96571,9 +98328,9 @@ function isSlowBuffer (obj) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js ***! \***********************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -97064,7 +98821,7 @@ function isSlowBuffer (obj) { if (true) { if ( true && module.exports) { - module.exports = defineIsa(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")); + module.exports = defineIsa(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js")); } } else {} @@ -97075,9 +98832,9 @@ function isSlowBuffer (obj) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/leafy/index.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/leafy/index.js ***! \*****************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -97974,11 +99731,11 @@ function isSlowBuffer (obj) { if (true) { if ( true && module.exports) { - module.exports = defineLeafy(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")() - .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")) - .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")) - .register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")) - .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js")) + module.exports = defineLeafy(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js")() + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register(__webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/string-extended/index.js")) ); } @@ -97995,14 +99752,14 @@ function isSlowBuffer (obj) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_DataView.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_DataView.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var DataView = getNative(root, 'DataView'); @@ -98012,17 +99769,17 @@ module.exports = DataView; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Hash.js": /*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Hash.js ***! \******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js"), - hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js"), - hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js"), - hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js"), - hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js"); +var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashClear.js"), + hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js"), + hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashGet.js"), + hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashHas.js"), + hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashSet.js"); /** * Creates a hash object. @@ -98054,17 +99811,17 @@ module.exports = Hash; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_ListCache.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_ListCache.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js"), - listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js"), - listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js"), - listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js"), - listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js"); +var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js"), + listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js"), + listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js"), + listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js"), + listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js"); /** * Creates an list cache object. @@ -98096,14 +99853,14 @@ module.exports = ListCache; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Map.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Map.js ***! \*****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Map = getNative(root, 'Map'); @@ -98113,17 +99870,17 @@ module.exports = Map; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_MapCache.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_MapCache.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js"), - mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js"), - mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js"), - mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js"), - mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js"); +var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js"), + mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js"), + mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js"), + mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js"), + mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js"); /** * Creates a map cache object to store key-value pairs. @@ -98155,14 +99912,14 @@ module.exports = MapCache; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Promise.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Promise.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Promise = getNative(root, 'Promise'); @@ -98172,14 +99929,14 @@ module.exports = Promise; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Set.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Set.js ***! \*****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Set = getNative(root, 'Set'); @@ -98189,15 +99946,15 @@ module.exports = Set; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_SetCache.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_SetCache.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"), - setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js"), - setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js"); +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"), + setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js"), + setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js"); /** * @@ -98226,18 +99983,18 @@ module.exports = SetCache; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Stack.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Stack.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js"), - stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js"), - stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js"), - stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js"), - stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js"); +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackClear.js"), + stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js"), + stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackGet.js"), + stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackHas.js"), + stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackSet.js"); /** * Creates a stack cache object to store key-value pairs. @@ -98263,13 +100020,13 @@ module.exports = Stack; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Symbol.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Symbol.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /** Built-in value references. */ var Symbol = root.Symbol; @@ -98279,13 +100036,13 @@ module.exports = Symbol; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /** Built-in value references. */ var Uint8Array = root.Uint8Array; @@ -98295,14 +100052,14 @@ module.exports = Uint8Array; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var WeakMap = getNative(root, 'WeakMap'); @@ -98312,9 +100069,9 @@ module.exports = WeakMap; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -98347,13 +100104,13 @@ module.exports = arrayFilter; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js"); +var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js"); /** * A specialized version of `_.includes` for arrays without support for @@ -98374,9 +100131,9 @@ module.exports = arrayIncludes; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js ***! \*******************************************************************************************************/ /***/ ((module) => { @@ -98406,18 +100163,18 @@ module.exports = arrayIncludesWith; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); +var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -98465,9 +100222,9 @@ module.exports = arrayLikeKeys; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -98496,9 +100253,9 @@ module.exports = arrayMap; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -98526,9 +100283,9 @@ module.exports = arrayPush; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arraySome.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arraySome.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -98559,13 +100316,13 @@ module.exports = arraySome; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js"); +var eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/eq.js"); /** * Gets the index at which the `key` is found in `array` of key-value pairs. @@ -98590,9 +100347,9 @@ module.exports = assocIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js ***! \***************************************************************************************************/ /***/ ((module) => { @@ -98624,14 +100381,14 @@ module.exports = baseFindIndex; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGet.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGet.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** * The base implementation of `_.get` without support for default values. @@ -98658,14 +100415,14 @@ module.exports = baseGet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js ***! \****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"); +var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"); /** * The base implementation of `getAllKeys` and `getAllKeysIn` which uses @@ -98688,15 +100445,15 @@ module.exports = baseGetAllKeys; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js"), - objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_objectToString.js"); /** `Object#toString` result references. */ var nullTag = '[object Null]', @@ -98726,9 +100483,9 @@ module.exports = baseGetTag; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -98749,15 +100506,15 @@ module.exports = baseHasIn; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js"), - baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js"), - strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js"); +var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js"), + baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js"), + strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js"); /** * The base implementation of `_.indexOf` without `fromIndex` bounds checks. @@ -98779,14 +100536,14 @@ module.exports = baseIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var argsTag = '[object Arguments]'; @@ -98807,14 +100564,14 @@ module.exports = baseIsArguments; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** * The base implementation of `_.isEqual` which supports partial comparisons @@ -98845,20 +100602,20 @@ module.exports = baseIsEqual; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), - equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js"), - equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js"), - getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js"), + equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isBuffer.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; @@ -98938,14 +100695,14 @@ module.exports = baseIsEqualDeep; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), - baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"); +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Stack.js"), + baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -99010,9 +100767,9 @@ module.exports = baseIsMatch; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -99032,16 +100789,16 @@ module.exports = baseIsNaN; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), - isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isMasked.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObject.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); /** * Used to match `RegExp` @@ -99089,15 +100846,15 @@ module.exports = baseIsNative; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', @@ -99159,17 +100916,17 @@ module.exports = baseIsTypedArray; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js"), - baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - property = __webpack_require__(/*! ./property */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js"); +var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js"), + baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + property = __webpack_require__(/*! ./property */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/property.js"); /** * The base implementation of `_.iteratee`. @@ -99200,14 +100957,14 @@ module.exports = baseIteratee; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js"), - nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js"); +var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js"), + nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -99240,15 +100997,15 @@ module.exports = baseKeys; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js"), - getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"); +var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js"), + getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"); /** * The base implementation of `_.matches` which doesn't clone `source`. @@ -99272,19 +101029,19 @@ module.exports = baseMatches; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"), - get = __webpack_require__(/*! ./get */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js"), - hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js"), + get = __webpack_require__(/*! ./get */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/get.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/hasIn.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -99315,9 +101072,9 @@ module.exports = baseMatchesProperty; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js ***! \**************************************************************************************************/ /***/ ((module) => { @@ -99339,13 +101096,13 @@ module.exports = baseProperty; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); /** * A specialized version of `baseProperty` which supports deep paths. @@ -99365,9 +101122,9 @@ module.exports = basePropertyDeep; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -99395,16 +101152,16 @@ module.exports = baseTimes; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseToString.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseToString.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -99442,9 +101199,9 @@ module.exports = baseToString; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -99466,18 +101223,18 @@ module.exports = baseUnary; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), - arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js"), - arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"), - createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js"), + arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"), + createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_createSet.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -99548,9 +101305,9 @@ module.exports = baseUniq; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -99571,16 +101328,16 @@ module.exports = cacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_castPath.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_castPath.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js"), - toString = __webpack_require__(/*! ./toString */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js"); +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js"), + toString = __webpack_require__(/*! ./toString */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/toString.js"); /** * Casts `value` to a path array if it's not one. @@ -99602,13 +101359,13 @@ module.exports = castPath; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"); /** Used to detect overreaching core-js shims. */ var coreJsData = root['__core-js_shared__']; @@ -99618,15 +101375,15 @@ module.exports = coreJsData; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_createSet.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_createSet.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js"), - noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +var Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + noop = __webpack_require__(/*! ./noop */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/noop.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -99647,15 +101404,15 @@ module.exports = createSet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), - arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"); +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_SetCache.js"), + arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arraySome.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -99740,18 +101497,18 @@ module.exports = equalArrays; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), - Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js"), - eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), - mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"), + Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/eq.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js"), + mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setToArray.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -99862,13 +101619,13 @@ module.exports = equalByTag; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js"); +var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; @@ -99961,9 +101718,9 @@ module.exports = equalObjects; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -99975,15 +101732,15 @@ module.exports = freeGlobal; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js"), - getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js"); +var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/keys.js"); /** * Creates an array of own enumerable property names and symbols of `object`. @@ -100001,13 +101758,13 @@ module.exports = getAllKeys; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMapData.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMapData.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js"); +var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js"); /** * Gets the data for `map`. @@ -100029,14 +101786,14 @@ module.exports = getMapData; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js"); +var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/keys.js"); /** * Gets the property names, values, and compare flags of `object`. @@ -100063,14 +101820,14 @@ module.exports = getMatchData; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js"), - getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js"); +var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js"), + getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getValue.js"); /** * Gets the native function at `key` of `object`. @@ -100090,13 +101847,13 @@ module.exports = getNative; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"); +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Symbol.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -100146,14 +101903,14 @@ module.exports = getRawTag; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js"), - stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js"); +var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubArray.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -100186,19 +101943,19 @@ module.exports = getSymbols; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getTag.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getTag.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js"), - Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js"), - Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js"), - WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js"), - baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); +var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_DataView.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Promise.js"), + Set = __webpack_require__(/*! ./_Set */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Set.js"), + WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js"), + baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toSource.js"); /** `Object#toString` result references. */ var mapTag = '[object Map]', @@ -100254,9 +102011,9 @@ module.exports = getTag; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getValue.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getValue.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -100277,18 +102034,18 @@ module.exports = getValue; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hasPath.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hasPath.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_castPath.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isIndex.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isLength.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** * Checks if `path` exists on `object`. @@ -100326,13 +102083,13 @@ module.exports = hasPath; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashClear.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashClear.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** * Removes all key-value entries from the hash. @@ -100351,9 +102108,9 @@ module.exports = hashClear; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -100378,13 +102135,13 @@ module.exports = hashDelete; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashGet.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashGet.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -100418,13 +102175,13 @@ module.exports = hashGet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashHas.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashHas.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -100451,13 +102208,13 @@ module.exports = hashHas; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashSet.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashSet.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js"); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -100484,9 +102241,9 @@ module.exports = hashSet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isIndex.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isIndex.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -100519,14 +102276,14 @@ module.exports = isIndex; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKey.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKey.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, @@ -100558,9 +102315,9 @@ module.exports = isKey; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js ***! \***********************************************************************************************/ /***/ ((module) => { @@ -100583,13 +102340,13 @@ module.exports = isKeyable; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isMasked.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isMasked.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js"); +var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js"); /** Used to detect methods masquerading as native. */ var maskSrcKey = (function() { @@ -100613,9 +102370,9 @@ module.exports = isMasked; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -100641,13 +102398,13 @@ module.exports = isPrototype; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js": /*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js"); +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObject.js"); /** * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. @@ -100666,9 +102423,9 @@ module.exports = isStrictComparable; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js ***! \****************************************************************************************************/ /***/ ((module) => { @@ -100689,13 +102446,13 @@ module.exports = listCacheClear; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** Used for built-in method references. */ var arrayProto = Array.prototype; @@ -100734,13 +102491,13 @@ module.exports = listCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** * Gets the list cache value for `key`. @@ -100763,13 +102520,13 @@ module.exports = listCacheGet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** * Checks if a list cache value for `key` exists. @@ -100789,13 +102546,13 @@ module.exports = listCacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js"); /** * Sets the list cache `key` to `value`. @@ -100825,15 +102582,15 @@ module.exports = listCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js"), - ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js"); +var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Hash.js"), + ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Map.js"); /** * Removes all key-value entries from the map. @@ -100856,13 +102613,13 @@ module.exports = mapCacheClear; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js ***! \****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Removes `key` and its value from the map. @@ -100884,13 +102641,13 @@ module.exports = mapCacheDelete; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Gets the map value for `key`. @@ -100910,13 +102667,13 @@ module.exports = mapCacheGet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Checks if a map value for `key` exists. @@ -100936,13 +102693,13 @@ module.exports = mapCacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMapData.js"); /** * Sets the map `key` to `value`. @@ -100968,9 +102725,9 @@ module.exports = mapCacheSet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -100996,9 +102753,9 @@ module.exports = mapToArray; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js ***! \*************************************************************************************************************/ /***/ ((module) => { @@ -101026,13 +102783,13 @@ module.exports = matchesStrictComparable; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js"); +var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/memoize.js"); /** Used as the maximum memoize cache size. */ var MAX_MEMOIZE_SIZE = 500; @@ -101062,13 +102819,13 @@ module.exports = memoizeCapped; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js"); +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js"); /* Built-in method references that are verified to be native. */ var nativeCreate = getNative(Object, 'create'); @@ -101078,13 +102835,13 @@ module.exports = nativeCreate; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js"); +var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_overArg.js"); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeKeys = overArg(Object.keys, Object); @@ -101094,14 +102851,14 @@ module.exports = nativeKeys; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js ***! \**********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; @@ -101135,9 +102892,9 @@ module.exports = nodeUtil; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_objectToString.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_objectToString.js ***! \****************************************************************************************************/ /***/ ((module) => { @@ -101167,9 +102924,9 @@ module.exports = objectToString; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_overArg.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_overArg.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -101192,13 +102949,13 @@ module.exports = overArg; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js": /*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js ***! \******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js"); /** Detect free variable `self`. */ var freeSelf = typeof self == 'object' && self && self.Object === Object && self; @@ -101211,9 +102968,9 @@ module.exports = root; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -101240,9 +102997,9 @@ module.exports = setCacheAdd; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -101264,9 +103021,9 @@ module.exports = setCacheHas; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setToArray.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setToArray.js ***! \************************************************************************************************/ /***/ ((module) => { @@ -101292,13 +103049,13 @@ module.exports = setToArray; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackClear.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackClear.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"); +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"); /** * Removes all key-value entries from the stack. @@ -101317,9 +103074,9 @@ module.exports = stackClear; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -101345,9 +103102,9 @@ module.exports = stackDelete; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackGet.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackGet.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -101369,9 +103126,9 @@ module.exports = stackGet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackHas.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackHas.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -101393,15 +103150,15 @@ module.exports = stackHas; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackSet.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackSet.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js"), - MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Map.js"), + MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -101437,9 +103194,9 @@ module.exports = stackSet; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js ***! \***************************************************************************************************/ /***/ ((module) => { @@ -101470,13 +103227,13 @@ module.exports = strictIndexOf; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js"); +var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js"); /** Used to match property names within property paths. */ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; @@ -101507,13 +103264,13 @@ module.exports = stringToPath; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toKey.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toKey.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); +var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isSymbol.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -101538,9 +103295,9 @@ module.exports = toKey; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toSource.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toSource.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -101574,9 +103331,9 @@ module.exports = toSource; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/eq.js": /*!***************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/eq.js ***! \***************************************************************************************/ /***/ ((module) => { @@ -101621,13 +103378,13 @@ module.exports = eq; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/get.js": /*!****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/get.js ***! \****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGet.js"); /** * Gets the value at `path` of `object`. If the resolved value is @@ -101664,14 +103421,14 @@ module.exports = get; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/hasIn.js": /*!******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/hasIn.js ***! \******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js"), - hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js"); +var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hasPath.js"); /** * Checks if `path` is a direct or inherited property of `object`. @@ -101708,9 +103465,9 @@ module.exports = hasIn; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/identity.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/identity.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -101739,14 +103496,14 @@ module.exports = identity; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArguments.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArguments.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -101785,9 +103542,9 @@ module.exports = isArguments; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js ***! \********************************************************************************************/ /***/ ((module) => { @@ -101821,14 +103578,14 @@ module.exports = isArray; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js"); +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isFunction.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isLength.js"); /** * Checks if `value` is array-like. A value is considered array-like if it's @@ -101864,15 +103621,15 @@ module.exports = isArrayLike; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isBuffer.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isBuffer.js ***! \*********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js"), - stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js"); +var root = __webpack_require__(/*! ./_root */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js"), + stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubFalse.js"); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; @@ -101913,14 +103670,14 @@ module.exports = isBuffer; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isFunction.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isFunction.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObject.js"); /** `Object#toString` result references. */ var asyncTag = '[object AsyncFunction]', @@ -101960,9 +103717,9 @@ module.exports = isFunction; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isLength.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isLength.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -102005,9 +103762,9 @@ module.exports = isLength; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObject.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObject.js ***! \*********************************************************************************************/ /***/ ((module) => { @@ -102046,9 +103803,9 @@ module.exports = isObject; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js ***! \*************************************************************************************************/ /***/ ((module) => { @@ -102085,14 +103842,14 @@ module.exports = isObjectLike; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isSymbol.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isSymbol.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var symbolTag = '[object Symbol]'; @@ -102124,15 +103881,15 @@ module.exports = isSymbol; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js": /*!*************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js ***! \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js"), - baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js"), - nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js"); +var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js"); /* Node.js helper references. */ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; @@ -102161,15 +103918,15 @@ module.exports = isTypedArray; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/keys.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/keys.js ***! \*****************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js"), - baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js"); +var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js"), + baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js"); /** * Creates an array of the own enumerable property names of `object`. @@ -102208,13 +103965,13 @@ module.exports = keys; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/memoize.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/memoize.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_MapCache.js"); /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -102291,9 +104048,9 @@ module.exports = memoize; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/noop.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/noop.js ***! \*****************************************************************************************/ /***/ ((module) => { @@ -102318,16 +104075,16 @@ module.exports = noop; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/property.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/property.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js"), - basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); +var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js"), + basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKey.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toKey.js"); /** * Creates a function that returns the value at `path` of a given object. @@ -102360,9 +104117,9 @@ module.exports = property; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubArray.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubArray.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -102393,9 +104150,9 @@ module.exports = stubArray; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubFalse.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubFalse.js ***! \**********************************************************************************************/ /***/ ((module) => { @@ -102421,13 +104178,13 @@ module.exports = stubFalse; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/toString.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/toString.js ***! \*********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js"); +var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseToString.js"); /** * Converts `value` to a string. An empty string is returned for `null` @@ -102459,14 +104216,14 @@ module.exports = toString; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/uniqBy.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/uniqBy.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js"), - baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js"); +var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js"), + baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js"); /** * This method is like `_.uniq` except that it accepts `iteratee` which is @@ -102500,17 +104257,17 @@ module.exports = uniqBy; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/md5/md5.js": /*!*************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/md5/md5.js ***! \*************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { (function(){ - var crypt = __webpack_require__(/*! crypt */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js"), - utf8 = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js").utf8, - isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js"), - bin = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js").bin, + var crypt = __webpack_require__(/*! crypt */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/crypt/crypt.js"), + utf8 = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/charenc/charenc.js").utf8, + isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-buffer/index.js"), + bin = __webpack_require__(/*! charenc */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/charenc/charenc.js").bin, // The core md5 = function (message, options) { @@ -102670,13 +104427,13 @@ module.exports = uniqBy; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js ***! \*******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const _ = __webpack_require__(/*! underscore */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs"); +const _ = __webpack_require__(/*! underscore */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs"); const NO_LMP_DATE_MODIFIER = 4; @@ -102792,25 +104549,25 @@ module.exports = function(settings) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/index.js": /*!*****************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/index.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { -module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js"); +module.exports = exports = __webpack_require__(/*! ./lib */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/index.js"); /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/agenda.js": /*!**********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/agenda.js ***! \**********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), declare = extd.declare, AVLTree = extd.AVLTree, LinkedList = extd.LinkedList, @@ -103002,16 +104759,16 @@ module.exports = declare(EventEmitter, { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js ***! \******************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /*jshint evil:true*/ -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, isString = extd.isString; @@ -103086,18 +104843,18 @@ exports.createDefined = createDefined; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js ***! \*****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /*jshint evil:true*/ -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), - constraintMatcher = __webpack_require__(/*! ../constraintMatcher.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + constraintMatcher = __webpack_require__(/*! ../constraintMatcher.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), indexOf = extd.indexOf, forEach = extd.forEach, removeDuplicates = extd.removeDuplicates, @@ -103105,8 +104862,8 @@ var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/ obj = extd.hash, keys = obj.keys, merge = extd.merge, - rules = __webpack_require__(/*! ../rule */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), - common = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js"), + rules = __webpack_require__(/*! ../rule */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + common = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js"), modifiers = common.modifiers, createDefined = common.createDefined, createFunction = common.createFunction; @@ -103290,7 +105047,7 @@ exports.compile = function (flowObj, options, cb, Container) { return flow; }; -exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js").transpile; +exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js").transpile; @@ -103298,20 +105055,20 @@ exports.transpile = __webpack_require__(/*! ./transpile */ "./node_modules/cht-c /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js ***! \*********************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, indexOf = extd.indexOf, merge = extd.merge, isString = extd.isString, - modifiers = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js").modifiers, - constraintMatcher = __webpack_require__(/*! ../constraintMatcher */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), - parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"); + modifiers = __webpack_require__(/*! ./common */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js").modifiers, + constraintMatcher = __webpack_require__(/*! ../constraintMatcher */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + parser = __webpack_require__(/*! ../parser */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"); function definedToJs(options) { /*jshint evil:true*/ @@ -103489,13 +105246,13 @@ exports.transpile = function (flowObj, options) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/conflict.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/conflict.js ***! \************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { -var map = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js").map; +var map = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js").map; function salience(a, b) { return a.rule.priority - b.rule.priority; @@ -103553,16 +105310,16 @@ exports.strategy = function (strats) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js ***! \**************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), deepEqual = extd.deepEqual, merge = extd.merge, instanceOf = extd.instanceOf, @@ -103578,7 +105335,7 @@ var Constraint = declare({ instance: { constructor: function (constraint) { if (!constraintMatcher) { - constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"); + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"); } this.id = id++; this.constraint = constraint; @@ -103824,23 +105581,23 @@ Constraint.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js ***! \*********************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isArray = extd.isArray, forEach = extd.forEach, some = extd.some, indexOf = extd.indexOf, isNumber = extd.isNumber, removeDups = extd.removeDuplicates, - atoms = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"); + atoms = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"); function getProps(val) { return extd(val).map(function mapper(val) { @@ -104312,16 +106069,16 @@ exports.getIndexableProperties = function (constraint) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js ***! \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isBoolean = extd.isBoolean, declare = extd.declare, indexOf = extd.indexOf, @@ -104462,16 +106219,16 @@ var Context = declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), Promise = extd.Promise, - nextTick = __webpack_require__(/*! ./nextTick */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js"), + nextTick = __webpack_require__(/*! ./nextTick */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js"), isPromiseLike = extd.isPromiseLike; Promise.extend({ @@ -104576,13 +106333,13 @@ Promise.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var arr = __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js"), +var arr = __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js"), unique = arr.unique, indexOf = arr.indexOf, map = arr.map, @@ -104711,14 +106468,14 @@ function union(arr1, arr2) { return unique(arr1.concat(arr2)); } -module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js")() - .register(__webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js")) +module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js")() + .register(__webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/date-extended/index.js")) .register(arr) - .register(__webpack_require__(/*! object-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js")) - .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js")) - .register(__webpack_require__(/*! promise-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js")) - .register(__webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js")) - .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js")) + .register(__webpack_require__(/*! object-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/object-extended/index.js")) + .register(__webpack_require__(/*! string-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/string-extended/index.js")) + .register(__webpack_require__(/*! promise-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/promise-extended/index.js")) + .register(__webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/function-extended/index.js")) + .register(__webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js")) .register("intersection", intersection) .register("inPlaceIntersection", inPlaceIntersection) .register("inPlaceDifference", inPlaceDifference) @@ -104726,32 +106483,32 @@ module.exports = __webpack_require__(/*! extended */ "./node_modules/cht-core-3- .register("diffHash", diffHash) .register("unionArr", union) .register("plucker", plucker) - .register("HashTable", __webpack_require__(/*! ht */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js")) - .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js")) - .register(__webpack_require__(/*! leafy */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js")) - .register("LinkedList", __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js")); + .register("HashTable", __webpack_require__(/*! ht */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/ht/index.js")) + .register("declare", __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js")) + .register(__webpack_require__(/*! leafy */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/leafy/index.js")) + .register("LinkedList", __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js")); /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flow.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flow.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), bind = extd.bind, declare = extd.declare, - nodes = __webpack_require__(/*! ./nodes */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js"), + nodes = __webpack_require__(/*! ./nodes */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js"), EventEmitter = __webpack_require__(/*! events */ "events").EventEmitter, - wm = __webpack_require__(/*! ./workingMemory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js"), + wm = __webpack_require__(/*! ./workingMemory */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js"), WorkingMemory = wm.WorkingMemory, - ExecutionStragegy = __webpack_require__(/*! ./executionStrategy */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js"), - AgendaTree = __webpack_require__(/*! ./agenda */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js"); + ExecutionStragegy = __webpack_require__(/*! ./executionStrategy */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js"), + AgendaTree = __webpack_require__(/*! ./agenda */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/agenda.js"); module.exports = declare(EventEmitter, { @@ -104862,24 +106619,24 @@ module.exports = declare(EventEmitter, { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), instanceOf = extd.instanceOf, forEach = extd.forEach, declare = extd.declare, - InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, - conflictStrategies = __webpack_require__(/*! ./conflict */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js"), + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, + conflictStrategies = __webpack_require__(/*! ./conflict */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/conflict.js"), conflictResolution = conflictStrategies.strategy(["salience", "activationRecency"]), - rule = __webpack_require__(/*! ./rule */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), - Flow = __webpack_require__(/*! ./flow */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js"); + rule = __webpack_require__(/*! ./rule */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/rule.js"), + Flow = __webpack_require__(/*! ./flow */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flow.js"); var flows = {}; var FlowContainer = declare({ @@ -104981,9 +106738,9 @@ var FlowContainer = declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/index.js": /*!*********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/index.js ***! \*********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -104998,11 +106755,11 @@ var FlowContainer = declare({ */ -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), fs = __webpack_require__(/*! fs */ "fs"), path = __webpack_require__(/*! path */ "path"), - compile = __webpack_require__(/*! ./compile */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js"), - FlowContainer = __webpack_require__(/*! ./flowContainer */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js"); + compile = __webpack_require__(/*! ./compile */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js"), + FlowContainer = __webpack_require__(/*! ./flowContainer */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js"); function isNoolsFile(file) { return (/\.nools$/).test(file); @@ -105065,14 +106822,14 @@ exports.parse = parse; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js"); +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js"); declare({ instance: { @@ -105156,14 +106913,14 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js": /*!************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /*global setImmediate, window, MessageChannel*/ -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); var nextTick; if (typeof setImmediate === "function") { // In IE10, or use https://github.com/NobleJS/setImmediate @@ -105202,15 +106959,15 @@ module.exports = nextTick; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - intersection = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js").intersection; +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + intersection = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js").intersection; Node.extend({ instance: { @@ -105246,14 +107003,14 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js ***! \*******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); AlphaNode.extend({ instance: { @@ -105287,16 +107044,16 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js": /*!*******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js ***! \*******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"); +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"); Node.extend({ instance: { @@ -105318,17 +107075,17 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), keys = extd.hash.keys, - Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - LeftMemory = __webpack_require__(/*! ./misc/leftMemory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js"), RightMemory = __webpack_require__(/*! ./misc/rightMemory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js"); + Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + LeftMemory = __webpack_require__(/*! ./misc/leftMemory */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js"), RightMemory = __webpack_require__(/*! ./misc/rightMemory */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js"); Node.extend({ @@ -105583,14 +107340,14 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js ***! \**********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"); AlphaNode.extend({ instance: { @@ -105635,16 +107392,16 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js": /*!************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js ***! \************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), +var FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js"), isDefined = extd.isDefined, isArray = extd.isArray; @@ -105744,15 +107501,15 @@ FromNotNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js": /*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), - LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"); +var NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"); NotNode.extend({ @@ -105927,20 +107684,20 @@ NotNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), EqualityConstraint = constraint.EqualityConstraint, HashConstraint = constraint.HashConstraint, ReferenceConstraint = constraint.ReferenceConstraint, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js"), isDefined = extd.isDefined, isEmpty = extd.isEmpty, forEach = extd.forEach, @@ -106151,20 +107908,20 @@ JoinNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), - constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + constraint = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), EqualityConstraint = constraint.EqualityConstraint, HashConstraint = constraint.HashConstraint, ReferenceConstraint = constraint.ReferenceConstraint, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js"), isDefined = extd.isDefined, forEach = extd.forEach, isArray = extd.isArray; @@ -106320,19 +108077,19 @@ JoinNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js ***! \***************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, some = extd.some, declare = extd.declare, - pattern = __webpack_require__(/*! ../pattern.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + pattern = __webpack_require__(/*! ../pattern.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), ObjectPattern = pattern.ObjectPattern, FromPattern = pattern.FromPattern, FromNotPattern = pattern.FromNotPattern, @@ -106341,23 +108098,23 @@ var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/ NotPattern = pattern.NotPattern, CompositePattern = pattern.CompositePattern, InitialFactPattern = pattern.InitialFactPattern, - constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), HashConstraint = constraints.HashConstraint, ReferenceConstraint = constraints.ReferenceConstraint, - AliasNode = __webpack_require__(/*! ./aliasNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js"), - EqualityNode = __webpack_require__(/*! ./equalityNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js"), - JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), - NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), - FromNode = __webpack_require__(/*! ./fromNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js"), - FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), - ExistsNode = __webpack_require__(/*! ./existsNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js"), - ExistsFromNode = __webpack_require__(/*! ./existsFromNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js"), - LeftAdapterNode = __webpack_require__(/*! ./leftAdapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js"), - RightAdapterNode = __webpack_require__(/*! ./rightAdapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js"), - TypeNode = __webpack_require__(/*! ./typeNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js"), - TerminalNode = __webpack_require__(/*! ./terminalNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js"), - PropertyNode = __webpack_require__(/*! ./propertyNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js"); + AliasNode = __webpack_require__(/*! ./aliasNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js"), + EqualityNode = __webpack_require__(/*! ./equalityNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js"), + JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + NotNode = __webpack_require__(/*! ./notNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js"), + FromNode = __webpack_require__(/*! ./fromNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js"), + FromNotNode = __webpack_require__(/*! ./fromNotNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js"), + ExistsNode = __webpack_require__(/*! ./existsNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js"), + ExistsFromNode = __webpack_require__(/*! ./existsFromNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js"), + LeftAdapterNode = __webpack_require__(/*! ./leftAdapterNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js"), + RightAdapterNode = __webpack_require__(/*! ./rightAdapterNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js"), + TypeNode = __webpack_require__(/*! ./typeNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js"), + TerminalNode = __webpack_require__(/*! ./terminalNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js"), + PropertyNode = __webpack_require__(/*! ./propertyNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js"); function hasRefernceConstraints(pattern) { return some(pattern.constraints || [], function (c) { @@ -106589,15 +108346,15 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), - JoinReferenceNode = __webpack_require__(/*! ./joinReferenceNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js"); +var BetaNode = __webpack_require__(/*! ./betaNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js"), + JoinReferenceNode = __webpack_require__(/*! ./joinReferenceNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js"); BetaNode.extend({ @@ -106660,15 +108417,15 @@ BetaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js": /*!***************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js ***! \***************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + constraints = __webpack_require__(/*! ../constraint */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint; var DEFUALT_CONSTRAINT = { @@ -106778,14 +108535,14 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js ***! \*************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); Node.extend({ instance: { @@ -106822,9 +108579,9 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js ***! \**********************************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { @@ -106982,14 +108739,14 @@ exports.getMemory = (function () { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js ***! \*************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); Memory.extend({ @@ -107004,19 +108761,19 @@ Memory.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), plucker = extd.plucker, declare = extd.declare, - getMemory = __webpack_require__(/*! ./helpers */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js").getMemory, - Table = __webpack_require__(/*! ./table */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js"), - TupleEntry = __webpack_require__(/*! ./tupleEntry */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js"); + getMemory = __webpack_require__(/*! ./helpers */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js").getMemory, + Table = __webpack_require__(/*! ./table */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js"), + TupleEntry = __webpack_require__(/*! ./tupleEntry */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js"); var id = 0; @@ -107152,14 +108909,14 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js": /*!**************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js ***! \**************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); +var Memory = __webpack_require__(/*! ./memory */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js"); Memory.extend({ @@ -107174,14 +108931,14 @@ Memory.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js": /*!********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), pPush = Array.prototype.push, HashTable = extd.HashTable, AVLTree = extd.AVLTree; @@ -107359,14 +109116,14 @@ AVLTree.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js": /*!*************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js ***! \*************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), indexOf = extd.indexOf; // HashSet = require("./hashSet"); @@ -107415,20 +109172,20 @@ extd.declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js": /*!**************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js ***! \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), forEach = extd.forEach, indexOf = extd.indexOf, intersection = extd.intersection, declare = extd.declare, HashTable = extd.HashTable, - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"); + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js"); var count = 0; declare({ @@ -107551,17 +109308,17 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js ***! \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), - LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - InitialFact = __webpack_require__(/*! ../pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact; +var JoinNode = __webpack_require__(/*! ./joinNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js"), + LinkedList = __webpack_require__(/*! ../linkedList */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + InitialFact = __webpack_require__(/*! ../pattern */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact; JoinNode.extend({ @@ -107832,16 +109589,16 @@ JoinNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js ***! \**********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"); AlphaNode.extend({ instance: { @@ -107892,14 +109649,14 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js": /*!**************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js ***! \**************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); +var Node = __webpack_require__(/*! ./adapterNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js"); Node.extend({ instance: { @@ -107936,15 +109693,15 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js": /*!**********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js ***! \**********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), - extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var Node = __webpack_require__(/*! ./node */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js"), + extd = __webpack_require__(/*! ../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), bind = extd.bind; Node.extend({ @@ -108013,15 +109770,15 @@ Node.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js": /*!******************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js ***! \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); -var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), - Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js"); +var AlphaNode = __webpack_require__(/*! ./alphaNode */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js"), + Context = __webpack_require__(/*! ../context */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js"); AlphaNode.extend({ instance: { @@ -108070,9 +109827,9 @@ AlphaNode.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js": /*!****************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js ***! \****************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { @@ -108888,16 +110645,16 @@ if ( true && __webpack_require__.c[__webpack_require__.s] === module) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js ***! \****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { (function () { "use strict"; - var constraintParser = __webpack_require__(/*! ./constraint/parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js"), - noolParser = __webpack_require__(/*! ./nools/nool.parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js"); + var constraintParser = __webpack_require__(/*! ./constraint/parser */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js"), + noolParser = __webpack_require__(/*! ./nools/nool.parser */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js"); exports.parseConstraint = function (expression) { try { @@ -108914,19 +110671,19 @@ if ( true && __webpack_require__.c[__webpack_require__.s] === module) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js": /*!****************************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js ***! \****************************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var tokens = __webpack_require__(/*! ./tokens.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js"), - extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var tokens = __webpack_require__(/*! ./tokens.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), keys = extd.hash.keys, - utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"); + utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"); var parse = function (src, keywords, context) { var orig = src; @@ -108963,18 +110720,18 @@ exports.parse = function (src, file) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js": /*!***********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js ***! \***********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -var utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"), +var utils = __webpack_require__(/*! ./util.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js"), fs = __webpack_require__(/*! fs */ "fs"), - extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), + extd = __webpack_require__(/*! ../../extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), filter = extd.filter, indexOf = extd.indexOf, predicates = ["not", "or", "exists"], @@ -109324,9 +111081,9 @@ module.exports = topLevelTokens; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js ***! \*********************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -109428,21 +111185,21 @@ exports.findNextToken = function (str, startIndex, endIndex) { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js": /*!***********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js ***! \***********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isEmpty = extd.isEmpty, merge = extd.merge, forEach = extd.forEach, declare = extd.declare, - constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), - constraint = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), + constraintMatcher = __webpack_require__(/*! ./constraintMatcher */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js"), + constraint = __webpack_require__(/*! ./constraint */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js"), EqualityConstraint = constraint.EqualityConstraint, FromConstraint = constraint.FromConstraint; @@ -109590,23 +111347,23 @@ ObjectPattern.extend({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/rule.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/rule.js ***! \********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), +var extd = __webpack_require__(/*! ./extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js"), isArray = extd.isArray, Promise = extd.Promise, declare = extd.declare, isHash = extd.isHash, isString = extd.isString, format = extd.format, - parser = __webpack_require__(/*! ./parser */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), - pattern = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), + parser = __webpack_require__(/*! ./parser */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js"), + pattern = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js"), ObjectPattern = pattern.ObjectPattern, FromPattern = pattern.FromPattern, NotPattern = pattern.NotPattern, @@ -109916,17 +111673,17 @@ exports.createRule = createRule; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js": /*!*****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js ***! \*****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js"), - LinkedList = __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), - InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, +var declare = __webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js"), + LinkedList = __webpack_require__(/*! ./linkedList */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js"), + InitialFact = __webpack_require__(/*! ./pattern */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js").InitialFact, id = 0; var Fact = declare({ @@ -110041,9 +111798,9 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/object-extended/index.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/object-extended/index.js ***! \***************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -110245,7 +112002,7 @@ declare({ if (true) { if ( true && module.exports) { - module.exports = defineObject(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")); + module.exports = defineObject(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js")); } } else {} @@ -110261,9 +112018,9 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/promise-extended/index.js": /*!****************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/promise-extended/index.js ***! \****************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -110753,7 +112510,7 @@ declare({ if (true) { if ( true && module.exports) { - module.exports = definePromise(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js"), __webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); + module.exports = definePromise(__webpack_require__(/*! declare.js */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js"), __webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! function-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/function-extended/index.js"), __webpack_require__(/*! arguments-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/arguments-extended/index.js")); } } else {} @@ -110768,9 +112525,9 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/string-extended/index.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/string-extended/index.js ***! \***************************************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { @@ -111401,7 +113158,7 @@ declare({ if (true) { if ( true && module.exports) { - module.exports = defineString(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js")); + module.exports = defineString(__webpack_require__(/*! extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js"), __webpack_require__(/*! is-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js"), __webpack_require__(/*! date-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/date-extended/index.js"), __webpack_require__(/*! array-extended */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js")); } } else {} @@ -111417,9 +113174,9 @@ declare({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs": /*!***********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs ***! \***********************************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { @@ -113585,9 +115342,9 @@ exports.zip = zip; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs": /*!*********************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs ***! \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -113596,7 +115353,7 @@ exports.zip = zip; // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. -var underscoreNodeF = __webpack_require__(/*! ./underscore-node-f.cjs */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs"); +var underscoreNodeF = __webpack_require__(/*! ./underscore-node-f.cjs */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs"); @@ -113606,9 +115363,9 @@ module.exports = underscoreNodeF._; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/index.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/index.js": /*!**************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/index.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/index.js ***! \**************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -113618,10 +115375,10 @@ module.exports = underscoreNodeF._; * Business logic for interacting with rules documents */ -const pouchdbProvider = __webpack_require__(/*! ./pouchdb-provider */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js"); -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js"); -const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js"); -const wireupToProvider = __webpack_require__(/*! ./provider-wireup */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js"); +const pouchdbProvider = __webpack_require__(/*! ./pouchdb-provider */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/pouchdb-provider.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-state-store.js"); +const wireupToProvider = __webpack_require__(/*! ./provider-wireup */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/provider-wireup.js"); /** * @param {Object} db Medic pouchdb database @@ -113649,11 +115406,19 @@ module.exports = db => { /** * Refreshes all rules documents for a set of contacts and returns their task documents * - * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are + * @param {string[]} contactIds An array of contact ids. If undefined, returns tasks for all contacts * @returns {Promise} All the fresh task docs owned by contactIds */ fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds), + /** + * Returns a breakdown of tasks by state and title for the provided list of contacts + * + * @param {string[]} contactIds An array of contact ids. If undefined, returns breakdown for all contacts + * @returns {Promise} The breakdown of tasks counts by state and title + */ + fetchTasksBreakdown: contactIds => wireupToProvider.fetchTasksBreakdown(provider, contactIds), + /** * Refreshes all rules documents and returns the latest target document * @@ -113707,9 +115472,9 @@ module.exports = db => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/pouchdb-provider.js": /*!*************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/pouchdb-provider.js ***! \*************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -113722,8 +115487,8 @@ module.exports = db => { // TODO work out how to pass in the logger from node/browser /* eslint-disable no-console */ const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); -const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); +const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); const RULES_STATE_DOCID = '_local/rulesStateStore'; const docsOf = (query) => { @@ -113733,6 +115498,7 @@ const docsOf = (query) => { }); }; +const rowsOf = (query) => query.then(result => uniqBy(result.rows, 'id')); const medicPouchProvider = db => { const self = { @@ -113809,6 +115575,20 @@ const medicPouchProvider = db => { return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true })); }, + allTaskRowsByOwner: (contactIds) => { + const keys = contactIds.map(contactId => (['owner', 'all', contactId])); + return rowsOf(db.query('medic-client/tasks_by_contact', { keys })); + }, + + allTaskRows: () => { + const options = { + startkey: ['owner', 'all'], + endkey: ['owner', 'all', '\ufff0'], + }; + + return rowsOf(db.query('medic-client/tasks_by_contact', options)); + }, + taskDataFor: (contactIds, userSettingsDoc) => { if (!contactIds || contactIds.length === 0) { return Promise.resolve({}); @@ -113874,9 +115654,9 @@ module.exports = medicPouchProvider; /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/provider-wireup.js": /*!************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/provider-wireup.js ***! \************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -113887,14 +115667,14 @@ module.exports = medicPouchProvider; */ const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); -const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js"); -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js"); -const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js"); -const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/task-states.js"); +const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/refresh-rules-emissions.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-emitter.js"); +const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-state-store.js"); +const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/update-temporal-states.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); let wireupOptions; @@ -113948,7 +115728,7 @@ module.exports = { * Commits those changes (async) * * @param {Object} provider A data provider - * @param {string[]} contactIds An array of contact ids. If undefined, all task documents + * @param {string[]} contactIds An array of contact ids. If undefined, returns tasks for all contacts * @returns {Promise} All the fresh task docs owned by contacts */ fetchTasksFor: (provider, contactIds) => { @@ -113968,6 +115748,42 @@ module.exports = { }); }, + /** + * Returns a breakdown of task counts by state and title for the provided contacts, or all contacts + * Does NOT refresh rules emissions + * @param {Object} provider A data provider + * @param {string[]} contactIds An array of contact ids. If undefined, returns breakdown for all contacts + * @return {Promise<{ + * Ready: number, + * Draft: number, + * Failed: number, + * Completed: number, + * Cancelled: number, + *}>} + */ + fetchTasksBreakdown: (provider, contactIds) => { + const tasksByState = Object.assign({}, TaskStates.states); + Object + .keys(tasksByState) + .forEach(state => tasksByState[state] = 0); + + if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) { + return Promise.resolve(tasksByState); + } + + const getTasks = contactIds ? provider.allTaskRowsByOwner(contactIds) : provider.allTaskRows(); + + return getTasks.then(taskRows => { + taskRows.forEach(({ value: { state } }) => { + if (Object.hasOwnProperty.call(tasksByState, state)) { + tasksByState[state]++; + } + }); + + return tasksByState; + }); + }, + /** * Refreshes the rules emissions for all contacts * @@ -114161,9 +115977,9 @@ const handleIntervalTurnover = (provider, { monthStartDate }) => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/refresh-rules-emissions.js": /*!********************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/refresh-rules-emissions.js ***! \********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -114176,9 +115992,9 @@ const handleIntervalTurnover = (provider, { monthStartDate }) => { * @requires rules-emitter to be initialized */ -const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js"); -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); -const transformTaskEmissionToDoc = __webpack_require__(/*! ./transform-task-emission-to-doc */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js"); +const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-emitter.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/task-states.js"); +const transformTaskEmissionToDoc = __webpack_require__(/*! ./transform-task-emission-to-doc */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/transform-task-emission-to-doc.js"); /** * @param {Object[]} freshData.contactDocs A set of contact documents @@ -114332,9 +116148,9 @@ const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-emitter.js": /*!**********************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-emitter.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -114345,9 +116161,9 @@ const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { * Promisifies the execution of partner "rules" code * Ensures memory allocated by nools is freed after each run */ -const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js"); -const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/index.js"); +const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); let flow; @@ -114544,9 +116360,9 @@ const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-state-store.js": /*!**************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-state-store.js ***! \**************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -114556,9 +116372,9 @@ const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { * 1. Details on the state of each contact's rules calculations * 2. Target emissions @see target-state */ -const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); -const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js"); +const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/md5/md5.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); +const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/target-state.js"); const EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000; let state; @@ -114854,9 +116670,9 @@ module.exports = Object.keys(self).reduce((agg, key) => { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/target-state.js": /*!*********************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/target-state.js ***! \*********************************************************************************/ /***/ ((module) => { @@ -115045,9 +116861,9 @@ module.exports = { /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/task-states.js": /*!********************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/task-states.js ***! \********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -115175,6 +116991,8 @@ module.exports = { getDisplayWindow, + states: States, + isTimely: (taskEmission, timestamp) => { const { endDate } = getDisplayWindow(taskEmission); return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString); @@ -115211,9 +117029,9 @@ Object.assign(module.exports, States); /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/transform-task-emission-to-doc.js": /*!***************************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/transform-task-emission-to-doc.js ***! \***************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -115224,7 +117042,7 @@ Object.assign(module.exports, States); * Merges emission data into an existing document, or creates a new task document (as appropriate) */ -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/task-states.js"); /** * @param {Object} taskEmission A task emission from the rules engine @@ -115310,9 +117128,9 @@ const newTaskDoc = (emission, userSettingsId, calculatedAt) => ({ /***/ }), -/***/ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js": +/***/ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/update-temporal-states.js": /*!*******************************************************************************************!*\ - !*** ./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js ***! + !*** ./node_modules/cht-core-3-13/shared-libs/rules-engine/src/update-temporal-states.js ***! \*******************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { @@ -115321,7 +117139,7 @@ const newTaskDoc = (emission, userSettingsId, calculatedAt) => ({ * As time elapses, documents change state because the timing window has been reached. * Eg. Documents with state Draft move to state Ready just because it is now after midnight */ -const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js"); +const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-13/shared-libs/rules-engine/src/task-states.js"); /** * @param {Object[]} taskDocs A list of task documents to evaluate @@ -159113,7 +160931,7 @@ module.exports = db => { // TODO work out how to pass in the logger from node/browser /* eslint-disable no-console */ const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); const uniqBy = __webpack_require__(/*! lodash/uniqBy */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/uniqBy.js"); const RULES_STATE_DOCID = '_local/rulesStateStore'; @@ -159278,14 +161096,14 @@ module.exports = medicPouchProvider; */ const moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); const TaskStates = __webpack_require__(/*! ./task-states */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/src/task-states.js"); const refreshRulesEmissions = __webpack_require__(/*! ./refresh-rules-emissions */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/src/refresh-rules-emissions.js"); const rulesEmitter = __webpack_require__(/*! ./rules-emitter */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/src/rules-emitter.js"); const rulesStateStore = __webpack_require__(/*! ./rules-state-store */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/src/rules-state-store.js"); const updateTemporalStates = __webpack_require__(/*! ./update-temporal-states */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/src/update-temporal-states.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); let wireupOptions; @@ -159738,7 +161556,7 @@ const mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => { */ const nools = __webpack_require__(/*! nools */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/index.js"); const nootils = __webpack_require__(/*! medic-nootils */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js"); -const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js"); +const registrationUtils = __webpack_require__(/*! @medic/registration-utils */ "./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js"); let flow; @@ -159947,7 +161765,7 @@ const marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => { * 2. Target emissions @see target-state */ const md5 = __webpack_require__(/*! md5 */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/md5/md5.js"); -const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js"); +const calendarInterval = __webpack_require__(/*! @medic/calendar-interval */ "./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js"); const targetState = __webpack_require__(/*! ./target-state */ "./node_modules/cht-core-3-9/shared-libs/rules-engine/src/target-state.js"); const EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000; diff --git a/dist/all-chts-bundle.dev.js.map b/dist/all-chts-bundle.dev.js.map index b7f1ef8c..67537a36 100644 --- a/dist/all-chts-bundle.dev.js.map +++ b/dist/all-chts-bundle.dev.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://cht-conf-test-harness/./all-chts-bundle.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/af.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/az.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/da.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/dv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/el.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/et.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ga.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/he.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/id.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/is.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ja.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/jv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ka.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/km.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ko.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ku.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ky.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/me.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ml.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ne.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ro.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ru.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/se.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/si.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ss.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ta.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/te.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/th.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ur.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/vi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/yo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js","webpack://cht-conf-test-harness//home/kenn/harness/node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/moment.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/node_modules/lodash/uniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js","webpack://cht-conf-test-harness//home/kenn/harness/node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/contact-types-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/af.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/az.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/da.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/dv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/el.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/et.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ga.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/he.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/id.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/is.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ja.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/jv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ka.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/km.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ko.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ku.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ky.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/me.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ml.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ne.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ro.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ru.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/se.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/si.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ss.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ta.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/te.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/th.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ur.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/vi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/yo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js","webpack://cht-conf-test-harness//home/kenn/harness/node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/moment.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/uniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/underscore/underscore.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/lodash/core.js","webpack://cht-conf-test-harness/./node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/lodash/uniq.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/af.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-dz.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-kw.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-ly.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-ma.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-sa.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-tn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/az.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/be.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bg.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bm.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bn-bd.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/br.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bs.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ca.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/cs.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/cv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/cy.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/da.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/de-at.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/de-ch.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/de.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/dv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/el.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-au.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-ca.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-gb.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-ie.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-il.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-in.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-nz.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-sg.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/eo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es-do.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es-mx.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es-us.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/et.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/eu.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fa.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fil.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fr-ca.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fr-ch.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fy.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ga.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gd.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gom-deva.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gom-latn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gu.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/he.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hu.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hy-am.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/id.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/is.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/it-ch.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/it.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ja.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/jv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ka.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/kk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/km.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/kn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ko.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ku.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ky.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lb.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lt.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/me.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ml.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ms-my.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ms.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mt.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/my.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nb.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ne.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nl-be.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/oc-lnc.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pa-in.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pt-br.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pt.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ro.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ru.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sd.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/se.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/si.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sq.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sr-cyrl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ss.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sw.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ta.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/te.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tet.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tg.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/th.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tl-ph.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tlh.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tzl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tzm-latn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tzm.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ug-cn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/uk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ur.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/uz-latn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/uz.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/vi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/x-pseudo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/yo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-cn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-hk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-mo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-tw.js","webpack://cht-conf-test-harness//home/kenn/harness/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://cht-conf-test-harness/./node_modules/moment/moment.js","webpack://cht-conf-test-harness/external \"events\"","webpack://cht-conf-test-harness/external \"fs\"","webpack://cht-conf-test-harness/external \"path\"","webpack://cht-conf-test-harness/webpack/bootstrap","webpack://cht-conf-test-harness/webpack/runtime/hasOwnProperty shorthand","webpack://cht-conf-test-harness/webpack/runtime/node module decorator","webpack://cht-conf-test-harness/webpack/startup"],"names":[],"mappings":";;;;;;;;;;AACA;AACA;AACA,WAAW,mBAAO,CAAC,wEAAiC;AACpD,uBAAuB,mBAAO,CAAC,4HAA6C;AAC5E,sBAAsB,mBAAO,CAAC,0HAA4C;AAC1E,qBAAqB,mBAAO,CAAC,gHAAuC;AACpE,kBAAkB,mBAAO,CAAC,0IAAyD;AACnF,aAAa,mBAAO,CAAC,wKAAkE;AACvF,aAAa,mBAAO,CAAC,sGAAkC;AACvD,GAAG;AACH;AACA,WAAW,mBAAO,CAAC,0EAAkC;AACrD,uBAAuB,mBAAO,CAAC,8HAA8C;AAC7E,sBAAsB,mBAAO,CAAC,4HAA6C;AAC3E,qBAAqB,mBAAO,CAAC,kHAAwC;AACrE,kBAAkB,mBAAO,CAAC,4IAA0D;AACpF,aAAa,mBAAO,CAAC,0KAAmE;AACxF,aAAa,mBAAO,CAAC,wGAAmC;AACxD,GAAG;AACH;AACA,WAAW,mBAAO,CAAC,0EAAkC;AACrD,uBAAuB,mBAAO,CAAC,8HAA8C;AAC7E,sBAAsB,mBAAO,CAAC,4HAA6C;AAC3E,qBAAqB,mBAAO,CAAC,kHAAwC;AACrE,kBAAkB,mBAAO,CAAC,4IAA0D;AACpF,aAAa,mBAAO,CAAC,0KAAmE;AACxF,aAAa,mBAAO,CAAC,wGAAmC;AACxD,GAAG;AACH;AACA,WAAW,mBAAO,CAAC,0EAAkC;AACrD,uBAAuB,mBAAO,CAAC,8HAA8C;AAC7E,sBAAsB,mBAAO,CAAC,4HAA6C;AAC3E,qBAAqB,mBAAO,CAAC,kHAAwC;AACrE,kBAAkB,mBAAO,CAAC,4IAA0D;AACpF,aAAa,mBAAO,CAAC,0KAAmE;AACxF,aAAa,mBAAO,CAAC,wGAAmC;AACxD,kBAAkB,mBAAO,CAAC,sHAA0C;AACpE,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sI;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,uIAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACniLD,eAAe,mBAAO,CAAC,wGAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;AAC9B,cAAc,mBAAO,CAAC,8EAAS;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AChcA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,sFAAa;AACvB,EAAE,mBAAO,CAAC,gFAAU;AACpB;;;;;;;;;;;ACPA,cAAc,mBAAO,CAAC,8EAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC7DA,yBAAyB,mBAAO,CAAC,6GAA4B;AAC7D,UAAU,mBAAO,CAAC,kDAAa;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACtBA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,iBAAiB,mBAAO,CAAC,qHAAe;AACxC,cAAc,mBAAO,CAAC,+GAAY;AAClC,cAAc,mBAAO,CAAC,+GAAY;AAClC,cAAc,mBAAO,CAAC,+GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,6HAAmB;AAChD,sBAAsB,mBAAO,CAAC,+HAAoB;AAClD,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,qBAAqB,mBAAO,CAAC,6HAAmB;AAChD,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,iHAAa;AACpC,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,SAAS,mBAAO,CAAC,mGAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,aAAa,mBAAO,CAAC,6GAAW;AAChC,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,qBAAqB,mBAAO,CAAC,6HAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,oBAAoB,mBAAO,CAAC,2HAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,mHAAc;AACvC,eAAe,mBAAO,CAAC,iHAAa;AACpC,eAAe,mBAAO,CAAC,+GAAY;AACnC,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,iHAAa;AACpC,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,wBAAwB,mBAAO,CAAC,mIAAsB;AACtD,eAAe,mBAAO,CAAC,iHAAa;AACpC,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,uGAAQ;AAC1B,WAAW,mBAAO,CAAC,uGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,mHAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,6GAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,yGAAS;AAC5B,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,UAAU,mBAAO,CAAC,uGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,mHAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,qHAAe;AACxC,eAAe,mBAAO,CAAC,+GAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,aAAa,mBAAO,CAAC,4GAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,oJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,0GAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,oJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,sGAAU,wBAAwB,mBAAO,CAAC,0GAAY,YAAY,mBAAO,CAAC,4GAAa,YAAY,mBAAO,CAAC,kHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,sGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU;AAC3D,qCAAqC,mBAAO,CAAC,0GAAY;AACzD,0BAA0B,mBAAO,CAAC,4GAAa;AAC/C,0BAA0B,mBAAO,CAAC,kHAAgB;AAClD,0BAA0B,mBAAO,CAAC,oHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,yGAAY;AAClC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,6FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,qBAAqB,mBAAO,CAAC,uHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,aAAa,mBAAO,CAAC,uGAAW;AAChC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,yGAAY;AACnC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,iIAAwB;AAC1D,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,yIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,UAAU,mBAAO,CAAC,+FAAO;AACzB,YAAY,mBAAO,CAAC,mGAAS;AAC7B,YAAY,mBAAO,CAAC,qGAAU;AAC9B,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,8BAA8B,mBAAO,CAAC,yIAA4B;AAClE,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,eAAe,mBAAO,CAAC,2GAAa;AACpC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,2GAAa;AACpC,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,6HAAsB;AACtD,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,uGAAW;AACjC,YAAY,mBAAO,CAAC,qGAAU;AAC9B,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,WAAW,mBAAO,CAAC,iGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,uGAAW;AAChC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,SAAS,mBAAO,CAAC,6FAAM;AACvB,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,uGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,2GAAa;AACpC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,cAAc,mBAAO,CAAC,yGAAY;AAClC,eAAe,mBAAO,CAAC,yGAAY;AACnC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,YAAY,mBAAO,CAAC,qGAAU;AAC9B,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,aAAa,gIAAuB;AACpC,iBAAiB,mBAAO,CAAC,wGAAW;AACpC,YAAY,+HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,+GAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,oGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC,aAAa,mBAAO,CAAC,+GAAW;AAChC,wBAAwB,mBAAO,CAAC,kIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,qGAAS;AAC7B,aAAa,mBAAO,CAAC,gHAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,yKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,+IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,+HAAsB;AACtD,aAAa,mBAAO,CAAC,+GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,qIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,8HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,gHAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,4GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,kHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sGAAU;AACnC,cAAc,mBAAO,CAAC,gHAAe;AACrC;AACA,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,sHAAkB;AACxC,cAAc,mBAAO,CAAC,wHAAmB;AACzC,cAAc,mBAAO,CAAC,4GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,0FAAI;AACvC,yBAAyB,mBAAO,CAAC,0GAAY;AAC7C,cAAc,mBAAO,CAAC,gGAAO;AAC7B,4BAA4B,mBAAO,CAAC,gHAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,4GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,sHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,wGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,2IAAgC;AAClD,yBAAyB,mBAAO,CAAC,4GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,oGAAQ;AAC3B,WAAW,mBAAO,CAAC,oGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,gHAAW;AACjC,oBAAoB,mBAAO,CAAC,sHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,0GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,mBAAmB,+IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,0GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,iBAAiB,mBAAO,CAAC,gIAAmB,iBAAiB,mBAAO,CAAC,kIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,WAAW,mBAAO,CAAC,6GAAa;AAChC,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,gHAAW;AACjC,iBAAiB,mBAAO,CAAC,iHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,8GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,eAAe,mBAAO,CAAC,kHAAY;AACnC,eAAe,mBAAO,CAAC,kHAAY;AACnC,cAAc,mBAAO,CAAC,gHAAW;AACjC,eAAe,mBAAO,CAAC,kHAAY;AACnC,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,iBAAiB,mBAAO,CAAC,sHAAc;AACvC,qBAAqB,mBAAO,CAAC,8HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,gIAAmB;AACjD,uBAAuB,mBAAO,CAAC,kIAAoB;AACnD,eAAe,mBAAO,CAAC,kHAAY;AACnC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,mBAAmB,mBAAO,CAAC,0HAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,kHAAY;AACnC,wBAAwB,mBAAO,CAAC,oIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA,gBAAgB,oJAA8B;AAC9C,YAAY,mBAAO,CAAC,iHAAS;AAC7B,iBAAiB,mBAAO,CAAC,2HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,kHAAY;AACnC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC,cAAc,mBAAO,CAAC,2GAAY;AAClC,kBAAkB,4IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;AAClC,WAAW,mBAAO,CAAC,6GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,WAAW,mBAAO,CAAC,6GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,qIAAqB;AACxD,qBAAqB,mBAAO,CAAC,qIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,wHAAa;AAClC,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,oHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,oHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,gHAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8GAAU;AAC/B,cAAc,mBAAO,CAAC,0GAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,0GAAY;AAClC,iBAAiB,mBAAO,CAAC,gHAAc;AACvC,kBAAkB,2IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,0GAAY,GAAG,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,kHAAgB,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,wHAAmB,GAAG,mBAAO,CAAC,0HAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,gHAAe,GAAG,mBAAO,CAAC,kHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,KAA6B;AACnC,QAAQ,KAA4B;AACpC;AACA;AACA,IAAI,SAAS;AACb,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA,KAAK;AACL;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,wCAAwC;AACxC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB,eAAe;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAwB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,qBAAqB;AACrB;;AAEA;AACA;AACA,KAAK;AACL,iBAAiB;;AAEjB;AACA,kDAAkD,EAAE,iBAAiB;;AAErE;AACA,wBAAwB,8BAA8B;AACtD,2BAA2B;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,iBAAiB;;AAEnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAyC;AAC/C,IAAI,iCAAqB,EAAE,mCAAE;AAC7B;AACA,KAAK;AAAA,kGAAC;AACN;AACA,CAAC;;;;;;;;;;;AC3pDD;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,yGAAoB;AACpD,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,yBAAyB,mBAAO,CAAC,uGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,0GAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,8BAA8B,mBAAO,CAAC,uHAA2B;AACjE,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,6BAA6B,mBAAO,CAAC,qHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,mCAAmC,mBAAO,CAAC,qIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,gBAAgB,mBAAO,CAAC,sHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,0FAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,iGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;ACvSL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,IAAI;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;AC5KA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sI;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,uIAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACniLD,eAAe,mBAAO,CAAC,wGAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrGA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;AAC9B,cAAc,mBAAO,CAAC,8EAAS;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8BAA8B,yEAAyE;AACvG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,cAAc;AACd,KAAK;AACL;;AAEA;AACA,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;;AAEA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB,OAAO;AACP,KAAK;AACL;;AAEA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC,qBAAqB;AACrB,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9fA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,sFAAa;AACvB,EAAE,mBAAO,CAAC,gFAAU;AACpB;;;;;;;;;;;ACPA,cAAc,mBAAO,CAAC,8EAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC7DA,yBAAyB,mBAAO,CAAC,6GAA4B;AAC7D,UAAU,mBAAO,CAAC,kDAAa;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,iBAAiB,mBAAO,CAAC,qHAAe;AACxC,cAAc,mBAAO,CAAC,+GAAY;AAClC,cAAc,mBAAO,CAAC,+GAAY;AAClC,cAAc,mBAAO,CAAC,+GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,6HAAmB;AAChD,sBAAsB,mBAAO,CAAC,+HAAoB;AAClD,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,qBAAqB,mBAAO,CAAC,6HAAmB;AAChD,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,iHAAa;AACpC,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,SAAS,mBAAO,CAAC,mGAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,aAAa,mBAAO,CAAC,6GAAW;AAChC,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,qBAAqB,mBAAO,CAAC,6HAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,oBAAoB,mBAAO,CAAC,2HAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,mHAAc;AACvC,eAAe,mBAAO,CAAC,iHAAa;AACpC,eAAe,mBAAO,CAAC,+GAAY;AACnC,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,iHAAa;AACpC,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,wBAAwB,mBAAO,CAAC,mIAAsB;AACtD,eAAe,mBAAO,CAAC,iHAAa;AACpC,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,uGAAQ;AAC1B,WAAW,mBAAO,CAAC,uGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,mHAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,6GAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,yGAAS;AAC5B,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,UAAU,mBAAO,CAAC,uGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,mHAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,qHAAe;AACxC,eAAe,mBAAO,CAAC,+GAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,aAAa,mBAAO,CAAC,4GAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,oJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,0GAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,oJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,sGAAU,wBAAwB,mBAAO,CAAC,0GAAY,YAAY,mBAAO,CAAC,4GAAa,YAAY,mBAAO,CAAC,kHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,sGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU;AAC3D,qCAAqC,mBAAO,CAAC,0GAAY;AACzD,0BAA0B,mBAAO,CAAC,4GAAa;AAC/C,0BAA0B,mBAAO,CAAC,kHAAgB;AAClD,0BAA0B,mBAAO,CAAC,oHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,yGAAY;AAClC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,6FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,qBAAqB,mBAAO,CAAC,uHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,aAAa,mBAAO,CAAC,uGAAW;AAChC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,yGAAY;AACnC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,iIAAwB;AAC1D,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,yIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,UAAU,mBAAO,CAAC,+FAAO;AACzB,YAAY,mBAAO,CAAC,mGAAS;AAC7B,YAAY,mBAAO,CAAC,qGAAU;AAC9B,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,8BAA8B,mBAAO,CAAC,yIAA4B;AAClE,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,eAAe,mBAAO,CAAC,2GAAa;AACpC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,2GAAa;AACpC,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,6HAAsB;AACtD,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,uGAAW;AACjC,YAAY,mBAAO,CAAC,qGAAU;AAC9B,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,WAAW,mBAAO,CAAC,iGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,uGAAW;AAChC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,SAAS,mBAAO,CAAC,6FAAM;AACvB,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,uGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,2GAAa;AACpC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,cAAc,mBAAO,CAAC,yGAAY;AAClC,eAAe,mBAAO,CAAC,yGAAY;AACnC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,YAAY,mBAAO,CAAC,qGAAU;AAC9B,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,aAAa,gIAAuB;AACpC,iBAAiB,mBAAO,CAAC,wGAAW;AACpC,YAAY,+HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,+GAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,oGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC,aAAa,mBAAO,CAAC,+GAAW;AAChC,wBAAwB,mBAAO,CAAC,kIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,qGAAS;AAC7B,aAAa,mBAAO,CAAC,gHAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,yKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,+IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,+HAAsB;AACtD,aAAa,mBAAO,CAAC,+GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,qIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,8HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,gHAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,4GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,kHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sGAAU;AACnC,cAAc,mBAAO,CAAC,gHAAe;AACrC;AACA,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,sHAAkB;AACxC,cAAc,mBAAO,CAAC,wHAAmB;AACzC,cAAc,mBAAO,CAAC,4GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,0FAAI;AACvC,yBAAyB,mBAAO,CAAC,0GAAY;AAC7C,cAAc,mBAAO,CAAC,gGAAO;AAC7B,4BAA4B,mBAAO,CAAC,gHAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,4GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,sHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,wGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,2IAAgC;AAClD,yBAAyB,mBAAO,CAAC,4GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,oGAAQ;AAC3B,WAAW,mBAAO,CAAC,oGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,gHAAW;AACjC,oBAAoB,mBAAO,CAAC,sHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,0GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,mBAAmB,+IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,0GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,iBAAiB,mBAAO,CAAC,gIAAmB,iBAAiB,mBAAO,CAAC,kIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,WAAW,mBAAO,CAAC,6GAAa;AAChC,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,gHAAW;AACjC,iBAAiB,mBAAO,CAAC,iHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,8GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,eAAe,mBAAO,CAAC,kHAAY;AACnC,eAAe,mBAAO,CAAC,kHAAY;AACnC,cAAc,mBAAO,CAAC,gHAAW;AACjC,eAAe,mBAAO,CAAC,kHAAY;AACnC,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,iBAAiB,mBAAO,CAAC,sHAAc;AACvC,qBAAqB,mBAAO,CAAC,8HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,gIAAmB;AACjD,uBAAuB,mBAAO,CAAC,kIAAoB;AACnD,eAAe,mBAAO,CAAC,kHAAY;AACnC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,mBAAmB,mBAAO,CAAC,0HAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,kHAAY;AACnC,wBAAwB,mBAAO,CAAC,oIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA,gBAAgB,oJAA8B;AAC9C,YAAY,mBAAO,CAAC,iHAAS;AAC7B,iBAAiB,mBAAO,CAAC,2HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,kHAAY;AACnC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC,cAAc,mBAAO,CAAC,2GAAY;AAClC,kBAAkB,4IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;AAClC,WAAW,mBAAO,CAAC,6GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,WAAW,mBAAO,CAAC,6GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,qIAAqB;AACxD,qBAAqB,mBAAO,CAAC,qIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,wHAAa;AAClC,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,oHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,oHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,gHAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8GAAU;AAC/B,cAAc,mBAAO,CAAC,0GAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,0GAAY;AAClC,iBAAiB,mBAAO,CAAC,gHAAc;AACvC,kBAAkB,2IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,0GAAY,GAAG,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,kHAAgB,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,wHAAmB,GAAG,mBAAO,CAAC,0HAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,gHAAe,GAAG,mBAAO,CAAC,kHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,KAA6B;AACnC,QAAQ,KAA4B;AACpC;AACA;AACA,IAAI,SAAS;AACb,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA,KAAK;AACL;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,wCAAwC;AACxC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB,eAAe;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAwB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,qBAAqB;AACrB;;AAEA;AACA;AACA,KAAK;AACL,iBAAiB;;AAEjB;AACA,kDAAkD,EAAE,iBAAiB;;AAErE;AACA,wBAAwB,8BAA8B;AACtD,2BAA2B;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,iBAAiB;;AAEnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAyC;AAC/C,IAAI,iCAAqB,EAAE,mCAAE;AAC7B;AACA,KAAK;AAAA,kGAAC;AACN;AACA,CAAC;;;;;;;;;;;AC3pDD;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,yGAAoB;AACpD,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,yBAAyB,mBAAO,CAAC,uGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,0GAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,8BAA8B,mBAAO,CAAC,uHAA2B;AACjE,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,6BAA6B,mBAAO,CAAC,qHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,mCAAmC,mBAAO,CAAC,qIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,gBAAgB,mBAAO,CAAC,sHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,0FAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,iGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;AC3SL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;ACpLA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,qCAAqC,OAAO,gBAAgB,MAAM,wBAAwB,YAAY;AACtG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,kBAAkB;AACzC,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,sBAAsB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW;AAC3C,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpKA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,mFAAQ;;AAE7B;AACA;AACA,uBAAuB,kBAAkB;AACzC,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW;AAC3C,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClCA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;AAC9B,cAAc,mBAAO,CAAC,8EAAS;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8BAA8B,yEAAyE;AACvG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,cAAc;AACd,KAAK;AACL;;AAEA;AACA,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;;AAEA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB,OAAO;AACP,KAAK;AACL;;AAEA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC,qBAAqB;AACrB,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5fA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,sFAAa;AACvB,EAAE,mBAAO,CAAC,gFAAU;AACpB;;;;;;;;;;;ACPA,cAAc,mBAAO,CAAC,8EAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC7DA,yBAAyB,mBAAO,CAAC,6GAA4B;AAC7D,UAAU,mBAAO,CAAC,kDAAa;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9BA,aAAa,mBAAO,CAAC,kDAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,oJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,0GAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,oJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,sGAAU,wBAAwB,mBAAO,CAAC,0GAAY,YAAY,mBAAO,CAAC,4GAAa,YAAY,mBAAO,CAAC,kHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,sGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU;AAC3D,qCAAqC,mBAAO,CAAC,0GAAY;AACzD,0BAA0B,mBAAO,CAAC,4GAAa;AAC/C,0BAA0B,mBAAO,CAAC,kHAAgB;AAClD,0BAA0B,mBAAO,CAAC,oHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,yGAAY;AAClC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,6FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,qBAAqB,mBAAO,CAAC,uHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,aAAa,mBAAO,CAAC,uGAAW;AAChC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,yGAAY;AACnC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,iIAAwB;AAC1D,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,yIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,UAAU,mBAAO,CAAC,+FAAO;AACzB,YAAY,mBAAO,CAAC,mGAAS;AAC7B,YAAY,mBAAO,CAAC,qGAAU;AAC9B,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,8BAA8B,mBAAO,CAAC,yIAA4B;AAClE,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,eAAe,mBAAO,CAAC,2GAAa;AACpC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,2GAAa;AACpC,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,6HAAsB;AACtD,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,uGAAW;AACjC,YAAY,mBAAO,CAAC,qGAAU;AAC9B,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,WAAW,mBAAO,CAAC,iGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,uGAAW;AAChC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,SAAS,mBAAO,CAAC,6FAAM;AACvB,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,uGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,2GAAa;AACpC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,cAAc,mBAAO,CAAC,yGAAY;AAClC,eAAe,mBAAO,CAAC,yGAAY;AACnC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,YAAY,mBAAO,CAAC,qGAAU;AAC9B,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,aAAa,gIAAuB;AACpC,iBAAiB,mBAAO,CAAC,wGAAW;AACpC,YAAY,+HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,qHAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,oGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC,aAAa,mBAAO,CAAC,+GAAW;AAChC,wBAAwB,mBAAO,CAAC,kIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,qGAAS;AAC7B,aAAa,mBAAO,CAAC,gHAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,yKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,+IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,+HAAsB;AACtD,aAAa,mBAAO,CAAC,+GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,qIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,8HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,gHAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,4GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,kHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sGAAU;AACnC,cAAc,mBAAO,CAAC,gHAAe;AACrC;AACA,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,sHAAkB;AACxC,cAAc,mBAAO,CAAC,wHAAmB;AACzC,cAAc,mBAAO,CAAC,4GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,0FAAI;AACvC,yBAAyB,mBAAO,CAAC,0GAAY;AAC7C,cAAc,mBAAO,CAAC,gGAAO;AAC7B,4BAA4B,mBAAO,CAAC,gHAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,4GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,sHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,wGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,2IAAgC;AAClD,yBAAyB,mBAAO,CAAC,4GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,oGAAQ;AAC3B,WAAW,mBAAO,CAAC,oGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,gHAAW;AACjC,oBAAoB,mBAAO,CAAC,sHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,0GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,mBAAmB,+IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,0GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,iBAAiB,mBAAO,CAAC,gIAAmB,iBAAiB,mBAAO,CAAC,kIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,WAAW,mBAAO,CAAC,6GAAa;AAChC,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,gHAAW;AACjC,iBAAiB,mBAAO,CAAC,iHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,8GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,eAAe,mBAAO,CAAC,kHAAY;AACnC,eAAe,mBAAO,CAAC,kHAAY;AACnC,cAAc,mBAAO,CAAC,gHAAW;AACjC,eAAe,mBAAO,CAAC,kHAAY;AACnC,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,iBAAiB,mBAAO,CAAC,sHAAc;AACvC,qBAAqB,mBAAO,CAAC,8HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,gIAAmB;AACjD,uBAAuB,mBAAO,CAAC,kIAAoB;AACnD,eAAe,mBAAO,CAAC,kHAAY;AACnC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,mBAAmB,mBAAO,CAAC,0HAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,kHAAY;AACnC,wBAAwB,mBAAO,CAAC,oIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA,gBAAgB,oJAA8B;AAC9C,YAAY,mBAAO,CAAC,iHAAS;AAC7B,iBAAiB,mBAAO,CAAC,2HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,kHAAY;AACnC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC,cAAc,mBAAO,CAAC,2GAAY;AAClC,kBAAkB,4IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;AAClC,WAAW,mBAAO,CAAC,6GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,WAAW,mBAAO,CAAC,6GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,qIAAqB;AACxD,qBAAqB,mBAAO,CAAC,qIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,wHAAa;AAClC,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,oHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,oHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,gHAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8GAAU;AAC/B,cAAc,mBAAO,CAAC,0GAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,0GAAY;AAClC,iBAAiB,mBAAO,CAAC,gHAAc;AACvC,kBAAkB,2IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,0GAAY,GAAG,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,kHAAgB,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,wHAAmB,GAAG,mBAAO,CAAC,0HAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,gHAAe,GAAG,mBAAO,CAAC,kHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA,8CAA6C,CAAC,cAAc,EAAC;;AAE7D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,eAAe;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI,KAAwB;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,mBAAmB;AACnB;;AAEA;AACA;AACA,GAAG;AACH,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,0BAA0B,EAAE,iBAAiB;AAC7C;AACA;;AAEA;AACA,sBAAsB,8BAA8B;AACpD,yBAAyB;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gDAAgD,iBAAiB;;AAEjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,eAAe;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD;AACA;AACA,GAAG;AACH;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wCAAwC;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe;AACf,SAAS;AACT,eAAe;AACf,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,cAAc;AACd,YAAY;AACZ,eAAe;AACf,aAAa;AACb,aAAa;AACb,aAAa;AACb,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,kBAAkB;AAClB,YAAY;AACZ,aAAa;AACb,cAAc;AACd,iBAAiB;AACjB,cAAc;AACd,YAAY;AACZ,iBAAiB;AACjB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,WAAW;AACX,eAAe;AACf,WAAW;AACX,gBAAgB;AAChB,eAAe;AACf,eAAe;AACf,eAAe;AACf,oBAAoB;AACpB,cAAc;AACd,cAAc;AACd,mBAAmB;AACnB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,kBAAkB;AAClB,cAAc;AACd,iBAAiB;AACjB,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,kBAAkB;AAClB,aAAa;AACb,eAAe;AACf,aAAa;AACb,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,gBAAgB;AAChB,gBAAgB;AAChB,oBAAoB;AACpB,mBAAmB;AACnB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,mBAAmB;AACnB,WAAW;AACX,iBAAiB;AACjB,eAAe;AACf,WAAW;AACX,eAAe;AACf,WAAW;AACX,aAAa;AACb,cAAc;AACd,YAAY;AACZ,WAAW;AACX,cAAc;AACd,YAAY;AACZ,YAAY;AACZ,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,gBAAgB;AAChB,kBAAkB;AAClB,cAAc;AACd,aAAa;AACb,cAAc;AACd,mBAAmB;AACnB,cAAc;AACd,YAAY;AACZ,qBAAqB;AACrB,cAAc;AACd,cAAc;AACd,eAAe;AACf,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,mBAAmB;AACnB,WAAW;AACX,gBAAgB;AAChB,wBAAwB;AACxB,gBAAgB;AAChB,aAAa;AACb,eAAe;AACf,cAAc;AACd,aAAa;AACb,YAAY;AACZ,gBAAgB;AAChB,aAAa;AACb,cAAc;AACd,aAAa;AACb,eAAe;AACf,YAAY;AACZ,WAAW;AACX;;;;;;;;;;;AC7mEA;AACA;AACA;AACA;;AAEA,sBAAsB,mBAAO,CAAC,oIAAyB;;;;AAIvD;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,yGAAoB;AACpD,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,yBAAyB,mBAAO,CAAC,uGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,0GAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,8BAA8B,mBAAO,CAAC,uHAA2B;AACjE,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,6BAA6B,mBAAO,CAAC,qHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,mCAAmC,mBAAO,CAAC,qIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,gBAAgB,mBAAO,CAAC,sHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,0FAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,iGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;AC3SL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;ACpLA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnHD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qI;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,sIAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACriLD,eAAe,mBAAO,CAAC,uGAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACtaA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,qFAAa;AACvB,EAAE,mBAAO,CAAC,+EAAU;AACpB;;;;;;;;;;;ACPA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACtDA,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,iBAAiB,mBAAO,CAAC,oHAAe;AACxC,cAAc,mBAAO,CAAC,8GAAY;AAClC,cAAc,mBAAO,CAAC,8GAAY;AAClC,cAAc,mBAAO,CAAC,8GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,4HAAmB;AAChD,sBAAsB,mBAAO,CAAC,8HAAoB;AAClD,mBAAmB,mBAAO,CAAC,wHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,wHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,0HAAkB;AAC9C,qBAAqB,mBAAO,CAAC,4HAAmB;AAChD,kBAAkB,mBAAO,CAAC,sHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,gHAAa;AACpC,kBAAkB,mBAAO,CAAC,sHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,kBAAkB,mBAAO,CAAC,sHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,SAAS,mBAAO,CAAC,kGAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,aAAa,mBAAO,CAAC,4GAAW;AAChC,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,qBAAqB,mBAAO,CAAC,4HAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,oBAAoB,mBAAO,CAAC,0HAAkB;AAC9C,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,oBAAoB,mBAAO,CAAC,0HAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,kHAAc;AACvC,eAAe,mBAAO,CAAC,gHAAa;AACpC,eAAe,mBAAO,CAAC,8GAAY;AACnC,eAAe,mBAAO,CAAC,gHAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,gHAAa;AACpC,oBAAoB,mBAAO,CAAC,0HAAkB;AAC9C,wBAAwB,mBAAO,CAAC,kIAAsB;AACtD,eAAe,mBAAO,CAAC,gHAAa;AACpC,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,sGAAQ;AAC1B,WAAW,mBAAO,CAAC,sGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,kHAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,wHAAiB;AAC5C,eAAe,mBAAO,CAAC,gHAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,4GAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,wGAAS;AAC5B,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,UAAU,mBAAO,CAAC,sGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,kHAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,oHAAe;AACxC,eAAe,mBAAO,CAAC,8GAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,gHAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,aAAa,mBAAO,CAAC,2GAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,yHAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,iHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,mJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,qGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,yGAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,mJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,yHAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,qGAAU,wBAAwB,mBAAO,CAAC,yGAAY,YAAY,mBAAO,CAAC,2GAAa,YAAY,mBAAO,CAAC,iHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,qGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,qGAAU;AAC3D,qCAAqC,mBAAO,CAAC,yGAAY;AACzD,0BAA0B,mBAAO,CAAC,2GAAa;AAC/C,0BAA0B,mBAAO,CAAC,iHAAgB;AAClD,0BAA0B,mBAAO,CAAC,mHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,cAAc,mBAAO,CAAC,wGAAY;AAClC,cAAc,mBAAO,CAAC,wGAAY;AAClC,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,sHAAmB;AAChD,sBAAsB,mBAAO,CAAC,wHAAoB;AAClD,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,sHAAmB;AAChD,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,0GAAa;AACpC,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,eAAe,mBAAO,CAAC,0GAAa;AACpC,eAAe,mBAAO,CAAC,0GAAa;AACpC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,kBAAkB,mBAAO,CAAC,8GAAe;AACzC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;AACnC,cAAc,mBAAO,CAAC,wGAAY;AAClC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,4FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,0GAAa;AACpC,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,cAAc,mBAAO,CAAC,sGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,sGAAW;AAChC,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,qBAAqB,mBAAO,CAAC,sHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,oBAAoB,mBAAO,CAAC,oHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,wHAAoB;AAClD,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,oGAAU;AAC9B,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,aAAa,mBAAO,CAAC,sGAAW;AAChC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;AACnC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,oGAAU;AAC9B,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,4GAAc;AACvC,eAAe,mBAAO,CAAC,0GAAa;AACpC,eAAe,mBAAO,CAAC,wGAAY;AACnC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,eAAe,mBAAO,CAAC,wGAAY;AACnC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,gIAAwB;AAC1D,eAAe,mBAAO,CAAC,wGAAY;AACnC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,wIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,UAAU,mBAAO,CAAC,8FAAO;AACzB,YAAY,mBAAO,CAAC,kGAAS;AAC7B,YAAY,mBAAO,CAAC,oGAAU;AAC9B,yBAAyB,mBAAO,CAAC,8HAAuB;AACxD,8BAA8B,mBAAO,CAAC,wIAA4B;AAClE,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,sGAAW;AAChC,eAAe,mBAAO,CAAC,0GAAa;AACpC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,0GAAa;AACpC,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,4HAAsB;AACtD,eAAe,mBAAO,CAAC,0GAAa;AACpC,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,sGAAW;AACjC,YAAY,mBAAO,CAAC,oGAAU;AAC9B,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,WAAW,mBAAO,CAAC,gGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,0GAAa;AACpC,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,sGAAW;AAChC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,SAAS,mBAAO,CAAC,4FAAM;AACvB,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,sHAAmB;AAChD,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,WAAW,mBAAO,CAAC,gGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,4GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,8HAAuB;AACxD,WAAW,mBAAO,CAAC,gGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,sGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,0GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,0GAAa;AACpC,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,cAAc,mBAAO,CAAC,wGAAY;AAClC,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,cAAc,mBAAO,CAAC,wGAAY;AAClC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,0GAAa;AACpC,kBAAkB,mBAAO,CAAC,8GAAe;AACzC,cAAc,mBAAO,CAAC,sGAAW;AACjC,cAAc,mBAAO,CAAC,wGAAY;AAClC,eAAe,mBAAO,CAAC,wGAAY;AACnC,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,kGAAS;AAC5B,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,UAAU,mBAAO,CAAC,gGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,sGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,4GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,4GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,oHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,wHAAoB;AAClD,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,4GAAc;AACvC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,kGAAS;AAC5B,gBAAgB,mBAAO,CAAC,0GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,0HAAqB;AACpD,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,eAAe,mBAAO,CAAC,0GAAa;AACpC,kBAAkB,mBAAO,CAAC,8GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,0HAAqB;AACpD,YAAY,mBAAO,CAAC,oGAAU;AAC9B,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,+FAAO;AAC7B,aAAa,+HAAuB;AACpC,iBAAiB,mBAAO,CAAC,uGAAW;AACpC,YAAY,8HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,8GAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,mGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,4GAAa;AAChC,aAAa,mBAAO,CAAC,8GAAW;AAChC,wBAAwB,mBAAO,CAAC,iIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,oGAAS;AAC7B,aAAa,mBAAO,CAAC,+GAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,wKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,8IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,8HAAsB;AACtD,aAAa,mBAAO,CAAC,8GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,oIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,6HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,+GAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,2GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,iHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,qGAAU;AACnC,cAAc,mBAAO,CAAC,+GAAe;AACrC;AACA,cAAc,mBAAO,CAAC,mHAAiB;AACvC,cAAc,mBAAO,CAAC,mHAAiB;AACvC,cAAc,mBAAO,CAAC,qHAAkB;AACxC,cAAc,mBAAO,CAAC,uHAAmB;AACzC,cAAc,mBAAO,CAAC,2GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,yFAAI;AACvC,yBAAyB,mBAAO,CAAC,yGAAY;AAC7C,cAAc,mBAAO,CAAC,+FAAO;AAC7B,4BAA4B,mBAAO,CAAC,+GAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,2GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,qHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,6HAAqB;AACrD,iBAAiB,mBAAO,CAAC,uGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,0IAAgC;AAClD,yBAAyB,mBAAO,CAAC,2GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,mGAAQ;AAC3B,WAAW,mBAAO,CAAC,mGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,+GAAW;AACjC,oBAAoB,mBAAO,CAAC,qHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,yGAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,mBAAmB,8IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,mHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,yGAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+HAAmB,iBAAiB,mBAAO,CAAC,iIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,mHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,uHAAe;AACzC,WAAW,mBAAO,CAAC,4GAAa;AAChC,cAAc,mBAAO,CAAC,0GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,+GAAW;AACjC,iBAAiB,mBAAO,CAAC,gHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,iHAAY;AACnC,WAAW,mBAAO,CAAC,4GAAa;AAChC,iBAAiB,mBAAO,CAAC,gHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,iHAAY;AACnC,WAAW,mBAAO,CAAC,4GAAa;AAChC,iBAAiB,mBAAO,CAAC,gHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,6GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,gHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,mHAAa;AACrC,mBAAmB,mBAAO,CAAC,yHAAgB;AAC3C,eAAe,mBAAO,CAAC,iHAAY;AACnC,eAAe,mBAAO,CAAC,iHAAY;AACnC,cAAc,mBAAO,CAAC,+GAAW;AACjC,eAAe,mBAAO,CAAC,iHAAY;AACnC,kBAAkB,mBAAO,CAAC,uHAAe;AACzC,iBAAiB,mBAAO,CAAC,qHAAc;AACvC,qBAAqB,mBAAO,CAAC,6HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,+HAAmB;AACjD,uBAAuB,mBAAO,CAAC,iIAAoB;AACnD,eAAe,mBAAO,CAAC,iHAAY;AACnC,mBAAmB,mBAAO,CAAC,yHAAgB;AAC3C,mBAAmB,mBAAO,CAAC,yHAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,iHAAY;AACnC,wBAAwB,mBAAO,CAAC,mIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,kBAAkB,mBAAO,CAAC,gHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,uHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,kHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;AACA,gBAAgB,mJAA8B;AAC9C,YAAY,mBAAO,CAAC,gHAAS;AAC7B,iBAAiB,mBAAO,CAAC,0HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,kHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,iHAAY;AACnC,iBAAiB,mBAAO,CAAC,gHAAe;AACxC,cAAc,mBAAO,CAAC,0GAAY;AAClC,kBAAkB,2IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,mHAAa;AACrC,cAAc,mBAAO,CAAC,0GAAY;AAClC,WAAW,mBAAO,CAAC,4GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,uHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,WAAW,mBAAO,CAAC,4GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,mHAAa;AACrC,cAAc,mBAAO,CAAC,0GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,oIAAqB;AACxD,qBAAqB,mBAAO,CAAC,oIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,uHAAa;AAClC,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,mHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,mHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,6HAAqB;AACrD,iBAAiB,mBAAO,CAAC,+GAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,6GAAU;AAC/B,cAAc,mBAAO,CAAC,yGAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAc;AACvC,kBAAkB,0IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,iHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,yGAAY,GAAG,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,iHAAgB,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,uHAAmB,GAAG,mBAAO,CAAC,yHAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,+GAAe,GAAG,mBAAO,CAAC,iHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,KAA6B;AACnC,QAAQ,KAA4B;AACpC;AACA;AACA,IAAI,SAAS;AACb,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA,KAAK;AACL;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,wCAAwC;AACxC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB,eAAe;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAwB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,qBAAqB;AACrB;;AAEA;AACA;AACA,KAAK;AACL,iBAAiB;;AAEjB;AACA,kDAAkD,EAAE,iBAAiB;;AAErE;AACA,wBAAwB,8BAA8B;AACtD,2BAA2B;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,iBAAiB;;AAEnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAyC;AAC/C,IAAI,iCAAqB,EAAE,mCAAE;AAC7B;AACA,KAAK;AAAA,kGAAC;AACN;AACA,CAAC;;;;;;;;;;;AC3pDD;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,wGAAoB;AACpD,qBAAqB,mBAAO,CAAC,kGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,0GAAqB;AACrD,yBAAyB,mBAAO,CAAC,sGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,yGAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,8FAAe;AAC1C,8BAA8B,mBAAO,CAAC,sHAA2B;AACjE,qBAAqB,mBAAO,CAAC,kGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,0GAAqB;AACrD,6BAA6B,mBAAO,CAAC,oHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,kGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,8FAAe;AAC1C,mCAAmC,mBAAO,CAAC,oIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,+FAAO;AAC7B,gBAAgB,mBAAO,CAAC,qHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,yFAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,gGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;ACvSL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,IAAI;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;AC5KA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,8FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,8FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,uDAAa;AACpC,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,wBAAwB,mBAAO,CAAC,yEAAsB;AACtD,eAAe,mBAAO,CAAC,uDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,eAAe;AACf;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,KAA0B;;AAE9C;AACA,kCAAkC,QAAa;;AAE/C;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,EAAE;AACf,aAAa,QAAQ;AACrB;AACA,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA,kCAAkC,6BAA6B,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,aAAa;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,aAAa,QAAQ;AACrB;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,aAAa,OAAO,WAAW;AAC/B,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+CAA+C;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,EAAE;AACf,aAAa,MAAM;AACnB;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,KAAK;AAClB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA,QAAQ,qCAAqC;AAC7C,QAAQ,qCAAqC;AAC7C,QAAQ;AACR;AACA;AACA,qCAAqC,2BAA2B,EAAE;AAClE;AACA;AACA;AACA,yBAAyB,kCAAkC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,EAAE;AACf,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA,QAAQ,+BAA+B;AACvC,QAAQ,+BAA+B;AACvC,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,QAAQ,8BAA8B;AACtC,QAAQ;AACR;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,cAAc,OAAO;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+CAA+C;AACvD,QAAQ;AACR;AACA;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,QAAQ,8CAA8C;AACtD,QAAQ;AACR;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD;AACA;AACA;AACA,sBAAsB,4BAA4B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,EAAE;AACjB;AACA;AACA;AACA,QAAQ,+CAA+C;AACvD,QAAQ,gDAAgD;AACxD,QAAQ;AACR;AACA;AACA,gCAAgC,mBAAmB,EAAE;AACrD;AACA;AACA;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,eAAe,yBAAyB;AACxC;AACA;AACA,MAAM,IAAI;AACV,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,cAAc,OAAO;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mCAAmC;AAC3C,QAAQ;AACR;AACA;AACA;AACA,oBAAoB,oCAAoC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,yBAAyB;AACtC;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA,QAAQ,8BAA8B;AACtC,QAAQ,8BAA8B;AACtC,QAAQ,8BAA8B;AACtC,QAAQ;AACR;AACA;AACA,mCAAmC,eAAe,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd,KAAK;AACL;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,EAAE;AACf,aAAa,KAAK;AAClB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,KAAK;AAClB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,KAAK;AAClB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA;AACA,qBAAqB,SAAS,GAAG,SAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA,+BAA+B,kBAAkB,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA,gDAAgD,kBAAkB,EAAE;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,MAAM;AACrB;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,UAAU;AACvB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,YAAY;AACZ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,UAAU;AACvB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B,YAAY;AACZ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,UAAU;AACvB,eAAe,OAAO;AACtB;AACA;AACA;AACA,iBAAiB,SAAS,GAAG,SAAS,GAAG,SAAS;AAClD,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB,OAAO,SAAS;AACnC,2BAA2B,gBAAgB,SAAS,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,qBAAqB;AAClC,eAAe,OAAO;AACtB;AACA;AACA,mBAAmB;AACnB;AACA;AACA,YAAY;AACZ;AACA;AACA,8BAA8B;AAC9B,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA,mBAAmB,QAAQ,OAAO,+BAA+B,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,SAAS;AACxB;AACA;AACA;AACA,QAAQ,8CAA8C;AACtD,QAAQ;AACR;AACA;AACA;AACA,iCAAiC,mCAAmC;AACpE,aAAa,8CAA8C;AAC3D;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA,QAAQ,yBAAyB;AACjC,QAAQ;AACR;AACA;AACA,kCAAkC,iBAAiB;AACnD,aAAa,yBAAyB;AACtC;AACA;AACA,8CAA8C,SAAS,cAAc,SAAS;AAC9E,aAAa,yBAAyB,GAAG,yBAAyB;AAClE;AACA;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,OAAO;AACpB,aAAa,OAAO,YAAY;AAChC,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB,GAAG,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,qDAAqD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG,MAAM,iBAAiB;;AAE1B;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA,MAAM,IAA0E;AAChF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,mCAAO;AACX;AACA,KAAK;AAAA,kGAAC;AACN;AACA;AACA,OAAO,EASJ;AACH,CAAC;;;;;;;;;;;ACpyHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9KD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6E;;;;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,8EAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;ACriLD,oC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,kC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA,wF;;;;;WCAA;WACA;WACA;WACA;WACA,E;;;;;UCJA;UACA;UACA;UACA","file":"all-chts-bundle.dev.js","sourcesContent":["\nmodule.exports = {\n '3.9': {\n ddocs: require('./build/cht-core-3-9-ddocs.json'),\n RegistrationUtils: require('cht-core-3-9/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-9/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-9/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-9/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-9/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-9/shared-libs/lineage'),\n },\n '3.10': {\n ddocs: require('./build/cht-core-3-10-ddocs.json'),\n RegistrationUtils: require('cht-core-3-10/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-10/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-10/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-10/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-10/shared-libs/lineage'),\n },\n '3.11': {\n ddocs: require('./build/cht-core-3-11-ddocs.json'),\n RegistrationUtils: require('cht-core-3-11/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-11/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-11/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-11/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-11/shared-libs/lineage'),\n },\n '3.12': {\n ddocs: require('./build/cht-core-3-12-ddocs.json'),\n RegistrationUtils: require('cht-core-3-12/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-12/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-12/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-12/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-12/shared-libs/lineage'),\n ChtScriptApi: require('cht-core-3-12/shared-libs/cht-script-api'),\n },\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'birneçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha invalida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var hi = moment.defineLocale('hi', {\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n '_'\n ),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n );\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return (\n '(' +\n monthsSubjective[momentToFormat.month()] +\n '|' +\n monthsNominative[momentToFormat.month()] +\n ')'\n );\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Пагоҳ соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js language configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js language configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/cht-core-3-10/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.26.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.26.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\nconst utils = require('./utils');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nconst getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id);\n\nconst getContactIds = (contacts) => {\n const ids = [];\n contacts.forEach(doc => {\n if (!doc) {\n return;\n }\n\n const id = utils.getId(doc.contact);\n id && ids.push(id);\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n id && ids.push(id);\n });\n });\n\n return _.uniq(ids);\n};\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (doc.type === 'data_record') {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n if (!doc) {\n return;\n }\n const id = utils.getId(doc.contact);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.linked_docs[key] = deepCopy(contactDoc);\n }\n });\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = getContactIds(lineage);\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = getContactById(lineage, id);\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n return doc;\n };\n\n const findPatientId = function(doc) {\n return (\n doc.type === 'data_record' &&\n (\n (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) ||\n doc.patient_id\n )\n );\n };\n\n const fetchPatientUuids = function(records) {\n const patientIds = records.map(record => findPatientId(record));\n if (!patientIds.some(patientId => patientId)) {\n return Promise.resolve([]);\n }\n return contactUuidByPatientIds(patientIds);\n };\n\n const fetchPatientLineage = function(record) {\n return fetchPatientUuids([record])\n .then(function([uuid]) {\n if (!uuid) {\n return [];\n }\n\n return fetchLineageById(uuid);\n });\n };\n\n const contactUuidByPatientIds = function(patientIds) {\n const keys = patientIds\n .filter(patientId => patientId)\n .map(patientId => [ 'shortcode', patientId ]);\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n return patientIds.map(patientId => findIdWithKey(patientId) || patientId);\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchPatientLineage(lineage[0])\n .then(function(result) {\n patientLineage = result;\n return fetchContacts(lineage.concat(patientLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (doc.type === 'data_record') {\n const contactId = utils.getId(doc.contact);\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = doc.type === 'data_record' ? doc.contact : doc;\n ids.push(...getContactIds(selfAndParents(startLineageFrom)));\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids;\n let patientDocs;\n\n return fetchPatientUuids(hydratedDocs)\n .then(function(uuids) {\n patientUuids = uuids;\n return fetchDocs(patientUuids);\n })\n .then(function(patients) {\n patientDocs = patients;\n knownDocs.push(...patients);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(patientDocs),\n ...collectLeafContactIds(patientDocs),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc, i) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return getContactById(parents, id);\n });\n };\n\n const isReport = doc.type === 'data_record';\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = getContactById(patientDocs, patientUuids[i]);\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const utils = require('./utils');\nconst RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n\n if (utils.validLinkedDocs(doc)) {\n Object.keys(doc.linked_docs).forEach(key => {\n doc.linked_docs[key] = utils.getId(doc.linked_docs[key]);\n });\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","const contactTypeUtils = require('@medic/contact-types-utils');\nconst _ = require('lodash/core');\n\nconst isContact = doc => {\n if (!doc) {\n return;\n }\n\n return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type);\n};\n\nconst getId = (item) => item && (typeof item === 'string' ? item : item._id);\n\n// don't process linked docs for non-contact types\n// linked_docs property should be a key-value object\nconst validLinkedDocs = doc => {\n return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs);\n};\n\nmodule.exports = {\n getId,\n validLinkedDocs,\n};\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.9.1\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.1';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countEmissionsByGroup = relevantEmissions\n .filter(emission => emission.groupBy)\n .reduce((agg, curr) => {\n if (!agg[curr.groupBy]) {\n agg[curr.groupBy] = 0;\n }\n\n agg[curr.groupBy]++;\n return agg;\n }, {});\n\n const groups = Object.keys(countEmissionsByGroup);\n return {\n pass: groups.filter(group => countEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'birneçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha invalida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var hi = moment.defineLocale('hi', {\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n '_'\n ),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n );\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return (\n '(' +\n monthsSubjective[momentToFormat.month()] +\n '|' +\n monthsNominative[momentToFormat.month()] +\n ')'\n );\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Пагоҳ соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js language configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js language configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.26.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.26.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","const HARDCODED_PERSON_TYPE = 'person';\nconst HARDCODED_TYPES = [\n 'district_hospital',\n 'health_center',\n 'clinic',\n 'person'\n];\n\nconst getContactTypes = config => {\n return config && Array.isArray(config.contact_types) && config.contact_types || [];\n};\n\nconst getTypeId = (doc) => {\n if (!doc) {\n return;\n }\n return doc.type === 'contact' ? doc.contact_type : doc.type;\n};\n\nconst getTypeById = (config, typeId) => {\n const contactTypes = getContactTypes(config);\n return contactTypes.find(type => type.id === typeId);\n};\n\nconst isPersonType = (type) => {\n return type && (type.person || type.id === HARDCODED_PERSON_TYPE);\n};\n\nconst isPlaceType = (type) => {\n return type && !type.person && type.id !== HARDCODED_PERSON_TYPE;\n};\n\nconst hasParents = (type) => !!(type && type.parents && type.parents.length);\n\nconst isParentOf = (parentType, childType) => {\n if (!parentType || !childType) {\n return false;\n }\n\n const parentTypeId = typeof parentType === 'string' ? parentType : parentType.id;\n return !!(childType && childType.parents && childType.parents.includes(parentTypeId));\n};\n\n// A leaf place type is a contact type that does not have any child place types, but can have child person types\nconst getLeafPlaceTypes = (config) => {\n const types = getContactTypes(config);\n const placeTypes = types.filter(type => !type.person);\n return placeTypes.filter(type => {\n return placeTypes.every(inner => !inner.parents || !inner.parents.includes(type.id));\n });\n};\n\nconst getContactType = (config, contact) => {\n const typeId = getTypeId(contact);\n return typeId && getTypeById(config, typeId);\n};\n\n// returns true if contact's type exists and is a person type OR if contact's type is the hardcoded person type\nconst isPerson = (config, contact) => {\n const typeId = getTypeId(contact);\n const type = getTypeById(config, typeId) || { id: typeId };\n return isPersonType(type);\n};\n\nconst isPlace = (config, contact) => {\n const type = getContactType(config, contact);\n return isPlaceType(type);\n};\n\nconst isHardcodedType = type => HARDCODED_TYPES.includes(type);\n\nconst isOrphan = (type) => !type.parents || !type.parents.length;\n/**\n * Returns an array of child types for the given type id.\n * If parent is falsey, returns the types with no parent.\n */\nconst getChildren = (config, parentType) => {\n const types = getContactTypes(config);\n return types.filter(type => (!parentType && isOrphan(type)) || isParentOf(parentType, type));\n};\n\nconst getPlaceTypes = (config) => getContactTypes(config).filter(isPlaceType);\nconst getPersonTypes = (config) => getContactTypes(config).filter(isPersonType);\n\nmodule.exports = {\n getTypeId,\n getTypeById,\n isPersonType,\n isPlaceType,\n hasParents,\n isParentOf,\n getLeafPlaceTypes,\n getContactType,\n isPerson,\n isPlace,\n isHardcodedType,\n HARDCODED_TYPES,\n getContactTypes,\n getChildren,\n getPlaceTypes,\n getPersonTypes,\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\nconst utils = require('./utils');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nconst getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id);\n\nconst getContactIds = (contacts) => {\n const ids = [];\n contacts.forEach(doc => {\n if (!doc) {\n return;\n }\n\n const id = utils.getId(doc.contact);\n id && ids.push(id);\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n id && ids.push(id);\n });\n });\n\n return _.uniq(ids);\n};\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (utils.isReport(doc)) {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n if (!doc) {\n return;\n }\n const id = utils.getId(doc.contact);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.linked_docs[key] = deepCopy(contactDoc);\n }\n });\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = getContactIds(lineage);\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = getContactById(lineage, id);\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n if (placeLineage && placeLineage.length) {\n const placeDoc = placeLineage.shift();\n fillParentsInDocs(placeDoc, placeLineage);\n doc.place = placeDoc;\n }\n\n return doc;\n };\n\n /*\n * @returns {Object} subjectMaps\n * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid]\n * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid]\n */\n const fetchSubjectsUuids = (records) => {\n const shortcodes = [];\n const recordToPlaceUuidMap = new Map();\n const recordToPatientUuidMap = new Map();\n\n records.forEach(record => {\n if (!utils.isReport(record)) {\n return;\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n recordToPatientUuidMap.set(record._id, patientId);\n recordToPlaceUuidMap.set(record._id, placeId);\n\n shortcodes.push(patientId, placeId);\n });\n\n if (!shortcodes.some(shortcode => shortcode)) {\n return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap });\n }\n\n return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => {\n records.forEach(record => {\n const patientShortcode = recordToPatientUuidMap.get(record._id);\n recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode));\n\n const placeShortcode = recordToPlaceUuidMap.get(record._id);\n recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode));\n });\n\n return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap };\n });\n };\n\n /*\n * @returns {Object} lineages\n * @returns {Array} lineages.patientLineage\n * @returns {Array} lineages.placeLineage\n */\n const fetchSubjectLineage = (record) => {\n if (!utils.isReport(record)) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n\n if (!patientId && !placeId) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => {\n const patientUuid = shortcodeToUuidMap.get(patientId);\n const placeUuid = shortcodeToUuidMap.get(placeId);\n\n return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => {\n const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || [];\n const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || [];\n\n return { patientLineage, placeLineage };\n });\n });\n };\n\n /*\n * @returns {Map} map with [k, v] pairs of [shortcode, uuid]\n */\n const contactUuidByShortcode = function(shortcodes) {\n const keys = shortcodes\n .filter(shortcode => shortcode)\n .map(shortcode => [ 'shortcode', shortcode ]);\n\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n\n return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ])));\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n let placeLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchSubjectLineage(lineage[0])\n .then((lineages = {}) => {\n patientLineage = lineages.patientLineage;\n placeLineage = lineages.placeLineage;\n\n return fetchContacts(lineage.concat(patientLineage, placeLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n fillContactsInDocs(placeLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (utils.isReport(doc)) {\n const contactId = utils.getId(doc.contact);\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = utils.isReport(doc) ? doc.contact : doc;\n ids.push(...getContactIds(selfAndParents(startLineageFrom)));\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid]\n let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid]\n let subjectDocs;\n\n return fetchSubjectsUuids(hydratedDocs)\n .then((subjectMaps) => {\n placeUuids = subjectMaps.placeUuids;\n patientUuids = subjectMaps.patientUuids;\n\n return fetchDocs([...placeUuids.values(), ...patientUuids.values()]);\n })\n .then(subjects => {\n subjectDocs = subjects;\n knownDocs.push(...subjects);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(subjectDocs),\n ...collectLeafContactIds(subjectDocs),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return getContactById(parents, id);\n });\n };\n\n const isReport = utils.isReport(doc);\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = getContactById(subjectDocs, patientUuids.get(doc._id));\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n const placeDoc = getContactById(subjectDocs, placeUuids.get(doc._id));\n const placeLineage = reconstructLineage(placeDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const utils = require('./utils');\nconst RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n\n if (utils.validLinkedDocs(doc)) {\n Object.keys(doc.linked_docs).forEach(key => {\n doc.linked_docs[key] = utils.getId(doc.linked_docs[key]);\n });\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","const contactTypeUtils = require('@medic/contact-types-utils');\nconst _ = require('lodash/core');\n\nconst isContact = doc => {\n if (!doc) {\n return;\n }\n\n return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type);\n};\n\nconst getId = (item) => item && (typeof item === 'string' ? item : item._id);\n\n// don't process linked docs for non-contact types\n// linked_docs property should be a key-value object\nconst validLinkedDocs = doc => {\n return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs);\n};\n\nconst isReport = (doc) => doc.type === 'data_record';\nconst getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id;\nconst getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id;\n\n\nmodule.exports = {\n getId,\n validLinkedDocs,\n isReport,\n getPatientId,\n getPlaceId,\n};\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.9.1\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.1';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!contactId) {\n return false;\n }\n\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countPassedEmissionsByGroup = {};\n const countEmissionsByGroup = {};\n\n relevantEmissions.forEach(emission => {\n const groupBy = emission.groupBy;\n if (!groupBy) {\n return;\n }\n if (!countPassedEmissionsByGroup[groupBy]) {\n countPassedEmissionsByGroup[groupBy] = 0;\n countEmissionsByGroup[groupBy] = 0;\n }\n countEmissionsByGroup[groupBy]++;\n if (emission.pass) {\n countPassedEmissionsByGroup[groupBy]++;\n }\n });\n\n const groups = Object.keys(countEmissionsByGroup);\n\n return {\n pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","/**\n * CHT Script API - Auth module\n * Provides tools related to Authentication.\n */\n\nconst ADMIN_ROLE = '_admin';\nconst NATIONAL_ADMIN_ROLE = 'national_admin'; // Deprecated: kept for backwards compatibility: #4525\nconst DISALLOWED_PERMISSION_PREFIX = '!';\n\nconst isAdmin = (userRoles) => {\n if (!Array.isArray(userRoles)) {\n return false;\n }\n\n return [ADMIN_ROLE, NATIONAL_ADMIN_ROLE].some(role => userRoles.includes(role));\n};\n\nconst groupPermissions = (permissions) => {\n const groups = { allowed: [], disallowed: [] };\n\n permissions.forEach(permission => {\n if (permission.indexOf(DISALLOWED_PERMISSION_PREFIX) === 0) {\n // Removing the DISALLOWED_PERMISSION_PREFIX and keeping the permission name.\n groups.disallowed.push(permission.substring(1));\n } else {\n groups.allowed.push(permission);\n }\n });\n\n return groups;\n};\n\nconst debug = (reason, permissions, roles) => {\n // eslint-disable-next-line no-console\n console.debug(`CHT Script API :: ${reason}. User roles: ${roles}. Wanted permissions: ${permissions}`);\n};\n\nconst checkUserHasPermissions = (permissions, userRoles, chtPermissionsSettings, expectedToHave) => {\n return permissions.every(permission => {\n const roles = chtPermissionsSettings[permission];\n\n if (!roles) {\n return !expectedToHave;\n }\n\n return expectedToHave === userRoles.some(role => roles.includes(role));\n });\n};\n\nconst verifyParameters = (permissions, userRoles, chtPermissionsSettings) => {\n if (!Array.isArray(permissions) || !permissions.length) {\n debug('Permissions to verify are not provided or have invalid type');\n return false;\n }\n\n if (!Array.isArray(userRoles)) {\n debug('User roles are not provided or have invalid type');\n return false;\n }\n\n if (!chtPermissionsSettings || !Object.keys(chtPermissionsSettings).length) {\n debug('CHT-Core\\'s configured permissions are not provided');\n return false;\n }\n\n return true;\n};\n\n/**\n * Verify if the user's role has the permission(s).\n * @param permissions {string | string[]} Permission(s) to verify\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasPermissions = (permissions, userRoles, chtPermissionsSettings) => {\n if (permissions && typeof permissions === 'string') {\n permissions = [ permissions ];\n }\n\n if (!verifyParameters(permissions, userRoles, chtPermissionsSettings)) {\n return false;\n }\n\n const { allowed, disallowed } = groupPermissions(permissions);\n\n if (isAdmin(userRoles)) {\n if (disallowed.length) {\n debug('Disallowed permission(s) found for admin', permissions, userRoles);\n return false;\n }\n // Admin has the permissions automatically.\n return true;\n }\n\n const hasDisallowed = !checkUserHasPermissions(disallowed, userRoles, chtPermissionsSettings, false);\n const hasAllowed = checkUserHasPermissions(allowed, userRoles, chtPermissionsSettings, true);\n\n if (hasDisallowed) {\n debug('Found disallowed permission(s)', permissions, userRoles);\n return false;\n }\n\n if (!hasAllowed) {\n debug('Missing permission(s)', permissions, userRoles);\n return false;\n }\n\n return true;\n};\n\n/**\n * Verify if the user's role has all the permissions of any of the provided groups.\n * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => {\n if (!verifyParameters(permissionsGroupList, userRoles, chtPermissionsSettings)) {\n return false;\n }\n\n const validGroup = permissionsGroupList.every(permissions => Array.isArray(permissions));\n if (!validGroup) {\n debug('Permission groups to verify are invalid');\n return false;\n }\n\n const allowedGroupList = [];\n const disallowedGroupList = [];\n permissionsGroupList.forEach(permissions => {\n const { allowed, disallowed } = groupPermissions(permissions);\n allowedGroupList.push(allowed);\n disallowedGroupList.push(disallowed);\n });\n\n if (isAdmin(userRoles)) {\n if (disallowedGroupList.every(permissions => permissions.length)) {\n debug('Disallowed permission(s) found for admin', permissionsGroupList, userRoles);\n return false;\n }\n // Admin has the permissions automatically.\n return true;\n }\n\n const hasAnyPermissionGroup = permissionsGroupList.some((permissions, i) => {\n const hasAnyAllowed = checkUserHasPermissions(allowedGroupList[i], userRoles, chtPermissionsSettings, true);\n const hasAnyDisallowed = !checkUserHasPermissions(disallowedGroupList[i], userRoles, chtPermissionsSettings, false);\n // Checking the 'permission group' is valid.\n return hasAnyAllowed && !hasAnyDisallowed;\n });\n\n if (!hasAnyPermissionGroup) {\n debug('No matching permissions', permissionsGroupList, userRoles);\n return false;\n }\n\n return true;\n};\n\nmodule.exports = {\n hasPermissions,\n hasAnyPermission\n};\n","/**\n * CHT Script API - Index\n * Builds and exports a versioned API from feature modules.\n * Whenever possible keep this file clean by defining new features in modules.\n */\nconst auth = require('./auth');\n\n/**\n * Verify if the user's role has the permission(s).\n * @param permissions {string | string[]} Permission(s) to verify\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasPermissions = (permissions, userRoles, chtPermissionsSettings) => {\n return auth.hasPermissions(permissions, userRoles, chtPermissionsSettings);\n};\n\n/**\n * Verify if the user's role has all the permissions of any of the provided groups.\n * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => {\n return auth.hasAnyPermission(permissionsGroupList, userRoles, chtPermissionsSettings);\n};\n\nmodule.exports = {\n v1: {\n hasPermissions,\n hasAnyPermission\n }\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\nconst utils = require('./utils');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nconst getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id);\n\nconst getContactIds = (contacts) => {\n const ids = [];\n contacts.forEach(doc => {\n if (!doc) {\n return;\n }\n\n const id = utils.getId(doc.contact);\n id && ids.push(id);\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n id && ids.push(id);\n });\n });\n\n return _.uniq(ids);\n};\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (utils.isReport(doc)) {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n if (!doc) {\n return;\n }\n const id = utils.getId(doc.contact);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.linked_docs[key] = deepCopy(contactDoc);\n }\n });\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = getContactIds(lineage);\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = getContactById(lineage, id);\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n if (placeLineage && placeLineage.length) {\n const placeDoc = placeLineage.shift();\n fillParentsInDocs(placeDoc, placeLineage);\n doc.place = placeDoc;\n }\n\n return doc;\n };\n\n /*\n * @returns {Object} subjectMaps\n * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid]\n * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid]\n */\n const fetchSubjectsUuids = (records) => {\n const shortcodes = [];\n const recordToPlaceUuidMap = new Map();\n const recordToPatientUuidMap = new Map();\n\n records.forEach(record => {\n if (!utils.isReport(record)) {\n return;\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n recordToPatientUuidMap.set(record._id, patientId);\n recordToPlaceUuidMap.set(record._id, placeId);\n\n shortcodes.push(patientId, placeId);\n });\n\n if (!shortcodes.some(shortcode => shortcode)) {\n return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap });\n }\n\n return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => {\n records.forEach(record => {\n const patientShortcode = recordToPatientUuidMap.get(record._id);\n recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode));\n\n const placeShortcode = recordToPlaceUuidMap.get(record._id);\n recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode));\n });\n\n return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap };\n });\n };\n\n /*\n * @returns {Object} lineages\n * @returns {Array} lineages.patientLineage\n * @returns {Array} lineages.placeLineage\n */\n const fetchSubjectLineage = (record) => {\n if (!utils.isReport(record)) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n\n if (!patientId && !placeId) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => {\n const patientUuid = shortcodeToUuidMap.get(patientId);\n const placeUuid = shortcodeToUuidMap.get(placeId);\n\n return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => {\n const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || [];\n const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || [];\n\n return { patientLineage, placeLineage };\n });\n });\n };\n\n /*\n * @returns {Map} map with [k, v] pairs of [shortcode, uuid]\n */\n const contactUuidByShortcode = function(shortcodes) {\n const keys = shortcodes\n .filter(shortcode => shortcode)\n .map(shortcode => [ 'shortcode', shortcode ]);\n\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n\n return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ])));\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n let placeLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchSubjectLineage(lineage[0])\n .then((lineages = {}) => {\n patientLineage = lineages.patientLineage;\n placeLineage = lineages.placeLineage;\n\n return fetchContacts(lineage.concat(patientLineage, placeLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n fillContactsInDocs(placeLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (utils.isReport(doc)) {\n const contactId = utils.getId(doc.contact);\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = utils.isReport(doc) ? doc.contact : doc;\n ids.push(...getContactIds(selfAndParents(startLineageFrom)));\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid]\n let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid]\n\n return fetchSubjectsUuids(hydratedDocs)\n .then((subjectMaps) => {\n placeUuids = subjectMaps.placeUuids;\n patientUuids = subjectMaps.patientUuids;\n\n return fetchDocs([...placeUuids.values(), ...patientUuids.values()]);\n })\n .then(subjects => {\n knownDocs.push(...subjects);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(subjects),\n ...collectLeafContactIds(subjects),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return getContactById(parents, id);\n });\n };\n\n const isReport = utils.isReport(doc);\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = getContactById(knownDocs, patientUuids.get(doc._id));\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n const placeDoc = getContactById(knownDocs, placeUuids.get(doc._id));\n const placeLineage = reconstructLineage(placeDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const utils = require('./utils');\nconst RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n\n if (utils.validLinkedDocs(doc)) {\n Object.keys(doc.linked_docs).forEach(key => {\n doc.linked_docs[key] = utils.getId(doc.linked_docs[key]);\n });\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","const contactTypeUtils = require('@medic/contact-types-utils');\nconst _ = require('lodash/core');\n\nconst isContact = doc => {\n if (!doc) {\n return;\n }\n\n return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type);\n};\n\nconst getId = (item) => item && (typeof item === 'string' ? item : item._id);\n\n// don't process linked docs for non-contact types\n// linked_docs property should be a key-value object\nconst validLinkedDocs = doc => {\n return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs);\n};\n\nconst isReport = (doc) => doc.type === 'data_record';\nconst getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id;\nconst getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id;\n\n\nmodule.exports = {\n getId,\n validLinkedDocs,\n isReport,\n getPatientId,\n getPlaceId,\n};\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// Current version.\nvar VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\nvar isString = tagTester('String');\n\nvar isNumber = tagTester('Number');\n\nvar isDate = tagTester('Date');\n\nvar isRegExp = tagTester('RegExp');\n\nvar isError = tagTester('Error');\n\nvar isSymbol = tagTester('Symbol');\n\nvar isArrayBuffer = tagTester('ArrayBuffer');\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nvar isFunction$1 = isFunction;\n\nvar hasObjectTag = tagTester('Object');\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nvar isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nvar isArray = nativeIsArray || tagTester('Array');\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n}());\n\nvar isArguments$1 = isArguments;\n\n// Is a given object a finite number?\nfunction isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n// Is the given value `NaN`?\nfunction isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n// Internal helper to obtain the `byteLength` property of an object.\nvar getByteLength = shallowProperty('byteLength');\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nvar isBufferLike = createSizePropertyCheck(getByteLength);\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nvar isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n// Internal helper to obtain the `length` property of an object.\nvar getLength = shallowProperty('length');\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n}\n\n_$1.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_$1.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n_$1.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\nvar isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\nvar isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\nvar isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\nvar isWeakSet = tagTester('WeakSet');\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nvar extend = createAssigner(allKeys);\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nvar extendOwn = createAssigner(keys);\n\n// Fill in a given object with default properties.\nvar defaults = createAssigner(allKeys, true);\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath$1(path) {\n return isArray(path) ? path : [path];\n}\n_$1.toPath = toPath$1;\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return _$1.toPath(path);\n}\n\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_$1.iteratee = iteratee;\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n// A (possibly faster) way to get the current timestamp as an integer.\nvar now = Date.now || function() {\n return new Date().getTime();\n};\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n// Internal list of HTML entities for escaping.\nvar escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n// Function for escaping strings to HTML interpolation.\nvar _escape = createEscaper(escapeMap);\n\n// Internal list of HTML entities for unescaping.\nvar unescapeMap = invert(escapeMap);\n\n// Function for unescaping strings from HTML interpolation.\nvar _unescape = createEscaper(unescapeMap);\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nvar templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n}\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _$1;\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nvar bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nvar isArrayLike = createSizePropertyCheck(getLength);\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nvar bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nvar delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nvar defer = partial(delay, _$1, 1);\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nvar once = partial(before, 2);\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n// Returns the first index on an array-like that passes a truth test.\nvar findIndex = createPredicateIndexFinder(1);\n\n// Returns the last index on an array-like that passes a truth test.\nvar findLastIndex = createPredicateIndexFinder(-1);\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nvar indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nvar lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nvar reduce = createReduce(1);\n\n// The right-associative version of reduce, also known as `foldr`.\nvar reduceRight = createReduce(-1);\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n// Invoke a method (with arguments) on every item in a collection.\nvar invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return map(obj, property(key));\n}\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nvar groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nvar indexBy = group(function(result, value, key) {\n result[key] = value;\n});\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nvar countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n});\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nvar partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n// Return a copy of the object only containing the allowed properties.\nvar pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n// Return a copy of the object without the disallowed properties.\nvar omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return filter(array, Boolean);\n}\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return flatten$1(array, depth, false);\n}\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nvar difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n// Return a version of the array that does not contain the specified value(s).\nvar without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nvar union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n});\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nvar zip = restArguments(unzip);\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n}\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n}\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\n// Named Exports\n\nvar allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n};\n\n// Default Export\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n\nexports.VERSION = VERSION;\nexports._ = _;\nexports._escape = _escape;\nexports._unescape = _unescape;\nexports.after = after;\nexports.allKeys = allKeys;\nexports.before = before;\nexports.bind = bind;\nexports.bindAll = bindAll;\nexports.chain = chain;\nexports.chunk = chunk;\nexports.clone = clone;\nexports.compact = compact;\nexports.compose = compose;\nexports.constant = constant;\nexports.contains = contains;\nexports.countBy = countBy;\nexports.create = create;\nexports.debounce = debounce;\nexports.defaults = defaults;\nexports.defer = defer;\nexports.delay = delay;\nexports.difference = difference;\nexports.each = each;\nexports.every = every;\nexports.extend = extend;\nexports.extendOwn = extendOwn;\nexports.filter = filter;\nexports.find = find;\nexports.findIndex = findIndex;\nexports.findKey = findKey;\nexports.findLastIndex = findLastIndex;\nexports.findWhere = findWhere;\nexports.first = first;\nexports.flatten = flatten;\nexports.functions = functions;\nexports.get = get;\nexports.groupBy = groupBy;\nexports.has = has;\nexports.identity = identity;\nexports.indexBy = indexBy;\nexports.indexOf = indexOf;\nexports.initial = initial;\nexports.intersection = intersection;\nexports.invert = invert;\nexports.invoke = invoke;\nexports.isArguments = isArguments$1;\nexports.isArray = isArray;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBoolean = isBoolean;\nexports.isDataView = isDataView$1;\nexports.isDate = isDate;\nexports.isElement = isElement;\nexports.isEmpty = isEmpty;\nexports.isEqual = isEqual;\nexports.isError = isError;\nexports.isFinite = isFinite$1;\nexports.isFunction = isFunction$1;\nexports.isMap = isMap;\nexports.isMatch = isMatch;\nexports.isNaN = isNaN$1;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isRegExp = isRegExp;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isTypedArray = isTypedArray$1;\nexports.isUndefined = isUndefined;\nexports.isWeakMap = isWeakMap;\nexports.isWeakSet = isWeakSet;\nexports.iteratee = iteratee;\nexports.keys = keys;\nexports.last = last;\nexports.lastIndexOf = lastIndexOf;\nexports.map = map;\nexports.mapObject = mapObject;\nexports.matcher = matcher;\nexports.max = max;\nexports.memoize = memoize;\nexports.min = min;\nexports.mixin = mixin;\nexports.negate = negate;\nexports.noop = noop;\nexports.now = now;\nexports.object = object;\nexports.omit = omit;\nexports.once = once;\nexports.pairs = pairs;\nexports.partial = partial;\nexports.partition = partition;\nexports.pick = pick;\nexports.pluck = pluck;\nexports.property = property;\nexports.propertyOf = propertyOf;\nexports.random = random;\nexports.range = range;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reject = reject;\nexports.rest = rest;\nexports.restArguments = restArguments;\nexports.result = result;\nexports.sample = sample;\nexports.shuffle = shuffle;\nexports.size = size;\nexports.some = some;\nexports.sortBy = sortBy;\nexports.sortedIndex = sortedIndex;\nexports.tap = tap;\nexports.template = template;\nexports.templateSettings = templateSettings;\nexports.throttle = throttle;\nexports.times = times;\nexports.toArray = toArray;\nexports.toPath = toPath$1;\nexports.union = union;\nexports.uniq = uniq;\nexports.uniqueId = uniqueId;\nexports.unzip = unzip;\nexports.values = values;\nexports.where = where;\nexports.without = without;\nexports.wrap = wrap;\nexports.zip = zip;\n//# sourceMappingURL=underscore-node-f.cjs.map\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nvar underscoreNodeF = require('./underscore-node-f.cjs');\n\n\n\nmodule.exports = underscoreNodeF._;\n//# sourceMappingURL=underscore-node.cjs.map\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n cht: settings.chtScriptApi,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!contactId) {\n return false;\n }\n\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countPassedEmissionsByGroup = {};\n const countEmissionsByGroup = {};\n\n relevantEmissions.forEach(emission => {\n const groupBy = emission.groupBy;\n if (!groupBy) {\n return;\n }\n if (!countPassedEmissionsByGroup[groupBy]) {\n countPassedEmissionsByGroup[groupBy] = 0;\n countEmissionsByGroup[groupBy] = 0;\n }\n countEmissionsByGroup[groupBy]++;\n if (emission.pass) {\n countPassedEmissionsByGroup[groupBy]++;\n }\n });\n\n const groups = Object.keys(countEmissionsByGroup);\n\n return {\n pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arDz = moment.defineLocale('ar-dz', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'birneçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var br = moment.defineLocale('br', {\n months: \"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu\".split(\n '_'\n ),\n monthsShort: \"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker\".split('_'),\n weekdays: \"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn\".split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: \"[Warc'hoazh da] LT\",\n nextWeek: 'dddd [da] LT',\n lastDay: \"[Dec'h da] LT\",\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: \"%s 'zo\",\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha invalida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var hi = moment.defineLocale('hi', {\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n '_'\n ),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n );\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return (\n '(' +\n monthsSubjective[momentToFormat.month()] +\n '|' +\n monthsNominative[momentToFormat.month()] +\n ')'\n );\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'masiku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Пагоҳ соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js language configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js language configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.25.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.25.3';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (doc.type === 'data_record') {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n const id = doc && doc.contact && doc.contact._id;\n const contactDoc = id && contacts.find(contactDoc => contactDoc._id === id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = _.uniq(\n lineage\n .map(function(doc) {\n return doc && doc.contact && doc.contact._id;\n })\n .filter(function(id) {\n return !!id;\n })\n );\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = lineage.find(function(doc) {\n return doc && doc._id === id;\n });\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n return doc;\n };\n\n const findPatientId = function(doc) {\n return (\n doc.type === 'data_record' &&\n (\n (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) ||\n doc.patient_id\n )\n );\n };\n\n const fetchPatientUuids = function(records) {\n const patientIds = records.map(record => findPatientId(record));\n if (!patientIds.some(patientId => patientId)) {\n return Promise.resolve([]);\n }\n return contactUuidByPatientIds(patientIds);\n };\n\n const fetchPatientLineage = function(record) {\n return fetchPatientUuids([record])\n .then(function([uuid]) {\n if (!uuid) {\n return [];\n }\n\n return fetchLineageById(uuid);\n });\n };\n\n const contactUuidByPatientIds = function(patientIds) {\n const keys = patientIds\n .filter(patientId => patientId)\n .map(patientId => [ 'shortcode', patientId ]);\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n return patientIds.map(patientId => findIdWithKey(patientId) || patientId);\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchPatientLineage(lineage[0])\n .then(function(result) {\n patientLineage = result;\n return fetchContacts(lineage.concat(patientLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (doc.type === 'data_record') {\n const contactId = doc.contact && doc.contact._id;\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = doc.type === 'data_record' ? doc.contact : doc;\n const contactIds = selfAndParents(startLineageFrom)\n .map(parent => parent.contact && parent.contact._id)\n .filter(id => id);\n\n ids.push(...contactIds);\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids;\n let patientDocs;\n\n return fetchPatientUuids(hydratedDocs)\n .then(function(uuids) {\n patientUuids = uuids;\n return fetchDocs(patientUuids);\n })\n .then(function(patients) {\n patientDocs = patients;\n knownDocs.push(...patients);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(patientDocs),\n ...collectLeafContactIds(patientDocs),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc, i) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return parents.find(doc => doc._id === id);\n });\n };\n\n const isReport = doc.type === 'data_record';\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = patientUuids[i] && patientDocs.find(known => known._id === patientUuids[i]);\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.9.1\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.1';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countEmissionsByGroup = relevantEmissions\n .filter(emission => emission.groupBy)\n .reduce((agg, curr) => {\n if (!agg[curr.groupBy]) {\n agg[curr.groupBy] = 0;\n }\n\n agg[curr.groupBy]++;\n return agg;\n }, {});\n\n const groups = Object.keys(countEmissionsByGroup);\n return {\n pass: groups.filter(group => countEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * @license\n * Lodash (Custom Build) \n * Build: `lodash core -o ./dist/lodash.core.js`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Error message constants. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_PARTIAL_FLAG = 32;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n /** Used to match HTML entities and HTML characters. */\n var reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n array.push.apply(array, values);\n return array;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return baseMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /*--------------------------------------------------------------------------*/\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Built-in value references. */\n var objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeIsFinite = root.isFinite,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n return value instanceof LodashWrapper\n ? value\n : new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n }\n\n LodashWrapper.prototype = baseCreate(lodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n object[key] = value;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !false)\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return baseFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n return objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n var baseIsArguments = noop;\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : baseGetTag(object),\n othTag = othIsArr ? arrayTag : baseGetTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n stack || (stack = []);\n var objStack = find(stack, function(entry) {\n return entry[0] == object;\n });\n var othStack = find(stack, function(entry) {\n return entry[0] == other;\n });\n if (objStack && othStack) {\n return objStack[1] == other;\n }\n stack.push([object, other]);\n stack.push([other, object]);\n if (isSameTag && !objIsObj) {\n var result = (objIsArr)\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n stack.pop();\n return result;\n }\n }\n if (!isSameTag) {\n return false;\n }\n var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(func) {\n if (typeof func == 'function') {\n return func;\n }\n if (func == null) {\n return identity;\n }\n return (typeof func == 'object' ? baseMatches : baseProperty)(func);\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var props = nativeKeys(source);\n return function(object) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length];\n if (!(key in object &&\n baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG)\n )) {\n return false;\n }\n }\n return true;\n };\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, props) {\n object = Object(object);\n return reduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source) {\n return baseSlice(source, 0, source.length);\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n return reduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = false;\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = false;\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return fn.apply(isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined;\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n var compared;\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!baseSome(other, function(othValue, othIndex) {\n if (!indexOf(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n var compared;\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return func.apply(this, otherArgs);\n };\n }\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = identity;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n return baseFilter(array, Boolean);\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (typeof fromIndex == 'number') {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n } else {\n fromIndex = 0;\n }\n var index = (fromIndex || 0) - 1,\n isReflexive = value === value;\n\n while (++index < length) {\n var other = array[index];\n if ((isReflexive ? other === value : other !== other)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n start = start == null ? 0 : +start;\n end = end === undefined ? length : +end;\n return length ? baseSlice(array, start, end) : [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseEvery(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n return baseFilter(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n return baseEach(collection, baseIteratee(iteratee));\n }\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n return baseMap(collection, baseIteratee(iteratee));\n }\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n collection = isArrayLike(collection) ? collection : nativeKeys(collection);\n return collection.length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseSome(collection, baseIteratee(predicate));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n function sortBy(collection, iteratee) {\n var index = 0;\n iteratee = baseIteratee(iteratee);\n\n return baseMap(baseMap(collection, function(value, key, collection) {\n return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) };\n }).sort(function(object, other) {\n return compareAscending(object.criteria, other.criteria) || (object.index - other.index);\n }), baseProperty('value'));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials);\n });\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n if (!isObject(value)) {\n return value;\n }\n return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = baseIsDate;\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n return !nativeKeys(value).length;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = baseIsRegExp;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!isArrayLike(value)) {\n return values(value);\n }\n return value.length ? copyArray(value) : [];\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n var toInteger = Number;\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n var toNumber = Number;\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n copyObject(source, nativeKeys(source), object);\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, nativeKeysIn(source), object);\n });\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : assign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasOwnProperty.call(object, path);\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n var keys = nativeKeys;\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n var keysIn = nativeKeysIn;\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n var value = object == null ? undefined : object[path];\n if (value === undefined) {\n value = defaultValue;\n }\n return isFunction(value) ? value.call(object) : value;\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n var iteratee = baseIteratee;\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(assign({}, source));\n }\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n baseEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.assignIn = assignIn;\n lodash.before = before;\n lodash.bind = bind;\n lodash.chain = chain;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.create = create;\n lodash.defaults = defaults;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.filter = filter;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.iteratee = iteratee;\n lodash.keys = keys;\n lodash.map = map;\n lodash.matches = matches;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.once = once;\n lodash.pick = pick;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.tap = tap;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.values = values;\n\n // Add aliases.\n lodash.extend = assignIn;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.clone = clone;\n lodash.escape = escape;\n lodash.every = every;\n lodash.find = find;\n lodash.forEach = forEach;\n lodash.has = has;\n lodash.head = head;\n lodash.identity = identity;\n lodash.indexOf = indexOf;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isBoolean = isBoolean;\n lodash.isDate = isDate;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isNaN = isNaN;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isRegExp = isRegExp;\n lodash.isString = isString;\n lodash.isUndefined = isUndefined;\n lodash.last = last;\n lodash.max = max;\n lodash.min = min;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.reduce = reduce;\n lodash.result = result;\n lodash.size = size;\n lodash.some = some;\n lodash.uniqueId = uniqueId;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Add `Array` methods to `lodash.prototype`.\n baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n /*--------------------------------------------------------------------------*/\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = lodash;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return lodash;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = lodash)._ = lodash;\n // Export for CommonJS support.\n freeExports._ = lodash;\n }\n else {\n // Export to the global object.\n root._ = lodash;\n }\n}.call(this));\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","module.exports = require(\"events\");;","module.exports = require(\"fs\");;","module.exports = require(\"path\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(__webpack_require__.s = \"./all-chts-bundle.js\");\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://cht-conf-test-harness/./all-chts-bundle.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/lineage/src/utils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-10/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js","webpack://cht-conf-test-harness//mnt/c/Users/kenns/cht-conf-test-harness/node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/moment.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/lineage/src/utils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/node_modules/lodash/uniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/node_modules/underscore/underscore.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/auth.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/cht-script-api/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/lineage/src/utils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-12/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/auth.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/cht-script-api/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/contact-types-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/lineage/src/utils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node-f.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/node_modules/underscore/underscore-node.cjs","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/af.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/az.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cs.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/da.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/dv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/el.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/et.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fa.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ga.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/he.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hu.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/id.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/is.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ja.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/jv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ka.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/km.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ko.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ku.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ky.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/me.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ml.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/my.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nb.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ne.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ro.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ru.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/se.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/si.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ss.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sv.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sw.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ta.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/te.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/th.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tr.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ur.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/vi.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/yo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js","webpack://cht-conf-test-harness//mnt/c/Users/kenns/cht-conf-test-harness/node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/moment.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/calendar-interval/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/lineage/src/hydration.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/lineage/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/lineage/src/minify.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/node_modules/lodash/uniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/registration-utils/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/arguments-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/array-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/charenc/charenc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/crypt/crypt.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/date-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/declare.js/declare.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/declare.js/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/extender/extender.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/extender/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/function-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/ht/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/is-buffer/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/is-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/leafy/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_DataView.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Promise.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Stack.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_Uint8Array.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_WeakMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayFilter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayLikeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayMap.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arrayPush.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_arraySome.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseGetAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseHasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsEqual.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsEqualDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsMatch.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIsTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseIteratee.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseMatches.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseMatchesProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseProperty.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_basePropertyDeep.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseTimes.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseUnary.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_castPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_equalArrays.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_equalByTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_equalObjects.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getAllKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getMatchData.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getSymbols.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getTag.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hasPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isIndex.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isPrototype.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_isStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_mapToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_matchesStrictComparable.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_memoizeCapped.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_nativeKeys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_nodeUtil.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_overArg.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackClear.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackDelete.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackGet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackHas.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stackSet.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_stringToPath.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_toKey.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/get.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/hasIn.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/identity.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isArguments.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isArrayLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isBuffer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isLength.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isObjectLike.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isSymbol.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/isTypedArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/keys.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/memoize.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/property.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/stubArray.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/stubFalse.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/toString.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/lodash/uniqBy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/md5/md5.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/medic-nootils/src/nootils.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/agenda.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/compile/common.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/compile/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/compile/transpile.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/conflict.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/constraint.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/constraintMatcher.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/context.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/executionStrategy.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/extended.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/flow.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/flowContainer.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/linkedList.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nextTick.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/adapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/aliasNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/alphaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/betaNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/equalityNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsFromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/existsNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/fromNotNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/joinReferenceNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/leftAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/helpers.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/leftMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/memory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/rightMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/table.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/misc/tupleEntry.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/node.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/notNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/propertyNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/rightAdapterNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/terminalNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/nodes/typeNode.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/constraint/parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/nool.parser.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/tokens.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/parser/nools/util.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/pattern.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/rule.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/nools/lib/workingMemory.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/object-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/promise-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/string-extended/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/node_modules/underscore/underscore.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/index.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/pouchdb-provider.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/provider-wireup.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/refresh-rules-emissions.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/rules-emitter.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/rules-state-store.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/target-state.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/task-states.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/transform-task-emission-to-doc.js","webpack://cht-conf-test-harness/./node_modules/cht-core-3-9/shared-libs/rules-engine/src/update-temporal-states.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Hash.js","webpack://cht-conf-test-harness/./node_modules/lodash/_ListCache.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Map.js","webpack://cht-conf-test-harness/./node_modules/lodash/_MapCache.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Set.js","webpack://cht-conf-test-harness/./node_modules/lodash/_SetCache.js","webpack://cht-conf-test-harness/./node_modules/lodash/_Symbol.js","webpack://cht-conf-test-harness/./node_modules/lodash/_arrayIncludes.js","webpack://cht-conf-test-harness/./node_modules/lodash/_arrayIncludesWith.js","webpack://cht-conf-test-harness/./node_modules/lodash/_assocIndexOf.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseFindIndex.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseGetTag.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseIndexOf.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseIsNaN.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseIsNative.js","webpack://cht-conf-test-harness/./node_modules/lodash/_baseUniq.js","webpack://cht-conf-test-harness/./node_modules/lodash/_cacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_coreJsData.js","webpack://cht-conf-test-harness/./node_modules/lodash/_createSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_freeGlobal.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getMapData.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getNative.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getRawTag.js","webpack://cht-conf-test-harness/./node_modules/lodash/_getValue.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashClear.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashDelete.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashGet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_hashSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_isKeyable.js","webpack://cht-conf-test-harness/./node_modules/lodash/_isMasked.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheClear.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheGet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_listCacheSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheClear.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheDelete.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheGet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_mapCacheSet.js","webpack://cht-conf-test-harness/./node_modules/lodash/_nativeCreate.js","webpack://cht-conf-test-harness/./node_modules/lodash/_objectToString.js","webpack://cht-conf-test-harness/./node_modules/lodash/_root.js","webpack://cht-conf-test-harness/./node_modules/lodash/_setCacheAdd.js","webpack://cht-conf-test-harness/./node_modules/lodash/_setCacheHas.js","webpack://cht-conf-test-harness/./node_modules/lodash/_setToArray.js","webpack://cht-conf-test-harness/./node_modules/lodash/_strictIndexOf.js","webpack://cht-conf-test-harness/./node_modules/lodash/_toSource.js","webpack://cht-conf-test-harness/./node_modules/lodash/core.js","webpack://cht-conf-test-harness/./node_modules/lodash/eq.js","webpack://cht-conf-test-harness/./node_modules/lodash/isFunction.js","webpack://cht-conf-test-harness/./node_modules/lodash/isObject.js","webpack://cht-conf-test-harness/./node_modules/lodash/noop.js","webpack://cht-conf-test-harness/./node_modules/lodash/uniq.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/af.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-dz.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-kw.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-ly.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-ma.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-sa.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar-tn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ar.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/az.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/be.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bg.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bm.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bn-bd.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/br.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/bs.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ca.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/cs.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/cv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/cy.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/da.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/de-at.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/de-ch.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/de.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/dv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/el.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-au.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-ca.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-gb.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-ie.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-il.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-in.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-nz.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/en-sg.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/eo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es-do.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es-mx.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es-us.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/es.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/et.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/eu.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fa.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fil.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fr-ca.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fr-ch.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/fy.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ga.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gd.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gom-deva.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gom-latn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/gu.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/he.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hu.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/hy-am.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/id.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/is.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/it-ch.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/it.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ja.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/jv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ka.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/kk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/km.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/kn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ko.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ku.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ky.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lb.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lt.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/lv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/me.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ml.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ms-my.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ms.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/mt.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/my.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nb.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ne.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nl-be.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/nn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/oc-lnc.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pa-in.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pt-br.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/pt.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ro.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ru.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sd.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/se.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/si.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sq.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sr-cyrl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ss.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sv.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/sw.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ta.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/te.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tet.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tg.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/th.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tl-ph.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tlh.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tr.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tzl.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tzm-latn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/tzm.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ug-cn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/uk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/ur.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/uz-latn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/uz.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/vi.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/x-pseudo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/yo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-cn.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-hk.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-mo.js","webpack://cht-conf-test-harness/./node_modules/moment/locale/zh-tw.js","webpack://cht-conf-test-harness//mnt/c/Users/kenns/cht-conf-test-harness/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://cht-conf-test-harness/./node_modules/moment/moment.js","webpack://cht-conf-test-harness/external \"events\"","webpack://cht-conf-test-harness/external \"fs\"","webpack://cht-conf-test-harness/external \"path\"","webpack://cht-conf-test-harness/webpack/bootstrap","webpack://cht-conf-test-harness/webpack/runtime/hasOwnProperty shorthand","webpack://cht-conf-test-harness/webpack/runtime/node module decorator","webpack://cht-conf-test-harness/webpack/startup"],"names":[],"mappings":";;;;;;;;;;AACA;AACA;AACA,WAAW,mBAAO,CAAC,wEAAiC;AACpD,uBAAuB,mBAAO,CAAC,4HAA6C;AAC5E,sBAAsB,mBAAO,CAAC,0HAA4C;AAC1E,qBAAqB,mBAAO,CAAC,gHAAuC;AACpE,kBAAkB,mBAAO,CAAC,0IAAyD;AACnF,aAAa,mBAAO,CAAC,wKAAkE;AACvF,aAAa,mBAAO,CAAC,sGAAkC;AACvD,GAAG;AACH;AACA,WAAW,mBAAO,CAAC,0EAAkC;AACrD,uBAAuB,mBAAO,CAAC,8HAA8C;AAC7E,sBAAsB,mBAAO,CAAC,4HAA6C;AAC3E,qBAAqB,mBAAO,CAAC,kHAAwC;AACrE,kBAAkB,mBAAO,CAAC,4IAA0D;AACpF,aAAa,mBAAO,CAAC,0KAAmE;AACxF,aAAa,mBAAO,CAAC,wGAAmC;AACxD,GAAG;AACH;AACA,WAAW,mBAAO,CAAC,0EAAkC;AACrD,uBAAuB,mBAAO,CAAC,8HAA8C;AAC7E,sBAAsB,mBAAO,CAAC,4HAA6C;AAC3E,qBAAqB,mBAAO,CAAC,kHAAwC;AACrE,kBAAkB,mBAAO,CAAC,4IAA0D;AACpF,aAAa,mBAAO,CAAC,0KAAmE;AACxF,aAAa,mBAAO,CAAC,wGAAmC;AACxD,GAAG;AACH;AACA,WAAW,mBAAO,CAAC,0EAAkC;AACrD,uBAAuB,mBAAO,CAAC,8HAA8C;AAC7E,sBAAsB,mBAAO,CAAC,4HAA6C;AAC3E,qBAAqB,mBAAO,CAAC,kHAAwC;AACrE,kBAAkB,mBAAO,CAAC,4IAA0D;AACpF,aAAa,mBAAO,CAAC,0KAAmE;AACxF,aAAa,mBAAO,CAAC,wGAAmC;AACxD,kBAAkB,mBAAO,CAAC,sHAA0C;AACpE,GAAG;AACH;AACA,WAAW,mBAAO,CAAC,0EAAkC;AACrD,uBAAuB,mBAAO,CAAC,8HAA8C;AAC7E,sBAAsB,mBAAO,CAAC,4HAA6C;AAC3E,qBAAqB,mBAAO,CAAC,kHAAwC;AACrE,kBAAkB,mBAAO,CAAC,4IAA0D;AACpF,aAAa,mBAAO,CAAC,0KAAmE;AACxF,aAAa,mBAAO,CAAC,wGAAmC;AACxD,kBAAkB,mBAAO,CAAC,sHAA0C;AACpE,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjDA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;AAC9B,cAAc,mBAAO,CAAC,8EAAS;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8BAA8B,yEAAyE;AACvG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,cAAc;AACd,KAAK;AACL;;AAEA;AACA,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;;AAEA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB,OAAO;AACP,KAAK;AACL;;AAEA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC,qBAAqB;AACrB,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5fA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,sFAAa;AACvB,EAAE,mBAAO,CAAC,gFAAU;AACpB;;;;;;;;;;;ACPA,cAAc,mBAAO,CAAC,8EAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC7DA,yBAAyB,mBAAO,CAAC,6GAA4B;AAC7D,UAAU,mBAAO,CAAC,kDAAa;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9BA,aAAa,mBAAO,CAAC,kDAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,oJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,0GAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,oJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,sGAAU,wBAAwB,mBAAO,CAAC,0GAAY,YAAY,mBAAO,CAAC,4GAAa,YAAY,mBAAO,CAAC,kHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,sGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU;AAC3D,qCAAqC,mBAAO,CAAC,0GAAY;AACzD,0BAA0B,mBAAO,CAAC,4GAAa;AAC/C,0BAA0B,mBAAO,CAAC,kHAAgB;AAClD,0BAA0B,mBAAO,CAAC,oHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,yGAAY;AAClC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,6FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,qBAAqB,mBAAO,CAAC,uHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,aAAa,mBAAO,CAAC,uGAAW;AAChC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,yGAAY;AACnC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,iIAAwB;AAC1D,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,yIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,UAAU,mBAAO,CAAC,+FAAO;AACzB,YAAY,mBAAO,CAAC,mGAAS;AAC7B,YAAY,mBAAO,CAAC,qGAAU;AAC9B,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,8BAA8B,mBAAO,CAAC,yIAA4B;AAClE,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,eAAe,mBAAO,CAAC,2GAAa;AACpC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,2GAAa;AACpC,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,6HAAsB;AACtD,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,uGAAW;AACjC,YAAY,mBAAO,CAAC,qGAAU;AAC9B,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,WAAW,mBAAO,CAAC,iGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,uGAAW;AAChC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,SAAS,mBAAO,CAAC,6FAAM;AACvB,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,uGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,2GAAa;AACpC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,cAAc,mBAAO,CAAC,yGAAY;AAClC,eAAe,mBAAO,CAAC,yGAAY;AACnC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,YAAY,mBAAO,CAAC,qGAAU;AAC9B,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,aAAa,gIAAuB;AACpC,iBAAiB,mBAAO,CAAC,wGAAW;AACpC,YAAY,+HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,qHAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,oGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC,aAAa,mBAAO,CAAC,+GAAW;AAChC,wBAAwB,mBAAO,CAAC,kIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,qGAAS;AAC7B,aAAa,mBAAO,CAAC,gHAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,yKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,+IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,+HAAsB;AACtD,aAAa,mBAAO,CAAC,+GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,qIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,8HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,gHAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,4GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,kHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sGAAU;AACnC,cAAc,mBAAO,CAAC,gHAAe;AACrC;AACA,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,sHAAkB;AACxC,cAAc,mBAAO,CAAC,wHAAmB;AACzC,cAAc,mBAAO,CAAC,4GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,0FAAI;AACvC,yBAAyB,mBAAO,CAAC,0GAAY;AAC7C,cAAc,mBAAO,CAAC,gGAAO;AAC7B,4BAA4B,mBAAO,CAAC,gHAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,4GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,sHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,wGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,2IAAgC;AAClD,yBAAyB,mBAAO,CAAC,4GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,oGAAQ;AAC3B,WAAW,mBAAO,CAAC,oGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,gHAAW;AACjC,oBAAoB,mBAAO,CAAC,sHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,0GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,mBAAmB,+IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,0GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,iBAAiB,mBAAO,CAAC,gIAAmB,iBAAiB,mBAAO,CAAC,kIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,WAAW,mBAAO,CAAC,6GAAa;AAChC,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,gHAAW;AACjC,iBAAiB,mBAAO,CAAC,iHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,8GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,eAAe,mBAAO,CAAC,kHAAY;AACnC,eAAe,mBAAO,CAAC,kHAAY;AACnC,cAAc,mBAAO,CAAC,gHAAW;AACjC,eAAe,mBAAO,CAAC,kHAAY;AACnC,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,iBAAiB,mBAAO,CAAC,sHAAc;AACvC,qBAAqB,mBAAO,CAAC,8HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,gIAAmB;AACjD,uBAAuB,mBAAO,CAAC,kIAAoB;AACnD,eAAe,mBAAO,CAAC,kHAAY;AACnC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,mBAAmB,mBAAO,CAAC,0HAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,kHAAY;AACnC,wBAAwB,mBAAO,CAAC,oIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA,gBAAgB,oJAA8B;AAC9C,YAAY,mBAAO,CAAC,iHAAS;AAC7B,iBAAiB,mBAAO,CAAC,2HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,kHAAY;AACnC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC,cAAc,mBAAO,CAAC,2GAAY;AAClC,kBAAkB,4IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;AAClC,WAAW,mBAAO,CAAC,6GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,WAAW,mBAAO,CAAC,6GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,qIAAqB;AACxD,qBAAqB,mBAAO,CAAC,qIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,wHAAa;AAClC,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,oHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,oHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,gHAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8GAAU;AAC/B,cAAc,mBAAO,CAAC,0GAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,0GAAY;AAClC,iBAAiB,mBAAO,CAAC,gHAAc;AACvC,kBAAkB,2IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,0GAAY,GAAG,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,kHAAgB,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,wHAAmB,GAAG,mBAAO,CAAC,0HAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,gHAAe,GAAG,mBAAO,CAAC,kHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA,8CAA6C,CAAC,cAAc,EAAC;;AAE7D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,eAAe;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI,KAAwB;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,mBAAmB;AACnB;;AAEA;AACA;AACA,GAAG;AACH,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,0BAA0B,EAAE,iBAAiB;AAC7C;AACA;;AAEA;AACA,sBAAsB,8BAA8B;AACpD,yBAAyB;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gDAAgD,iBAAiB;;AAEjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,eAAe;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD;AACA;AACA,GAAG;AACH;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wCAAwC;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe;AACf,SAAS;AACT,eAAe;AACf,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,cAAc;AACd,YAAY;AACZ,eAAe;AACf,aAAa;AACb,aAAa;AACb,aAAa;AACb,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,kBAAkB;AAClB,YAAY;AACZ,aAAa;AACb,cAAc;AACd,iBAAiB;AACjB,cAAc;AACd,YAAY;AACZ,iBAAiB;AACjB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,WAAW;AACX,eAAe;AACf,WAAW;AACX,gBAAgB;AAChB,eAAe;AACf,eAAe;AACf,eAAe;AACf,oBAAoB;AACpB,cAAc;AACd,cAAc;AACd,mBAAmB;AACnB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,kBAAkB;AAClB,cAAc;AACd,iBAAiB;AACjB,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,kBAAkB;AAClB,aAAa;AACb,eAAe;AACf,aAAa;AACb,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,gBAAgB;AAChB,gBAAgB;AAChB,oBAAoB;AACpB,mBAAmB;AACnB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,mBAAmB;AACnB,WAAW;AACX,iBAAiB;AACjB,eAAe;AACf,WAAW;AACX,eAAe;AACf,WAAW;AACX,aAAa;AACb,cAAc;AACd,YAAY;AACZ,WAAW;AACX,cAAc;AACd,YAAY;AACZ,YAAY;AACZ,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,gBAAgB;AAChB,kBAAkB;AAClB,cAAc;AACd,aAAa;AACb,cAAc;AACd,mBAAmB;AACnB,cAAc;AACd,YAAY;AACZ,qBAAqB;AACrB,cAAc;AACd,cAAc;AACd,eAAe;AACf,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,mBAAmB;AACnB,WAAW;AACX,gBAAgB;AAChB,wBAAwB;AACxB,gBAAgB;AAChB,aAAa;AACb,eAAe;AACf,cAAc;AACd,aAAa;AACb,YAAY;AACZ,gBAAgB;AAChB,aAAa;AACb,cAAc;AACd,aAAa;AACb,eAAe;AACf,YAAY;AACZ,WAAW;AACX;;;;;;;;;;;AC7mEA;AACA;AACA;AACA;;AAEA,sBAAsB,mBAAO,CAAC,oIAAyB;;;;AAIvD;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,yGAAoB;AACpD,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,yBAAyB,mBAAO,CAAC,uGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,0GAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,8BAA8B,mBAAO,CAAC,uHAA2B;AACjE,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,6BAA6B,mBAAO,CAAC,qHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,mCAAmC,mBAAO,CAAC,qIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,gBAAgB,mBAAO,CAAC,sHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,0FAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,iGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;AC3SL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;ACpLA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,2GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sI;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,uIAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACniLD,eAAe,mBAAO,CAAC,wGAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;AAC9B,cAAc,mBAAO,CAAC,8EAAS;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8BAA8B,yEAAyE;AACvG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,cAAc;AACd,KAAK;AACL;;AAEA;AACA,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;;AAEA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB,OAAO;AACP,KAAK;AACL;;AAEA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC,qBAAqB;AACrB,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9fA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,sFAAa;AACvB,EAAE,mBAAO,CAAC,gFAAU;AACpB;;;;;;;;;;;ACPA,cAAc,mBAAO,CAAC,8EAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC7DA,yBAAyB,mBAAO,CAAC,6GAA4B;AAC7D,UAAU,mBAAO,CAAC,kDAAa;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,iBAAiB,mBAAO,CAAC,qHAAe;AACxC,cAAc,mBAAO,CAAC,+GAAY;AAClC,cAAc,mBAAO,CAAC,+GAAY;AAClC,cAAc,mBAAO,CAAC,+GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,6HAAmB;AAChD,sBAAsB,mBAAO,CAAC,+HAAoB;AAClD,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,qBAAqB,mBAAO,CAAC,6HAAmB;AAChD,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,iHAAa;AACpC,kBAAkB,mBAAO,CAAC,uHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,kBAAkB,mBAAO,CAAC,uHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,SAAS,mBAAO,CAAC,mGAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,aAAa,mBAAO,CAAC,6GAAW;AAChC,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,qBAAqB,mBAAO,CAAC,6HAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,oBAAoB,mBAAO,CAAC,2HAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,mHAAc;AACvC,eAAe,mBAAO,CAAC,iHAAa;AACpC,eAAe,mBAAO,CAAC,+GAAY;AACnC,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,iHAAa;AACpC,oBAAoB,mBAAO,CAAC,2HAAkB;AAC9C,wBAAwB,mBAAO,CAAC,mIAAsB;AACtD,eAAe,mBAAO,CAAC,iHAAa;AACpC,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,yGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,uGAAQ;AAC1B,WAAW,mBAAO,CAAC,uGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,mHAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,yHAAiB;AAC5C,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,6GAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,yHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,yGAAS;AAC5B,gBAAgB,mBAAO,CAAC,mHAAc;AACtC,UAAU,mBAAO,CAAC,uGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,mHAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,qHAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,qHAAe;AACxC,eAAe,mBAAO,CAAC,+GAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,iHAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,aAAa,mBAAO,CAAC,4GAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,oJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,0GAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,oJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,sGAAU,wBAAwB,mBAAO,CAAC,0GAAY,YAAY,mBAAO,CAAC,4GAAa,YAAY,mBAAO,CAAC,kHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,sGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU;AAC3D,qCAAqC,mBAAO,CAAC,0GAAY;AACzD,0BAA0B,mBAAO,CAAC,4GAAa;AAC/C,0BAA0B,mBAAO,CAAC,kHAAgB;AAClD,0BAA0B,mBAAO,CAAC,oHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,yGAAY;AAClC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,6FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,qBAAqB,mBAAO,CAAC,uHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,aAAa,mBAAO,CAAC,uGAAW;AAChC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,yGAAY;AACnC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,iIAAwB;AAC1D,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,yIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,UAAU,mBAAO,CAAC,+FAAO;AACzB,YAAY,mBAAO,CAAC,mGAAS;AAC7B,YAAY,mBAAO,CAAC,qGAAU;AAC9B,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,8BAA8B,mBAAO,CAAC,yIAA4B;AAClE,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,eAAe,mBAAO,CAAC,2GAAa;AACpC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,2GAAa;AACpC,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,6HAAsB;AACtD,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,uGAAW;AACjC,YAAY,mBAAO,CAAC,qGAAU;AAC9B,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,WAAW,mBAAO,CAAC,iGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,uGAAW;AAChC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,SAAS,mBAAO,CAAC,6FAAM;AACvB,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,uGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,2GAAa;AACpC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,cAAc,mBAAO,CAAC,yGAAY;AAClC,eAAe,mBAAO,CAAC,yGAAY;AACnC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,YAAY,mBAAO,CAAC,qGAAU;AAC9B,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,aAAa,gIAAuB;AACpC,iBAAiB,mBAAO,CAAC,wGAAW;AACpC,YAAY,+HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,+GAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,oGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC,aAAa,mBAAO,CAAC,+GAAW;AAChC,wBAAwB,mBAAO,CAAC,kIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,qGAAS;AAC7B,aAAa,mBAAO,CAAC,gHAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,yKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,+IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,+HAAsB;AACtD,aAAa,mBAAO,CAAC,+GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,qIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,8HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,gHAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,4GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,kHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sGAAU;AACnC,cAAc,mBAAO,CAAC,gHAAe;AACrC;AACA,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,sHAAkB;AACxC,cAAc,mBAAO,CAAC,wHAAmB;AACzC,cAAc,mBAAO,CAAC,4GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,0FAAI;AACvC,yBAAyB,mBAAO,CAAC,0GAAY;AAC7C,cAAc,mBAAO,CAAC,gGAAO;AAC7B,4BAA4B,mBAAO,CAAC,gHAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,4GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,sHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,wGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,2IAAgC;AAClD,yBAAyB,mBAAO,CAAC,4GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,oGAAQ;AAC3B,WAAW,mBAAO,CAAC,oGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,gHAAW;AACjC,oBAAoB,mBAAO,CAAC,sHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,0GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,mBAAmB,+IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,0GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,iBAAiB,mBAAO,CAAC,gIAAmB,iBAAiB,mBAAO,CAAC,kIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,WAAW,mBAAO,CAAC,6GAAa;AAChC,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,gHAAW;AACjC,iBAAiB,mBAAO,CAAC,iHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,8GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,eAAe,mBAAO,CAAC,kHAAY;AACnC,eAAe,mBAAO,CAAC,kHAAY;AACnC,cAAc,mBAAO,CAAC,gHAAW;AACjC,eAAe,mBAAO,CAAC,kHAAY;AACnC,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,iBAAiB,mBAAO,CAAC,sHAAc;AACvC,qBAAqB,mBAAO,CAAC,8HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,gIAAmB;AACjD,uBAAuB,mBAAO,CAAC,kIAAoB;AACnD,eAAe,mBAAO,CAAC,kHAAY;AACnC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,mBAAmB,mBAAO,CAAC,0HAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,kHAAY;AACnC,wBAAwB,mBAAO,CAAC,oIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA,gBAAgB,oJAA8B;AAC9C,YAAY,mBAAO,CAAC,iHAAS;AAC7B,iBAAiB,mBAAO,CAAC,2HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,kHAAY;AACnC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC,cAAc,mBAAO,CAAC,2GAAY;AAClC,kBAAkB,4IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;AAClC,WAAW,mBAAO,CAAC,6GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,WAAW,mBAAO,CAAC,6GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,qIAAqB;AACxD,qBAAqB,mBAAO,CAAC,qIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,wHAAa;AAClC,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,oHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,oHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,gHAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8GAAU;AAC/B,cAAc,mBAAO,CAAC,0GAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,0GAAY;AAClC,iBAAiB,mBAAO,CAAC,gHAAc;AACvC,kBAAkB,2IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,0GAAY,GAAG,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,kHAAgB,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,wHAAmB,GAAG,mBAAO,CAAC,0HAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,gHAAe,GAAG,mBAAO,CAAC,kHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,KAA6B;AACnC,QAAQ,KAA4B;AACpC;AACA;AACA,IAAI,SAAS;AACb,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA,KAAK;AACL;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,wCAAwC;AACxC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB,eAAe;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAwB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,qBAAqB;AACrB;;AAEA;AACA;AACA,KAAK;AACL,iBAAiB;;AAEjB;AACA,kDAAkD,EAAE,iBAAiB;;AAErE;AACA,wBAAwB,8BAA8B;AACtD,2BAA2B;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,iBAAiB;;AAEnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAyC;AAC/C,IAAI,iCAAqB,EAAE,mCAAE;AAC7B;AACA,KAAK;AAAA,kGAAC;AACN;AACA,CAAC;;;;;;;;;;;AC3pDD;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,yGAAoB;AACpD,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,yBAAyB,mBAAO,CAAC,uGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,0GAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,8BAA8B,mBAAO,CAAC,uHAA2B;AACjE,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,6BAA6B,mBAAO,CAAC,qHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,mCAAmC,mBAAO,CAAC,qIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,gBAAgB,mBAAO,CAAC,sHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,0FAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,iGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;AC3SL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;ACpLA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,qCAAqC,OAAO,gBAAgB,MAAM,wBAAwB,YAAY;AACtG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,kBAAkB;AACzC,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,sBAAsB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW;AAC3C,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpKA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,mFAAQ;;AAE7B;AACA;AACA,uBAAuB,kBAAkB;AACzC,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW;AAC3C,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClCA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;AAC9B,cAAc,mBAAO,CAAC,8EAAS;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8BAA8B,yEAAyE;AACvG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,cAAc;AACd,KAAK;AACL;;AAEA;AACA,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;;AAEA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB,OAAO;AACP,KAAK;AACL;;AAEA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC,qBAAqB;AACrB,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5fA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,sFAAa;AACvB,EAAE,mBAAO,CAAC,gFAAU;AACpB;;;;;;;;;;;ACPA,cAAc,mBAAO,CAAC,8EAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC7DA,yBAAyB,mBAAO,CAAC,6GAA4B;AAC7D,UAAU,mBAAO,CAAC,kDAAa;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9BA,aAAa,mBAAO,CAAC,kDAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,oJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,0GAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,oJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,sGAAU,wBAAwB,mBAAO,CAAC,0GAAY,YAAY,mBAAO,CAAC,4GAAa,YAAY,mBAAO,CAAC,kHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,sGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU;AAC3D,qCAAqC,mBAAO,CAAC,0GAAY;AACzD,0BAA0B,mBAAO,CAAC,4GAAa;AAC/C,0BAA0B,mBAAO,CAAC,kHAAgB;AAClD,0BAA0B,mBAAO,CAAC,oHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,yGAAY;AAClC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,6FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,qBAAqB,mBAAO,CAAC,uHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,aAAa,mBAAO,CAAC,uGAAW;AAChC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,yGAAY;AACnC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,iIAAwB;AAC1D,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,yIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,UAAU,mBAAO,CAAC,+FAAO;AACzB,YAAY,mBAAO,CAAC,mGAAS;AAC7B,YAAY,mBAAO,CAAC,qGAAU;AAC9B,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,8BAA8B,mBAAO,CAAC,yIAA4B;AAClE,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,eAAe,mBAAO,CAAC,2GAAa;AACpC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,2GAAa;AACpC,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,6HAAsB;AACtD,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,uGAAW;AACjC,YAAY,mBAAO,CAAC,qGAAU;AAC9B,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,WAAW,mBAAO,CAAC,iGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,uGAAW;AAChC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,SAAS,mBAAO,CAAC,6FAAM;AACvB,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,uGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,2GAAa;AACpC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,cAAc,mBAAO,CAAC,yGAAY;AAClC,eAAe,mBAAO,CAAC,yGAAY;AACnC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,YAAY,mBAAO,CAAC,qGAAU;AAC9B,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,aAAa,gIAAuB;AACpC,iBAAiB,mBAAO,CAAC,wGAAW;AACpC,YAAY,+HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,qHAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,oGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC,aAAa,mBAAO,CAAC,+GAAW;AAChC,wBAAwB,mBAAO,CAAC,kIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,qGAAS;AAC7B,aAAa,mBAAO,CAAC,gHAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,yKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,+IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,+HAAsB;AACtD,aAAa,mBAAO,CAAC,+GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,qIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,8HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,gHAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,4GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,kHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sGAAU;AACnC,cAAc,mBAAO,CAAC,gHAAe;AACrC;AACA,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,sHAAkB;AACxC,cAAc,mBAAO,CAAC,wHAAmB;AACzC,cAAc,mBAAO,CAAC,4GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,0FAAI;AACvC,yBAAyB,mBAAO,CAAC,0GAAY;AAC7C,cAAc,mBAAO,CAAC,gGAAO;AAC7B,4BAA4B,mBAAO,CAAC,gHAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,4GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,sHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,wGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,2IAAgC;AAClD,yBAAyB,mBAAO,CAAC,4GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,oGAAQ;AAC3B,WAAW,mBAAO,CAAC,oGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,gHAAW;AACjC,oBAAoB,mBAAO,CAAC,sHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,0GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,mBAAmB,+IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,0GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,iBAAiB,mBAAO,CAAC,gIAAmB,iBAAiB,mBAAO,CAAC,kIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,WAAW,mBAAO,CAAC,6GAAa;AAChC,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,gHAAW;AACjC,iBAAiB,mBAAO,CAAC,iHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,8GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,eAAe,mBAAO,CAAC,kHAAY;AACnC,eAAe,mBAAO,CAAC,kHAAY;AACnC,cAAc,mBAAO,CAAC,gHAAW;AACjC,eAAe,mBAAO,CAAC,kHAAY;AACnC,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,iBAAiB,mBAAO,CAAC,sHAAc;AACvC,qBAAqB,mBAAO,CAAC,8HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,gIAAmB;AACjD,uBAAuB,mBAAO,CAAC,kIAAoB;AACnD,eAAe,mBAAO,CAAC,kHAAY;AACnC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,mBAAmB,mBAAO,CAAC,0HAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,kHAAY;AACnC,wBAAwB,mBAAO,CAAC,oIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA,gBAAgB,oJAA8B;AAC9C,YAAY,mBAAO,CAAC,iHAAS;AAC7B,iBAAiB,mBAAO,CAAC,2HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,kHAAY;AACnC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC,cAAc,mBAAO,CAAC,2GAAY;AAClC,kBAAkB,4IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;AAClC,WAAW,mBAAO,CAAC,6GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,WAAW,mBAAO,CAAC,6GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,qIAAqB;AACxD,qBAAqB,mBAAO,CAAC,qIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,wHAAa;AAClC,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,oHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,oHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,gHAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8GAAU;AAC/B,cAAc,mBAAO,CAAC,0GAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,0GAAY;AAClC,iBAAiB,mBAAO,CAAC,gHAAc;AACvC,kBAAkB,2IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,0GAAY,GAAG,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,kHAAgB,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,wHAAmB,GAAG,mBAAO,CAAC,0HAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,gHAAe,GAAG,mBAAO,CAAC,kHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA,8CAA6C,CAAC,cAAc,EAAC;;AAE7D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,eAAe;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI,KAAwB;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,mBAAmB;AACnB;;AAEA;AACA;AACA,GAAG;AACH,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,0BAA0B,EAAE,iBAAiB;AAC7C;AACA;;AAEA;AACA,sBAAsB,8BAA8B;AACpD,yBAAyB;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gDAAgD,iBAAiB;;AAEjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,eAAe;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD;AACA;AACA,GAAG;AACH;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wCAAwC;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe;AACf,SAAS;AACT,eAAe;AACf,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,cAAc;AACd,YAAY;AACZ,eAAe;AACf,aAAa;AACb,aAAa;AACb,aAAa;AACb,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,kBAAkB;AAClB,YAAY;AACZ,aAAa;AACb,cAAc;AACd,iBAAiB;AACjB,cAAc;AACd,YAAY;AACZ,iBAAiB;AACjB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,WAAW;AACX,eAAe;AACf,WAAW;AACX,gBAAgB;AAChB,eAAe;AACf,eAAe;AACf,eAAe;AACf,oBAAoB;AACpB,cAAc;AACd,cAAc;AACd,mBAAmB;AACnB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,kBAAkB;AAClB,cAAc;AACd,iBAAiB;AACjB,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,kBAAkB;AAClB,aAAa;AACb,eAAe;AACf,aAAa;AACb,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,gBAAgB;AAChB,gBAAgB;AAChB,oBAAoB;AACpB,mBAAmB;AACnB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,mBAAmB;AACnB,WAAW;AACX,iBAAiB;AACjB,eAAe;AACf,WAAW;AACX,eAAe;AACf,WAAW;AACX,aAAa;AACb,cAAc;AACd,YAAY;AACZ,WAAW;AACX,cAAc;AACd,YAAY;AACZ,YAAY;AACZ,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,gBAAgB;AAChB,kBAAkB;AAClB,cAAc;AACd,aAAa;AACb,cAAc;AACd,mBAAmB;AACnB,cAAc;AACd,YAAY;AACZ,qBAAqB;AACrB,cAAc;AACd,cAAc;AACd,eAAe;AACf,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,mBAAmB;AACnB,WAAW;AACX,gBAAgB;AAChB,wBAAwB;AACxB,gBAAgB;AAChB,aAAa;AACb,eAAe;AACf,cAAc;AACd,aAAa;AACb,YAAY;AACZ,gBAAgB;AAChB,aAAa;AACb,cAAc;AACd,aAAa;AACb,eAAe;AACf,YAAY;AACZ,WAAW;AACX;;;;;;;;;;;AC7mEA;AACA;AACA;AACA;;AAEA,sBAAsB,mBAAO,CAAC,oIAAyB;;;;AAIvD;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,yGAAoB;AACpD,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,yBAAyB,mBAAO,CAAC,uGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,0GAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,8BAA8B,mBAAO,CAAC,uHAA2B;AACjE,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,6BAA6B,mBAAO,CAAC,qHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,mCAAmC,mBAAO,CAAC,qIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,gBAAgB,mBAAO,CAAC,sHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,0FAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,iGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;AC3SL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;ACpLA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,qCAAqC,OAAO,gBAAgB,MAAM,wBAAwB,YAAY;AACtG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,kBAAkB;AACzC,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,sBAAsB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW;AAC3C,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpKA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,mFAAQ;;AAE7B;AACA;AACA,uBAAuB,kBAAkB;AACzC,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW;AAC3C,qBAAqB,SAAS;AAC9B,kCAAkC,OAAO;AACzC,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrGA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;AAC9B,cAAc,mBAAO,CAAC,8EAAS;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8BAA8B,yEAAyE;AACvG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,cAAc;AACd,KAAK;AACL;;AAEA;AACA,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;;AAEA;AACA,8BAA8B,uCAAuC;AACrE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;AAChB,OAAO;AACP,KAAK;AACL;;AAEA;AACA,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC,qBAAqB;AACrB,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5fA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,sFAAa;AACvB,EAAE,mBAAO,CAAC,gFAAU;AACpB;;;;;;;;;;;ACPA,cAAc,mBAAO,CAAC,8EAAS;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC7DA,yBAAyB,mBAAO,CAAC,6GAA4B;AAC7D,UAAU,mBAAO,CAAC,kDAAa;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC9BA,aAAa,mBAAO,CAAC,kDAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,oJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,0GAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,oJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,0HAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,sGAAU,wBAAwB,mBAAO,CAAC,0GAAY,YAAY,mBAAO,CAAC,4GAAa,YAAY,mBAAO,CAAC,kHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,sGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,sGAAU;AAC3D,qCAAqC,mBAAO,CAAC,0GAAY;AACzD,0BAA0B,mBAAO,CAAC,4GAAa;AAC/C,0BAA0B,mBAAO,CAAC,kHAAgB;AAClD,0BAA0B,mBAAO,CAAC,oHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;AAClC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,yGAAY;AAClC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,6FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,qBAAqB,mBAAO,CAAC,uHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,aAAa,mBAAO,CAAC,uGAAW;AAChC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,qGAAU;AAC9B,kBAAkB,mBAAO,CAAC,iHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,2GAAa;AACpC,eAAe,mBAAO,CAAC,yGAAY;AACnC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;AACnC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,iIAAwB;AAC1D,eAAe,mBAAO,CAAC,yGAAY;AACnC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,yIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,UAAU,mBAAO,CAAC,+FAAO;AACzB,YAAY,mBAAO,CAAC,mGAAS;AAC7B,YAAY,mBAAO,CAAC,qGAAU;AAC9B,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,8BAA8B,mBAAO,CAAC,yIAA4B;AAClE,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,uGAAW;AAChC,eAAe,mBAAO,CAAC,2GAAa;AACpC,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,2GAAa;AACpC,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,6HAAsB;AACtD,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,uGAAW;AACjC,YAAY,mBAAO,CAAC,qGAAU;AAC9B,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,mGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,WAAW,mBAAO,CAAC,iGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,2GAAa;AACpC,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,uGAAW;AAChC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,SAAS,mBAAO,CAAC,6FAAM;AACvB,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,uHAAmB;AAChD,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,+HAAuB;AACxD,WAAW,mBAAO,CAAC,iGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,uGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,iHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,2GAAa;AACpC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;AACzC,cAAc,mBAAO,CAAC,uGAAW;AACjC,cAAc,mBAAO,CAAC,yGAAY;AAClC,eAAe,mBAAO,CAAC,yGAAY;AACnC,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,uGAAW;AACjC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,uGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,+GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,6GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,UAAU,mBAAO,CAAC,iGAAQ;AAC1B,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,qHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,cAAc,mBAAO,CAAC,yGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,yHAAoB;AAClD,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,6GAAc;AACvC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,mGAAS;AAC5B,gBAAgB,mBAAO,CAAC,2GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,eAAe,mBAAO,CAAC,yGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,+GAAe;AACxC,mBAAmB,mBAAO,CAAC,iHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,gBAAgB,mBAAO,CAAC,6GAAc;AACtC,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,qHAAkB;AAC9C,eAAe,mBAAO,CAAC,2GAAa;AACpC,kBAAkB,mBAAO,CAAC,+GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,2HAAqB;AACpD,YAAY,mBAAO,CAAC,qGAAU;AAC9B,YAAY,mBAAO,CAAC,qGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,mHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,mHAAiB;AAC5C,eAAe,mBAAO,CAAC,2GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,aAAa,gIAAuB;AACpC,iBAAiB,mBAAO,CAAC,wGAAW;AACpC,YAAY,+HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,qHAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,oGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC,aAAa,mBAAO,CAAC,+GAAW;AAChC,wBAAwB,mBAAO,CAAC,kIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,qGAAS;AAC7B,aAAa,mBAAO,CAAC,gHAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,yKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,+IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,+HAAsB;AACtD,aAAa,mBAAO,CAAC,+GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,qIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,8HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,gHAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,4GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,kHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sGAAU;AACnC,cAAc,mBAAO,CAAC,gHAAe;AACrC;AACA,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,oHAAiB;AACvC,cAAc,mBAAO,CAAC,sHAAkB;AACxC,cAAc,mBAAO,CAAC,wHAAmB;AACzC,cAAc,mBAAO,CAAC,4GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,0FAAI;AACvC,yBAAyB,mBAAO,CAAC,0GAAY;AAC7C,cAAc,mBAAO,CAAC,gGAAO;AAC7B,4BAA4B,mBAAO,CAAC,gHAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,4GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,sHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,wGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,2IAAgC;AAClD,yBAAyB,mBAAO,CAAC,4GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,oGAAQ;AAC3B,WAAW,mBAAO,CAAC,oGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,gHAAW;AACjC,oBAAoB,mBAAO,CAAC,sHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,0GAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,mBAAmB,+IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,0GAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,iBAAiB,mBAAO,CAAC,gIAAmB,iBAAiB,mBAAO,CAAC,kIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,oHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,WAAW,mBAAO,CAAC,6GAAa;AAChC,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,gHAAW;AACjC,iBAAiB,mBAAO,CAAC,iHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,kHAAY;AACnC,WAAW,mBAAO,CAAC,6GAAa;AAChC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,8GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,eAAe,mBAAO,CAAC,kHAAY;AACnC,eAAe,mBAAO,CAAC,kHAAY;AACnC,cAAc,mBAAO,CAAC,gHAAW;AACjC,eAAe,mBAAO,CAAC,kHAAY;AACnC,kBAAkB,mBAAO,CAAC,wHAAe;AACzC,iBAAiB,mBAAO,CAAC,sHAAc;AACvC,qBAAqB,mBAAO,CAAC,8HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,gIAAmB;AACjD,uBAAuB,mBAAO,CAAC,kIAAoB;AACnD,eAAe,mBAAO,CAAC,kHAAY;AACnC,mBAAmB,mBAAO,CAAC,0HAAgB;AAC3C,mBAAmB,mBAAO,CAAC,0HAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,kHAAY;AACnC,wBAAwB,mBAAO,CAAC,oIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,kBAAkB,mBAAO,CAAC,iHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA,gBAAgB,oJAA8B;AAC9C,YAAY,mBAAO,CAAC,iHAAS;AAC7B,iBAAiB,mBAAO,CAAC,2HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,mHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,6GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,kHAAY;AACnC,iBAAiB,mBAAO,CAAC,iHAAe;AACxC,cAAc,mBAAO,CAAC,2GAAY;AAClC,kBAAkB,4IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;AAClC,WAAW,mBAAO,CAAC,6GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,wHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,0GAAQ;AAC3B,WAAW,mBAAO,CAAC,6GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,oHAAa;AACrC,cAAc,mBAAO,CAAC,2GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,qIAAqB;AACxD,qBAAqB,mBAAO,CAAC,qIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,wHAAa;AAClC,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,oHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,oHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,gHAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,8HAAqB;AACrD,iBAAiB,mBAAO,CAAC,gHAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,4GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,8GAAU;AAC/B,cAAc,mBAAO,CAAC,0GAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,0GAAY;AAClC,iBAAiB,mBAAO,CAAC,gHAAc;AACvC,kBAAkB,2IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,kHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,0GAAY,GAAG,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,kHAAgB,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,wHAAmB,GAAG,mBAAO,CAAC,0HAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,sGAAU,GAAG,mBAAO,CAAC,4GAAa,GAAG,mBAAO,CAAC,gHAAe,GAAG,mBAAO,CAAC,kHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA,8CAA6C,CAAC,cAAc,EAAC;;AAE7D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,eAAe;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI,KAAwB;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,mBAAmB;AACnB;;AAEA;AACA;AACA,GAAG;AACH,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,0BAA0B,EAAE,iBAAiB;AAC7C;AACA;;AAEA;AACA,sBAAsB,8BAA8B;AACpD,yBAAyB;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gDAAgD,iBAAiB;;AAEjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,eAAe;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD;AACA;AACA,GAAG;AACH;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wCAAwC;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe;AACf,SAAS;AACT,eAAe;AACf,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,cAAc;AACd,YAAY;AACZ,eAAe;AACf,aAAa;AACb,aAAa;AACb,aAAa;AACb,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,kBAAkB;AAClB,YAAY;AACZ,aAAa;AACb,cAAc;AACd,iBAAiB;AACjB,cAAc;AACd,YAAY;AACZ,iBAAiB;AACjB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,WAAW;AACX,eAAe;AACf,WAAW;AACX,gBAAgB;AAChB,eAAe;AACf,eAAe;AACf,eAAe;AACf,oBAAoB;AACpB,cAAc;AACd,cAAc;AACd,mBAAmB;AACnB,eAAe;AACf,qBAAqB;AACrB,iBAAiB;AACjB,kBAAkB;AAClB,cAAc;AACd,iBAAiB;AACjB,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB,kBAAkB;AAClB,aAAa;AACb,eAAe;AACf,aAAa;AACb,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,gBAAgB;AAChB,gBAAgB;AAChB,oBAAoB;AACpB,mBAAmB;AACnB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,mBAAmB;AACnB,WAAW;AACX,iBAAiB;AACjB,eAAe;AACf,WAAW;AACX,eAAe;AACf,WAAW;AACX,aAAa;AACb,cAAc;AACd,YAAY;AACZ,WAAW;AACX,cAAc;AACd,YAAY;AACZ,YAAY;AACZ,aAAa;AACb,eAAe;AACf,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,gBAAgB;AAChB,kBAAkB;AAClB,cAAc;AACd,aAAa;AACb,cAAc;AACd,mBAAmB;AACnB,cAAc;AACd,YAAY;AACZ,qBAAqB;AACrB,cAAc;AACd,cAAc;AACd,eAAe;AACf,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,mBAAmB;AACnB,WAAW;AACX,gBAAgB;AAChB,wBAAwB;AACxB,gBAAgB;AAChB,aAAa;AACb,eAAe;AACf,cAAc;AACd,aAAa;AACb,YAAY;AACZ,gBAAgB;AAChB,aAAa;AACb,cAAc;AACd,aAAa;AACb,eAAe;AACf,YAAY;AACZ,WAAW;AACX;;;;;;;;;;;AC7mEA;AACA;AACA;AACA;;AAEA,sBAAsB,mBAAO,CAAC,oIAAyB;;;;AAIvD;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,yGAAoB;AACpD,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,yBAAyB,mBAAO,CAAC,uGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,gBAAgB;AACjC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AClGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,0GAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,+DAA+D,OAAO;AACtE,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC3KA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,8BAA8B,mBAAO,CAAC,uHAA2B;AACjE,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,2GAAqB;AACrD,6BAA6B,mBAAO,CAAC,qHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,SAAS,QAAQ,EAAE;AAC5C;AACA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACxTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,mGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,+FAAe;AAC1C,mCAAmC,mBAAO,CAAC,qIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gGAAO;AAC7B,gBAAgB,mBAAO,CAAC,sHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,0FAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,iGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;AC3SL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;ACpLA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,+FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnHD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,0GAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qI;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,sIAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACriLD,eAAe,mBAAO,CAAC,uGAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,6BAA6B;AAC5C;AACA;AACA;;;;;;;;;;;ACpEA,UAAU,mBAAO,CAAC,kDAAa;AAC/B,SAAS,mBAAO,CAAC,kDAAa;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,wCAAwC;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACtaA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE,mBAAO,CAAC,qFAAa;AACvB,EAAE,mBAAO,CAAC,+EAAU;AACpB;;;;;;;;;;;ACPA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA,mCAAmC,oCAAoC;AACvE;AACA,sCAAsC,MAAM;AAC5C;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACtDA,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,iBAAiB,mBAAO,CAAC,oHAAe;AACxC,cAAc,mBAAO,CAAC,8GAAY;AAClC,cAAc,mBAAO,CAAC,8GAAY;AAClC,cAAc,mBAAO,CAAC,8GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,4HAAmB;AAChD,sBAAsB,mBAAO,CAAC,8HAAoB;AAClD,mBAAmB,mBAAO,CAAC,wHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,wHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,0HAAkB;AAC9C,qBAAqB,mBAAO,CAAC,4HAAmB;AAChD,kBAAkB,mBAAO,CAAC,sHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,gHAAa;AACpC,kBAAkB,mBAAO,CAAC,sHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,sHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,kBAAkB,mBAAO,CAAC,sHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,SAAS,mBAAO,CAAC,kGAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,aAAa,mBAAO,CAAC,4GAAW;AAChC,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,qBAAqB,mBAAO,CAAC,4HAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,oBAAoB,mBAAO,CAAC,0HAAkB;AAC9C,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,oBAAoB,mBAAO,CAAC,0HAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,kHAAc;AACvC,eAAe,mBAAO,CAAC,gHAAa;AACpC,eAAe,mBAAO,CAAC,8GAAY;AACnC,eAAe,mBAAO,CAAC,gHAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,gHAAa;AACpC,oBAAoB,mBAAO,CAAC,0HAAkB;AAC9C,wBAAwB,mBAAO,CAAC,kIAAsB;AACtD,eAAe,mBAAO,CAAC,gHAAa;AACpC,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,wGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,sGAAQ;AAC1B,WAAW,mBAAO,CAAC,sGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,kHAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,wHAAiB;AAC5C,eAAe,mBAAO,CAAC,gHAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,4GAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,wHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,wGAAS;AAC5B,gBAAgB,mBAAO,CAAC,kHAAc;AACtC,UAAU,mBAAO,CAAC,sGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,kHAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,oHAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,oHAAe;AACxC,eAAe,mBAAO,CAAC,8GAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,gHAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,aAAa,mBAAO,CAAC,2GAAa;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvFA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,qDAAqD,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa;;AAE/F;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;ACzCD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,yHAAoB;AAClH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACrpBD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,KAAK;;AAEL;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA,KAAK;;AAEL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC/FD;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA,6BAA6B,IAAI;AACjC,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB,6BAA6B,UAAU;AACvC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,aAAa,oCAAoC;AACjD;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,uBAAuB,KAAK;AAC5B,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC;AACnC,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA,uBAAuB,KAAK;AAC5B,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C;AACA,uBAAuB,KAAK;AAC5B;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,uBAAuB,YAAY;AACnC,uBAAuB,YAAY;AACnC,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD,qDAAqD;AACrD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,kDAAkD;AAClD,mDAAmD;AACnD;AACA;AACA,iDAAiD;AACjD,kDAAkD;AAClD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,oDAAoD;AACpD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,4DAA4D;AAC5D,0DAA0D;AAC1D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA,uBAAuB,KAAK;AAC5B,uBAAuB,KAAK;AAC5B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,oDAAoD;AACpD,8CAA8C;AAC9C,kDAAkD;AAClD,kDAAkD;AAClD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,+DAA+D;AAC/D,yEAAyE,KAAK;AAC9E;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,KAAK;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,oBAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB,sCAAsC;AACtC;AACA,2HAA2H;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,wCAAwC,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,iHAAgB;;AAE7G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC36BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD,wBAAwB;AACxB,4BAA4B;AAC5B;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;;AAGA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,6DAA6D,oBAAoB;AACjF,8CAA8C,yBAAyB;AACvE,6DAA6D;AAC7D,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;;AAGA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,iDAAiD,8BAA8B;AAC/E,4CAA4C,yBAAyB;AACrE,4CAA4C,yBAAyB;AACrE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC;AACA;AACA,KAAK,MAAM,EAIN;AACL,CAAC;;;;;;;;;;;;;;ACz5BD,mJAAwC,C;;;;;;;;;;ACAxC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;AAET;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,qGAAU;;AAE9D;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AC1FD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,oBAAoB,OAAO,EAAE,OAAO,EAAE,OAAO,sBAAsB;AACnE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa;AACb;AACA,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,yGAAY;;AAEhE;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC,a;;;;;;;;;;AC3hBD,mJAAyC,C;;;;;;;;;;ACAzC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,4CAA4C,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,yHAAoB;;AAErH;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACzPD;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,8DAA8D,QAAQ;AACtE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA,SAAS;;;AAGT;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,sCAAsC,mBAAO,CAAC,qGAAU,wBAAwB,mBAAO,CAAC,yGAAY,YAAY,mBAAO,CAAC,2GAAa,YAAY,mBAAO,CAAC,iHAAgB;;AAEzK;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChQD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,uCAAuC,mBAAO,CAAC,qGAAU;;AAEzD;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;AClfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kDAAkD;AACxG,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,yCAAyC,mBAAO,CAAC,qGAAU;AAC3D,qCAAqC,mBAAO,CAAC,yGAAY;AACzD,0BAA0B,mBAAO,CAAC,2GAAa;AAC/C,0BAA0B,mBAAO,CAAC,iHAAgB;AAClD,0BAA0B,mBAAO,CAAC,mHAAiB;AACnD;;AAEA;AACA,KAAK,MAAM,EAeN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACt5BD,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,cAAc,mBAAO,CAAC,wGAAY;AAClC,cAAc,mBAAO,CAAC,wGAAY;AAClC,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,sHAAmB;AAChD,sBAAsB,mBAAO,CAAC,wHAAoB;AAClD,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,qBAAqB,mBAAO,CAAC,sHAAmB;AAChD,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,0GAAa;AACpC,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,eAAe,mBAAO,CAAC,0GAAa;AACpC,eAAe,mBAAO,CAAC,0GAAa;AACpC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,kBAAkB,mBAAO,CAAC,8GAAe;AACzC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;AACnC,cAAc,mBAAO,CAAC,wGAAY;AAClC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,SAAS,mBAAO,CAAC,4FAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,eAAe,mBAAO,CAAC,0GAAa;AACpC,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,cAAc,mBAAO,CAAC,sGAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,sGAAW;AAChC,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,qBAAqB,mBAAO,CAAC,sHAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,oBAAoB,mBAAO,CAAC,oHAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,wHAAoB;AAClD,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,oGAAU;AAC9B,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,aAAa,mBAAO,CAAC,sGAAW;AAChC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;AACnC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,YAAY,mBAAO,CAAC,oGAAU;AAC9B,kBAAkB,mBAAO,CAAC,gHAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,4GAAc;AACvC,eAAe,mBAAO,CAAC,0GAAa;AACpC,eAAe,mBAAO,CAAC,wGAAY;AACnC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,eAAe,mBAAO,CAAC,wGAAY;AACnC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,0BAA0B,mBAAO,CAAC,gIAAwB;AAC1D,eAAe,mBAAO,CAAC,wGAAY;AACnC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,8BAA8B,mBAAO,CAAC,wIAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,UAAU,mBAAO,CAAC,8FAAO;AACzB,YAAY,mBAAO,CAAC,kGAAS;AAC7B,YAAY,mBAAO,CAAC,oGAAU;AAC9B,yBAAyB,mBAAO,CAAC,8HAAuB;AACxD,8BAA8B,mBAAO,CAAC,wIAA4B;AAClE,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,sGAAW;AAChC,eAAe,mBAAO,CAAC,0GAAa;AACpC,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,0GAAa;AACpC,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,wBAAwB,mBAAO,CAAC,4HAAsB;AACtD,eAAe,mBAAO,CAAC,0GAAa;AACpC,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,sGAAW;AACjC,YAAY,mBAAO,CAAC,oGAAU;AAC9B,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,WAAW,mBAAO,CAAC,kGAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,WAAW,mBAAO,CAAC,gGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,0GAAa;AACpC,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,sGAAW;AAChC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,SAAS,mBAAO,CAAC,4FAAM;AACvB,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA;AACA;;AAEA;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,sHAAmB;AAChD,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,WAAW,mBAAO,CAAC,gGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,gBAAgB,mBAAO,CAAC,4GAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,8HAAuB;AACxD,WAAW,mBAAO,CAAC,gGAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,sGAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,gHAAgB;AAC1C,gBAAgB,mBAAO,CAAC,0GAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,0GAAa;AACpC,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,cAAc,mBAAO,CAAC,wGAAY;AAClC,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,cAAc,mBAAO,CAAC,wGAAY;AAClC,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,0GAAa;AACpC,kBAAkB,mBAAO,CAAC,8GAAe;AACzC,cAAc,mBAAO,CAAC,sGAAW;AACjC,cAAc,mBAAO,CAAC,wGAAY;AAClC,eAAe,mBAAO,CAAC,wGAAY;AACnC,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,cAAc,mBAAO,CAAC,sGAAW;AACjC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,kGAAS;AAC5B,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,UAAU,mBAAO,CAAC,gGAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,sGAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,4GAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,8GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,gBAAgB,mBAAO,CAAC,4GAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,UAAU,mBAAO,CAAC,gGAAQ;AAC1B,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,oBAAoB,mBAAO,CAAC,oHAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,cAAc,mBAAO,CAAC,wGAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,wHAAoB;AAClD,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,4GAAc;AACvC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,kGAAS;AAC5B,gBAAgB,mBAAO,CAAC,0GAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,eAAe,mBAAO,CAAC,wGAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,8GAAe;AACxC,mBAAmB,mBAAO,CAAC,gHAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,0HAAqB;AACpD,gBAAgB,mBAAO,CAAC,4GAAc;AACtC,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,oHAAkB;AAC9C,eAAe,mBAAO,CAAC,0GAAa;AACpC,kBAAkB,mBAAO,CAAC,8GAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,uBAAuB,mBAAO,CAAC,0HAAqB;AACpD,YAAY,mBAAO,CAAC,oGAAU;AAC9B,YAAY,mBAAO,CAAC,oGAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,kHAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,mBAAmB,mBAAO,CAAC,kHAAiB;AAC5C,eAAe,mBAAO,CAAC,0GAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/C,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA,cAAc,mBAAO,CAAC,+FAAO;AAC7B,aAAa,+HAAuB;AACpC,iBAAiB,mBAAO,CAAC,uGAAW;AACpC,YAAY,8HAAsB;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC/JD,UAAU,mBAAO,CAAC,8GAAY;;AAE9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,aAAa;AACtD,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA,qBAAqB,mBAAmB,EAAE;AAC1C;;AAEA;AACA;;;;;;;;;;;AC/GA,2BAA2B,mBAAO,CAAC,mGAAO,E;;;;;;;;;;;ACA7B;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,wDAA8B;;;AAGjD;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,4DAA4D,yBAAyB;AACrF;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,qCAAqC,mBAAmB,yBAAyB;AACjF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC,E;;;;;;;;;;;AC7LD;AACa;AACb,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL,0BAA0B,+CAA+C;AACzE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA,aAAa;;AAEb;AACA;AACA,6DAA6D,2BAA2B,iGAAiG;AACzL;AACA,aAAa;AACb;AACA,+EAA+E;AAC/E;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,sBAAsB;AACtB,qBAAqB,iB;;;;;;;;;;;ACzErB;AACa;AACb,WAAW,mBAAO,CAAC,4GAAa;AAChC,aAAa,mBAAO,CAAC,8GAAW;AAChC,wBAAwB,mBAAO,CAAC,iIAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,oGAAS;AAC7B,aAAa,mBAAO,CAAC,+GAAU;AAC/B;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,0CAA0C,gCAAgC;AAC1E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED,aAAa;AACb;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,wKAAoD;;;;;;;;;;;;;;ACrMpD,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;AACA;AACA;AACA,gBAAgB,8IAA6B;AAC7C,wBAAwB,mBAAO,CAAC,8HAAsB;AACtD,aAAa,mBAAO,CAAC,8GAAW;;AAEhC;AACA;AACA,uEAAuE;AACvE,4BAA4B;;AAE5B;AACA,uEAAuE;AACvE,KAAK;AACL,+CAA+C,oBAAoB,2BAA2B,sBAAsB;AACpH;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA,6BAA6B;AAC7B,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,KAAK;AACL;AACA;AACA,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B,uCAAuC;AACvC,sCAAsC;AACtC,6CAA6C,kBAAkB,qCAAqC,aAAa,2GAA2G,8BAA8B;AAC1P,qDAAqD,0BAA0B,4BAA4B;AAC3G,yBAAyB,2GAA2G,sBAAsB;AAC1J;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,kEAAkE;AAClE;AACA;AACA;AACA;AACA,4HAA4H;AAC5H,KAAK;AACL;AACA;AACA;AACA,gEAAgE;AAChE,KAAK;AACL,sCAAsC;;;AAGtC;AACA,iIAAiI,GAAG,eAAe;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,eAAe,EAAE;AACjB,gBAAgB;AAChB,eAAe,IAAI;AACnB;AACA;;;;;;;;;;;;;AClLA,UAAU,oIAAyB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,gBAAgB;AAChB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;;;;ACtDa;;AAEb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oCAAoC,mBAAO,CAAC,6HAAqB;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED,2BAA2B,WAAW,oBAAoB;AAC1D,2BAA2B,WAAW,oBAAoB;;AAE1D;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,WAAW,yCAAyC;AACjE,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;AAC1D,aAAa,WAAW,gCAAgC;AACxD,aAAa,WAAW,kCAAkC;;;AAG1D;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACjQY;;AAEb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,+GAAc;;AAElC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD;AACjH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB;AACnB;AACA,KAAK;AACL,uHAAuH,YAAY,kEAAkE;AACrM;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,8BAA8B;AAC9B;AACA,E;;;;;;;;;;;;AC7da;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;ACvID,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA,eAAe,mBAAO,CAAC,2GAAY;AACnC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;ACvGD,UAAU,mBAAO,CAAC,iHAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,qGAAU;AACnC,cAAc,mBAAO,CAAC,+GAAe;AACrC;AACA,cAAc,mBAAO,CAAC,mHAAiB;AACvC,cAAc,mBAAO,CAAC,mHAAiB;AACvC,cAAc,mBAAO,CAAC,qHAAkB;AACxC,cAAc,mBAAO,CAAC,uHAAmB;AACzC,cAAc,mBAAO,CAAC,2GAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,yFAAI;AACvC,yBAAyB,mBAAO,CAAC,yGAAY;AAC7C,cAAc,mBAAO,CAAC,+FAAO;AAC7B,4BAA4B,mBAAO,CAAC,+GAAc;;;;;;;;;;;;;ACnJrC;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA,YAAY,mBAAO,CAAC,2GAAS;AAC7B,mBAAmB,wDAA8B;AACjD,SAAS,mBAAO,CAAC,qHAAiB;AAClC;AACA,wBAAwB,mBAAO,CAAC,6HAAqB;AACrD,iBAAiB,mBAAO,CAAC,uGAAU;;AAEnC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,E;;;;;;;;;;;;ACpHY;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA,kBAAkB,0IAAgC;AAClD,yBAAyB,mBAAO,CAAC,2GAAY;AAC7C;AACA,WAAW,mBAAO,CAAC,mGAAQ;AAC3B,WAAW,mBAAO,CAAC,mGAAQ;;AAE3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,kBAAM;AACzB,cAAc,mBAAO,CAAC,+GAAW;AACjC,oBAAoB,mBAAO,CAAC,qHAAiB;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf,eAAe;;AAEf,kBAAkB;AAClB;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;;AAEA,YAAY;;AAEZ,eAAe;AACf;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,S;;;;;;;;;;;ACzEb,cAAc,mBAAO,CAAC,yGAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;;;;ACpCA,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,mBAAmB,8IAAmC;;AAEtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,gBAAgB,mBAAO,CAAC,mHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;;AC9BY;AACb,WAAW,mBAAO,CAAC,yGAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACnBD,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,iBAAiB,mBAAO,CAAC,+HAAmB,iBAAiB,mBAAO,CAAC,iIAAoB;;AAEzF;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC9PD,gBAAgB,mBAAO,CAAC,mHAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACzCD,kBAAkB,mBAAO,CAAC,uHAAe;AACzC,WAAW,mBAAO,CAAC,4GAAa;AAChC,cAAc,mBAAO,CAAC,0GAAY;AAClC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AClGD,cAAc,mBAAO,CAAC,+GAAW;AACjC,iBAAiB,mBAAO,CAAC,gHAAe;;;AAGxC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC5KD,eAAe,mBAAO,CAAC,iHAAY;AACnC,WAAW,mBAAO,CAAC,4GAAa;AAChC,iBAAiB,mBAAO,CAAC,gHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0GAAY;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;ACrND,eAAe,mBAAO,CAAC,iHAAY;AACnC,WAAW,mBAAO,CAAC,4GAAa;AAChC,iBAAiB,mBAAO,CAAC,gHAAe;AACxC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0GAAY;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9JY;AACb,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;AACA;AACA,cAAc,mBAAO,CAAC,6GAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,gHAAe;AACzC;AACA;AACA,gBAAgB,mBAAO,CAAC,mHAAa;AACrC,mBAAmB,mBAAO,CAAC,yHAAgB;AAC3C,eAAe,mBAAO,CAAC,iHAAY;AACnC,eAAe,mBAAO,CAAC,iHAAY;AACnC,cAAc,mBAAO,CAAC,+GAAW;AACjC,eAAe,mBAAO,CAAC,iHAAY;AACnC,kBAAkB,mBAAO,CAAC,uHAAe;AACzC,iBAAiB,mBAAO,CAAC,qHAAc;AACvC,qBAAqB,mBAAO,CAAC,6HAAkB;AAC/C,sBAAsB,mBAAO,CAAC,+HAAmB;AACjD,uBAAuB,mBAAO,CAAC,iIAAoB;AACnD,eAAe,mBAAO,CAAC,iHAAY;AACnC,mBAAmB,mBAAO,CAAC,yHAAgB;AAC3C,mBAAmB,mBAAO,CAAC,yHAAgB;;AAE3C;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5PD,eAAe,mBAAO,CAAC,iHAAY;AACnC,wBAAwB,mBAAO,CAAC,mIAAqB;;AAErD;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;AC5DD,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,kBAAkB,mBAAO,CAAC,gHAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;AC3GD,WAAW,mBAAO,CAAC,uHAAe;;AAElC;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;ACjCD,iBAAiB;;AAEjB,wFAAwF,qBAAqB;;AAE7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,I;;;;;;;;;;;ACtJD,aAAa,mBAAO,CAAC,kHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;AACA,gBAAgB,mJAA8B;AAC9C,YAAY,mBAAO,CAAC,gHAAS;AAC7B,iBAAiB,mBAAO,CAAC,0HAAc;;;AAGvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;;AAEA,CAAC,a;;;;;;;;;;;ACzID,aAAa,mBAAO,CAAC,kHAAU;;AAE/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC,a;;;;;;;;;;;ACXD,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA,yBAAyB,uBAAuB;AAChD;AACA,SAAS;;AAET;AACA,iCAAiC,SAAS;AAC1C;AACA,SAAS;;AAET;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,a;;;;;;;;;;;AC9KD,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AC7CD,WAAW,mBAAO,CAAC,4GAAa;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0GAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AC5HD,eAAe,mBAAO,CAAC,iHAAY;AACnC,iBAAiB,mBAAO,CAAC,gHAAe;AACxC,cAAc,mBAAO,CAAC,0GAAY;AAClC,kBAAkB,2IAAiC;;;AAGnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,oBAAoB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA,CAAC,a;;;;;;;;;;;AC9QD,gBAAgB,mBAAO,CAAC,mHAAa;AACrC,cAAc,mBAAO,CAAC,0GAAY;AAClC,WAAW,mBAAO,CAAC,4GAAa;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;AC9CD,WAAW,mBAAO,CAAC,uHAAe;;AAElC;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;ACjCD,WAAW,mBAAO,CAAC,yGAAQ;AAC3B,WAAW,mBAAO,CAAC,4GAAa;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC,a;;;;;;;;;;;AClED,gBAAgB,mBAAO,CAAC,mHAAa;AACrC,cAAc,mBAAO,CAAC,0GAAY;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,iCAAiC,aAAa;AAC9C;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5CD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,yBAAyB,EAAE;AACzC,MAAM;AACN,WAAW,sxBAAsxB;AACjyB,aAAa,0SAA0S;AACvT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,+KAA+K,EAAE,MAAM,EAAE,SAAS,kBAAkB,UAAU,gBAAgB,OAAO,8BAA8B,4DAA4D,aAAa,oBAAoB,gBAAgB,4BAA4B,sFAAsF,qBAAqB,iBAAiB,4KAA4K,eAAe,OAAO,uFAAuF,4HAA4H,eAAe,aAAa,6BAA6B,qBAAqB,gBAAgB,6HAA6H,EAAE,6HAA6H,EAAE,QAAQ,EAAE,mKAAmK,EAAE,8JAA8J,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,qJAAqJ,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,+IAA+I,EAAE,aAAa,EAAE,6CAA6C,EAAE,4HAA4H,EAAE,UAAU,EAAE,yIAAyI,gBAAgB,iBAAiB,gBAAgB,mIAAmI,EAAE,mIAAmI,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,6HAA6H,oDAAoD,OAAO,8BAA8B,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,gBAAgB,4BAA4B,8BAA8B,qBAAqB,8BAA8B,qBAAqB,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,gBAAgB,OAAO,iBAAiB,UAAU,EAAE,UAAU,EAAE,+BAA+B,gBAAgB,iBAAiB,6BAA6B,aAAa,iBAAiB,4GAA4G,eAAe,qBAAqB,gBAAgB,qBAAqB;AACt+J,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,okBAAokB,IAAI;AACxkB,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,gBAAgB,8CAA8C;AAC3E,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,gDAA0B,CAAC,iDAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA,C;;;;;;;;;;ACvyBA;AACA;AACA,2BAA2B,mBAAO,CAAC,oIAAqB;AACxD,qBAAqB,mBAAO,CAAC,oIAAqB;;AAElD,IAAI,uBAAuB;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,IAAI,oBAAoB;AACxB;AACA;AACA,CAAC,I;;;;;;;;;;;AChBY;;AAEb,aAAa,mBAAO,CAAC,uHAAa;AAClC,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA,YAAY,mBAAO,CAAC,mHAAW;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,8FAA8F;AAC9F;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;AACnB;AACA;AACA;;;;;;;;;;;;;ACpCa;;AAEb,YAAY,mBAAO,CAAC,mHAAW;AAC/B,SAAS,mBAAO,CAAC,cAAI;AACrB,WAAW,mBAAO,CAAC,+GAAgB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,mCAAmC,mGAAmG;AACtI;AACA;AACA;AACA,wCAAwC;AACxC,2BAA2B,iFAAiF;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,yDAAyD,KAAK;AAC9D;AACA,kEAAkE,MAAM;AACxE;AACA,aAAa;AACb,iEAAiE;AACjE;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,yDAAyD,KAAK;AAC9D;AACA;AACA,qCAAqC,yCAAyC;AAC9E;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,6DAA6D,KAAK;AAClE;AACA;AACA,wCAAwC,6CAA6C;AACrF;AACA,iBAAiB;AACjB,qEAAqE;AACrE;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,4BAA4B,uBAAuB;AACnD,yDAAyD,KAAK;AAC9D;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA,aAAa;AACb,iEAAiE;AACjE;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC5Va;;AAEb,WAAW,mBAAO,CAAC,kBAAM;AACzB;AACA;;AAEA;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX;AACA;AACA;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA,E;;;;;;;;;;;AC7Fa;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,6HAAqB;AACrD,iBAAiB,mBAAO,CAAC,+GAAc;AACvC;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,qDAAqD;AACrD,SAAS;;AAET;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;ACnJY;AACb,WAAW,mBAAO,CAAC,2GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,6GAAU;AAC/B,cAAc,mBAAO,CAAC,yGAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB;AACrB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,kBAAkB;;;;;;;;;;;;;;;ACvTL;AACb,cAAc,mBAAO,CAAC,yGAAY;AAClC,iBAAiB,mBAAO,CAAC,+GAAc;AACvC,kBAAkB,0IAAgC;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChHD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wDAAwD;AACxD,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA,uBAAuB;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,gGAAgG,eAAe,UAAU,WAAW;AACpI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,iHAAgB;;AAE/G;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;ACjND;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;;AAErB;AACA;;;AAGA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,2CAA2C,mBAAO,CAAC,yGAAY,GAAG,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,iHAAgB,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,uHAAmB,GAAG,mBAAO,CAAC,yHAAoB;AACpM;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;AChfD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,YAAY,wDAAwD,MAAM,0BAA0B;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AAGA;;AAEA;AACA,8BAA8B,2BAA2B;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA,iBAAiB;AACjB;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa,yBAAyB,uBAAuB;AACrI;;AAEA,QAAQ,IAA8B;AACtC,YAAY,KAA6B;AACzC,0CAA0C,mBAAO,CAAC,qGAAU,GAAG,mBAAO,CAAC,2GAAa,GAAG,mBAAO,CAAC,+GAAe,GAAG,mBAAO,CAAC,iHAAgB;;AAEzI;AACA,KAAK,MAAM,EAMN;;AAEL,CAAC;;;;;;;;;;;;;;;;;;AC9nBD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,KAA6B;AACnC,QAAQ,KAA4B;AACpC;AACA;AACA,IAAI,SAAS;AACb,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA,KAAK;AACL;AACA,uCAAuC,YAAY;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD;AAClD,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,wCAAwC;AACxC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,qBAAqB,eAAe;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAwB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,qBAAqB;AACrB;;AAEA;AACA;AACA,KAAK;AACL,iBAAiB;;AAEjB;AACA,kDAAkD,EAAE,iBAAiB;;AAErE;AACA,wBAAwB,8BAA8B;AACtD,2BAA2B;;AAE3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,iBAAiB;;AAEnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAyC;AAC/C,IAAI,iCAAqB,EAAE,mCAAE;AAC7B;AACA,KAAK;AAAA,kGAAC;AACN;AACA,CAAC;;;;;;;;;;;AC3pDD;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,mBAAO,CAAC,wGAAoB;AACpD,qBAAqB,mBAAO,CAAC,kGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,0GAAqB;AACrD,yBAAyB,mBAAO,CAAC,sGAAmB;;AAEpD;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB,QAAQ;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;AAC7D,eAAe,mBAAO,CAAC,yGAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,OAAO,eAAe,OAAO;AAClE;AACA,KAAK;;AAEL;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E,4DAA4D,qBAAqB;AACjF;AACA;AACA,yDAAyD,oDAAoD;AAC7G,KAAK;;AAEL;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B,OAAO,GAAG,cAAc,GAAG,eAAe;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD;AACA;AACA,KAAK;;AAEL,2EAA2E,yBAAyB;;AAEpG;AACA,kDAAkD,OAAO,GAAG,UAAU;AACtE,+DAA+D,2BAA2B;AAC1F,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;;AAEA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,+BAA+B,EAAE;AAC5D,oDAAoD,YAAY,IAAI,IAAI;AACxE;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;AAC/B,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D,mBAAmB,mBAAO,CAAC,8FAAe;AAC1C,8BAA8B,mBAAO,CAAC,sHAA2B;AACjE,qBAAqB,mBAAO,CAAC,kGAAiB;AAC9C,wBAAwB,mBAAO,CAAC,0GAAqB;AACrD,6BAA6B,mBAAO,CAAC,oHAA0B;AAC/D,yBAAyB,mBAAO,CAAC,yGAA0B;;AAE3D;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,uCAAuC;AAClD,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,2CAA2C,sDAAsD;AACjG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,kGAAiB;AAC9C,mBAAmB,mBAAO,CAAC,8FAAe;AAC1C,mCAAmC,mBAAO,CAAC,oIAAkC;;AAE7E;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,IAAI;AACf;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,gCAAgC,sCAAsC,uCAAuC,GAAG;AAChH,SAAS,mDAAmD;AAC5D;AACA;AACA;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;;AAEA;AACA,SAAS,gCAAgC;AACzC,SAAS,mEAAmE;AAC5E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,+FAAO;AAC7B,gBAAgB,mBAAO,CAAC,qHAAe;AACvC,0BAA0B,mBAAO,CAAC,2GAA2B;;AAE7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B,SAAS,oCAAoC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kCAAkC;AACtE;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,kCAAkC;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG,EAAE;AACL;;;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,yFAAK;AACzB,yBAAyB,mBAAO,CAAC,yGAA0B;AAC3D,oBAAoB,mBAAO,CAAC,gGAAgB;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA,qBAAqB;AACrB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,IAAI;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E,IAAI;AAClF;;AAEA;AACA;AACA;AACA,CAAC,IAAI;;;;;;;;;;;ACvSL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,6CAA6C,eAAe,cAAc,EAAE;AAC5E;AACA,OAAO,IAAI;AACX,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,IAAI;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;AC5KA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,+CAAQ;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,qBAAqB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA,WAAW,UAAU;AACrB;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,8FAAe;;AAE1C;AACA,WAAW,OAAO;AAClB,WAAW,IAAI;AACf,WAAW,OAAO;;AAElB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,eAAe,GAAG,aAAa,GAAG,aAAa;AAC9D;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,8FAAe;;AAE1C;AACA,WAAW,SAAS;AACpB,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,uDAAa;AACpC,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,wBAAwB,mBAAO,CAAC,yEAAsB;AACtD,eAAe,mBAAO,CAAC,uDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,eAAe;AACf;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,KAA0B;;AAE9C;AACA,kCAAkC,QAAa;;AAE/C;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,EAAE;AACf,aAAa,QAAQ;AACrB;AACA,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA,kCAAkC,6BAA6B,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,aAAa;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,aAAa,QAAQ;AACrB;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,aAAa,OAAO,WAAW;AAC/B,aAAa,SAAS;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+CAA+C;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,EAAE;AACf,aAAa,MAAM;AACnB;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,KAAK;AAClB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA,QAAQ,qCAAqC;AAC7C,QAAQ,qCAAqC;AAC7C,QAAQ;AACR;AACA;AACA,qCAAqC,2BAA2B,EAAE;AAClE;AACA;AACA;AACA,yBAAyB,kCAAkC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,EAAE;AACf,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA,QAAQ,+BAA+B;AACvC,QAAQ,+BAA+B;AACvC,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,SAAS;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,QAAQ,8BAA8B;AACtC,QAAQ;AACR;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,cAAc,OAAO;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+CAA+C;AACvD,QAAQ;AACR;AACA;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,QAAQ,8CAA8C;AACtD,QAAQ;AACR;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD;AACA;AACA;AACA,sBAAsB,4BAA4B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,EAAE;AACjB;AACA;AACA;AACA,QAAQ,+CAA+C;AACvD,QAAQ,gDAAgD;AACxD,QAAQ;AACR;AACA;AACA,gCAAgC,mBAAmB,EAAE;AACrD;AACA;AACA;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,eAAe,yBAAyB;AACxC;AACA;AACA,MAAM,IAAI;AACV,YAAY,8BAA8B;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,cAAc,OAAO;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mCAAmC;AAC3C,QAAQ;AACR;AACA;AACA;AACA,oBAAoB,oCAAoC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,yBAAyB;AACtC;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA,QAAQ,8BAA8B;AACtC,QAAQ,8BAA8B;AACtC,QAAQ,8BAA8B;AACtC,QAAQ;AACR;AACA;AACA,mCAAmC,eAAe,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd,KAAK;AACL;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,EAAE;AACf,aAAa,KAAK;AAClB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,KAAK;AAClB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,KAAK;AAClB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA;AACA,qBAAqB,SAAS,GAAG,SAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA,+BAA+B,kBAAkB,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA,gDAAgD,kBAAkB,EAAE;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,MAAM;AACrB;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,UAAU;AACvB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,YAAY;AACZ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,UAAU;AACvB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B,YAAY;AACZ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,UAAU;AACvB,eAAe,OAAO;AACtB;AACA;AACA;AACA,iBAAiB,SAAS,GAAG,SAAS,GAAG,SAAS;AAClD,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB,OAAO,SAAS;AACnC,2BAA2B,gBAAgB,SAAS,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,qBAAqB;AAClC,eAAe,OAAO;AACtB;AACA;AACA,mBAAmB;AACnB;AACA;AACA,YAAY;AACZ;AACA;AACA,8BAA8B;AAC9B,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA,mBAAmB,QAAQ,OAAO,+BAA+B,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,EAAE;AACjB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,eAAe,SAAS;AACxB;AACA;AACA;AACA,QAAQ,8CAA8C;AACtD,QAAQ;AACR;AACA;AACA;AACA,iCAAiC,mCAAmC;AACpE,aAAa,8CAA8C;AAC3D;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA,QAAQ,yBAAyB;AACjC,QAAQ;AACR;AACA;AACA,kCAAkC,iBAAiB;AACnD,aAAa,yBAAyB;AACtC;AACA;AACA,8CAA8C,SAAS,cAAc,SAAS;AAC9E,aAAa,yBAAyB,GAAG,yBAAyB;AAClE;AACA;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,OAAO;AACpB,aAAa,OAAO,YAAY;AAChC,aAAa,QAAQ;AACrB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB,GAAG,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,qDAAqD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG,MAAM,iBAAiB;;AAE1B;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA,MAAM,IAA0E;AAChF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,mCAAO;AACX;AACA,KAAK;AAAA,kGAAC;AACN;AACA;AACA,OAAO,EASJ;AACH,CAAC;;;;;;;;;;;ACpyHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9KD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6E;;;;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,8EAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;ACriLD,oC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,kC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA,wF;;;;;WCAA;WACA;WACA;WACA;WACA,E;;;;;UCJA;UACA;UACA;UACA","file":"all-chts-bundle.dev.js","sourcesContent":["\nmodule.exports = {\n '3.9': {\n ddocs: require('./build/cht-core-3-9-ddocs.json'),\n RegistrationUtils: require('cht-core-3-9/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-9/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-9/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-9/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-9/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-9/shared-libs/lineage'),\n },\n '3.10': {\n ddocs: require('./build/cht-core-3-10-ddocs.json'),\n RegistrationUtils: require('cht-core-3-10/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-10/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-10/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-10/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-10/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-10/shared-libs/lineage'),\n },\n '3.11': {\n ddocs: require('./build/cht-core-3-11-ddocs.json'),\n RegistrationUtils: require('cht-core-3-11/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-11/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-11/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-11/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-11/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-11/shared-libs/lineage'),\n },\n '3.12': {\n ddocs: require('./build/cht-core-3-12-ddocs.json'),\n RegistrationUtils: require('cht-core-3-12/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-12/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-12/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-12/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-12/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-12/shared-libs/lineage'),\n ChtScriptApi: require('cht-core-3-12/shared-libs/cht-script-api'),\n },\n '3.13': {\n ddocs: require('./build/cht-core-3-13-ddocs.json'),\n RegistrationUtils: require('cht-core-3-13/shared-libs/registration-utils'),\n CalendarInterval: require('cht-core-3-13/shared-libs/calendar-interval'),\n RulesEngineCore: require('cht-core-3-13/shared-libs/rules-engine'),\n RulesEmitter: require('cht-core-3-13/shared-libs/rules-engine/src/rules-emitter'),\n nootils: require('cht-core-3-13/shared-libs/rules-engine/node_modules/medic-nootils'),\n Lineage: require('cht-core-3-13/shared-libs/lineage'),\n ChtScriptApi: require('cht-core-3-13/shared-libs/cht-script-api'),\n },\n};\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\nconst utils = require('./utils');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nconst getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id);\n\nconst getContactIds = (contacts) => {\n const ids = [];\n contacts.forEach(doc => {\n if (!doc) {\n return;\n }\n\n const id = utils.getId(doc.contact);\n id && ids.push(id);\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n id && ids.push(id);\n });\n });\n\n return _.uniq(ids);\n};\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (utils.isReport(doc)) {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n if (!doc) {\n return;\n }\n const id = utils.getId(doc.contact);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.linked_docs[key] = deepCopy(contactDoc);\n }\n });\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = getContactIds(lineage);\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = getContactById(lineage, id);\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n if (placeLineage && placeLineage.length) {\n const placeDoc = placeLineage.shift();\n fillParentsInDocs(placeDoc, placeLineage);\n doc.place = placeDoc;\n }\n\n return doc;\n };\n\n /*\n * @returns {Object} subjectMaps\n * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid]\n * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid]\n */\n const fetchSubjectsUuids = (records) => {\n const shortcodes = [];\n const recordToPlaceUuidMap = new Map();\n const recordToPatientUuidMap = new Map();\n\n records.forEach(record => {\n if (!utils.isReport(record)) {\n return;\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n recordToPatientUuidMap.set(record._id, patientId);\n recordToPlaceUuidMap.set(record._id, placeId);\n\n shortcodes.push(patientId, placeId);\n });\n\n if (!shortcodes.some(shortcode => shortcode)) {\n return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap });\n }\n\n return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => {\n records.forEach(record => {\n const patientShortcode = recordToPatientUuidMap.get(record._id);\n recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode));\n\n const placeShortcode = recordToPlaceUuidMap.get(record._id);\n recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode));\n });\n\n return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap };\n });\n };\n\n /*\n * @returns {Object} lineages\n * @returns {Array} lineages.patientLineage\n * @returns {Array} lineages.placeLineage\n */\n const fetchSubjectLineage = (record) => {\n if (!utils.isReport(record)) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n\n if (!patientId && !placeId) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => {\n const patientUuid = shortcodeToUuidMap.get(patientId);\n const placeUuid = shortcodeToUuidMap.get(placeId);\n\n return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => {\n const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || [];\n const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || [];\n\n return { patientLineage, placeLineage };\n });\n });\n };\n\n /*\n * @returns {Map} map with [k, v] pairs of [shortcode, uuid]\n */\n const contactUuidByShortcode = function(shortcodes) {\n const keys = shortcodes\n .filter(shortcode => shortcode)\n .map(shortcode => [ 'shortcode', shortcode ]);\n\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n\n return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ])));\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n let placeLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchSubjectLineage(lineage[0])\n .then((lineages = {}) => {\n patientLineage = lineages.patientLineage;\n placeLineage = lineages.placeLineage;\n\n return fetchContacts(lineage.concat(patientLineage, placeLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n fillContactsInDocs(placeLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (utils.isReport(doc)) {\n const contactId = utils.getId(doc.contact);\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = utils.isReport(doc) ? doc.contact : doc;\n ids.push(...getContactIds(selfAndParents(startLineageFrom)));\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid]\n let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid]\n\n return fetchSubjectsUuids(hydratedDocs)\n .then((subjectMaps) => {\n placeUuids = subjectMaps.placeUuids;\n patientUuids = subjectMaps.patientUuids;\n\n return fetchDocs([...placeUuids.values(), ...patientUuids.values()]);\n })\n .then(subjects => {\n knownDocs.push(...subjects);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(subjects),\n ...collectLeafContactIds(subjects),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return getContactById(parents, id);\n });\n };\n\n const isReport = utils.isReport(doc);\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = getContactById(knownDocs, patientUuids.get(doc._id));\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n const placeDoc = getContactById(knownDocs, placeUuids.get(doc._id));\n const placeLineage = reconstructLineage(placeDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const utils = require('./utils');\nconst RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n\n if (utils.validLinkedDocs(doc)) {\n Object.keys(doc.linked_docs).forEach(key => {\n doc.linked_docs[key] = utils.getId(doc.linked_docs[key]);\n });\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","const contactTypeUtils = require('@medic/contact-types-utils');\nconst _ = require('lodash/core');\n\nconst isContact = doc => {\n if (!doc) {\n return;\n }\n\n return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type);\n};\n\nconst getId = (item) => item && (typeof item === 'string' ? item : item._id);\n\n// don't process linked docs for non-contact types\n// linked_docs property should be a key-value object\nconst validLinkedDocs = doc => {\n return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs);\n};\n\nconst isReport = (doc) => doc.type === 'data_record';\nconst getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id;\nconst getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id;\n\n\nmodule.exports = {\n getId,\n validLinkedDocs,\n isReport,\n getPatientId,\n getPlaceId,\n};\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// Current version.\nvar VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\nvar isString = tagTester('String');\n\nvar isNumber = tagTester('Number');\n\nvar isDate = tagTester('Date');\n\nvar isRegExp = tagTester('RegExp');\n\nvar isError = tagTester('Error');\n\nvar isSymbol = tagTester('Symbol');\n\nvar isArrayBuffer = tagTester('ArrayBuffer');\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nvar isFunction$1 = isFunction;\n\nvar hasObjectTag = tagTester('Object');\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nvar isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nvar isArray = nativeIsArray || tagTester('Array');\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n}());\n\nvar isArguments$1 = isArguments;\n\n// Is a given object a finite number?\nfunction isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n// Is the given value `NaN`?\nfunction isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n// Internal helper to obtain the `byteLength` property of an object.\nvar getByteLength = shallowProperty('byteLength');\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nvar isBufferLike = createSizePropertyCheck(getByteLength);\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nvar isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n// Internal helper to obtain the `length` property of an object.\nvar getLength = shallowProperty('length');\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n}\n\n_$1.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_$1.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n_$1.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\nvar isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\nvar isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\nvar isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\nvar isWeakSet = tagTester('WeakSet');\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nvar extend = createAssigner(allKeys);\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nvar extendOwn = createAssigner(keys);\n\n// Fill in a given object with default properties.\nvar defaults = createAssigner(allKeys, true);\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath$1(path) {\n return isArray(path) ? path : [path];\n}\n_$1.toPath = toPath$1;\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return _$1.toPath(path);\n}\n\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_$1.iteratee = iteratee;\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n// A (possibly faster) way to get the current timestamp as an integer.\nvar now = Date.now || function() {\n return new Date().getTime();\n};\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n// Internal list of HTML entities for escaping.\nvar escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n// Function for escaping strings to HTML interpolation.\nvar _escape = createEscaper(escapeMap);\n\n// Internal list of HTML entities for unescaping.\nvar unescapeMap = invert(escapeMap);\n\n// Function for unescaping strings from HTML interpolation.\nvar _unescape = createEscaper(unescapeMap);\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nvar templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n}\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _$1;\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nvar bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nvar isArrayLike = createSizePropertyCheck(getLength);\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nvar bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nvar delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nvar defer = partial(delay, _$1, 1);\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nvar once = partial(before, 2);\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n// Returns the first index on an array-like that passes a truth test.\nvar findIndex = createPredicateIndexFinder(1);\n\n// Returns the last index on an array-like that passes a truth test.\nvar findLastIndex = createPredicateIndexFinder(-1);\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nvar indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nvar lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nvar reduce = createReduce(1);\n\n// The right-associative version of reduce, also known as `foldr`.\nvar reduceRight = createReduce(-1);\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n// Invoke a method (with arguments) on every item in a collection.\nvar invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return map(obj, property(key));\n}\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nvar groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nvar indexBy = group(function(result, value, key) {\n result[key] = value;\n});\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nvar countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n});\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nvar partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n// Return a copy of the object only containing the allowed properties.\nvar pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n// Return a copy of the object without the disallowed properties.\nvar omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return filter(array, Boolean);\n}\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return flatten$1(array, depth, false);\n}\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nvar difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n// Return a version of the array that does not contain the specified value(s).\nvar without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nvar union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n});\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nvar zip = restArguments(unzip);\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n}\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n}\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\n// Named Exports\n\nvar allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n};\n\n// Default Export\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n\nexports.VERSION = VERSION;\nexports._ = _;\nexports._escape = _escape;\nexports._unescape = _unescape;\nexports.after = after;\nexports.allKeys = allKeys;\nexports.before = before;\nexports.bind = bind;\nexports.bindAll = bindAll;\nexports.chain = chain;\nexports.chunk = chunk;\nexports.clone = clone;\nexports.compact = compact;\nexports.compose = compose;\nexports.constant = constant;\nexports.contains = contains;\nexports.countBy = countBy;\nexports.create = create;\nexports.debounce = debounce;\nexports.defaults = defaults;\nexports.defer = defer;\nexports.delay = delay;\nexports.difference = difference;\nexports.each = each;\nexports.every = every;\nexports.extend = extend;\nexports.extendOwn = extendOwn;\nexports.filter = filter;\nexports.find = find;\nexports.findIndex = findIndex;\nexports.findKey = findKey;\nexports.findLastIndex = findLastIndex;\nexports.findWhere = findWhere;\nexports.first = first;\nexports.flatten = flatten;\nexports.functions = functions;\nexports.get = get;\nexports.groupBy = groupBy;\nexports.has = has;\nexports.identity = identity;\nexports.indexBy = indexBy;\nexports.indexOf = indexOf;\nexports.initial = initial;\nexports.intersection = intersection;\nexports.invert = invert;\nexports.invoke = invoke;\nexports.isArguments = isArguments$1;\nexports.isArray = isArray;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBoolean = isBoolean;\nexports.isDataView = isDataView$1;\nexports.isDate = isDate;\nexports.isElement = isElement;\nexports.isEmpty = isEmpty;\nexports.isEqual = isEqual;\nexports.isError = isError;\nexports.isFinite = isFinite$1;\nexports.isFunction = isFunction$1;\nexports.isMap = isMap;\nexports.isMatch = isMatch;\nexports.isNaN = isNaN$1;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isRegExp = isRegExp;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isTypedArray = isTypedArray$1;\nexports.isUndefined = isUndefined;\nexports.isWeakMap = isWeakMap;\nexports.isWeakSet = isWeakSet;\nexports.iteratee = iteratee;\nexports.keys = keys;\nexports.last = last;\nexports.lastIndexOf = lastIndexOf;\nexports.map = map;\nexports.mapObject = mapObject;\nexports.matcher = matcher;\nexports.max = max;\nexports.memoize = memoize;\nexports.min = min;\nexports.mixin = mixin;\nexports.negate = negate;\nexports.noop = noop;\nexports.now = now;\nexports.object = object;\nexports.omit = omit;\nexports.once = once;\nexports.pairs = pairs;\nexports.partial = partial;\nexports.partition = partition;\nexports.pick = pick;\nexports.pluck = pluck;\nexports.property = property;\nexports.propertyOf = propertyOf;\nexports.random = random;\nexports.range = range;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reject = reject;\nexports.rest = rest;\nexports.restArguments = restArguments;\nexports.result = result;\nexports.sample = sample;\nexports.shuffle = shuffle;\nexports.size = size;\nexports.some = some;\nexports.sortBy = sortBy;\nexports.sortedIndex = sortedIndex;\nexports.tap = tap;\nexports.template = template;\nexports.templateSettings = templateSettings;\nexports.throttle = throttle;\nexports.times = times;\nexports.toArray = toArray;\nexports.toPath = toPath$1;\nexports.union = union;\nexports.uniq = uniq;\nexports.uniqueId = uniqueId;\nexports.unzip = unzip;\nexports.values = values;\nexports.where = where;\nexports.without = without;\nexports.wrap = wrap;\nexports.zip = zip;\n//# sourceMappingURL=underscore-node-f.cjs.map\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nvar underscoreNodeF = require('./underscore-node-f.cjs');\n\n\n\nmodule.exports = underscoreNodeF._;\n//# sourceMappingURL=underscore-node.cjs.map\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n cht: settings.chtScriptApi,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!contactId) {\n return false;\n }\n\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countPassedEmissionsByGroup = {};\n const countEmissionsByGroup = {};\n\n relevantEmissions.forEach(emission => {\n const groupBy = emission.groupBy;\n if (!groupBy) {\n return;\n }\n if (!countPassedEmissionsByGroup[groupBy]) {\n countPassedEmissionsByGroup[groupBy] = 0;\n countEmissionsByGroup[groupBy] = 0;\n }\n countEmissionsByGroup[groupBy]++;\n if (emission.pass) {\n countPassedEmissionsByGroup[groupBy]++;\n }\n });\n\n const groups = Object.keys(countEmissionsByGroup);\n\n return {\n pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'birneçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha invalida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var hi = moment.defineLocale('hi', {\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n '_'\n ),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n );\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return (\n '(' +\n monthsSubjective[momentToFormat.month()] +\n '|' +\n monthsNominative[momentToFormat.month()] +\n ')'\n );\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Пагоҳ соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js language configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js language configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/cht-core-3-11/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.26.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.26.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\nconst utils = require('./utils');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nconst getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id);\n\nconst getContactIds = (contacts) => {\n const ids = [];\n contacts.forEach(doc => {\n if (!doc) {\n return;\n }\n\n const id = utils.getId(doc.contact);\n id && ids.push(id);\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n id && ids.push(id);\n });\n });\n\n return _.uniq(ids);\n};\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (utils.isReport(doc)) {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n if (!doc) {\n return;\n }\n const id = utils.getId(doc.contact);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.linked_docs[key] = deepCopy(contactDoc);\n }\n });\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = getContactIds(lineage);\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = getContactById(lineage, id);\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n if (placeLineage && placeLineage.length) {\n const placeDoc = placeLineage.shift();\n fillParentsInDocs(placeDoc, placeLineage);\n doc.place = placeDoc;\n }\n\n return doc;\n };\n\n /*\n * @returns {Object} subjectMaps\n * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid]\n * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid]\n */\n const fetchSubjectsUuids = (records) => {\n const shortcodes = [];\n const recordToPlaceUuidMap = new Map();\n const recordToPatientUuidMap = new Map();\n\n records.forEach(record => {\n if (!utils.isReport(record)) {\n return;\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n recordToPatientUuidMap.set(record._id, patientId);\n recordToPlaceUuidMap.set(record._id, placeId);\n\n shortcodes.push(patientId, placeId);\n });\n\n if (!shortcodes.some(shortcode => shortcode)) {\n return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap });\n }\n\n return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => {\n records.forEach(record => {\n const patientShortcode = recordToPatientUuidMap.get(record._id);\n recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode));\n\n const placeShortcode = recordToPlaceUuidMap.get(record._id);\n recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode));\n });\n\n return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap };\n });\n };\n\n /*\n * @returns {Object} lineages\n * @returns {Array} lineages.patientLineage\n * @returns {Array} lineages.placeLineage\n */\n const fetchSubjectLineage = (record) => {\n if (!utils.isReport(record)) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n\n if (!patientId && !placeId) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => {\n const patientUuid = shortcodeToUuidMap.get(patientId);\n const placeUuid = shortcodeToUuidMap.get(placeId);\n\n return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => {\n const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || [];\n const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || [];\n\n return { patientLineage, placeLineage };\n });\n });\n };\n\n /*\n * @returns {Map} map with [k, v] pairs of [shortcode, uuid]\n */\n const contactUuidByShortcode = function(shortcodes) {\n const keys = shortcodes\n .filter(shortcode => shortcode)\n .map(shortcode => [ 'shortcode', shortcode ]);\n\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n\n return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ])));\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n let placeLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchSubjectLineage(lineage[0])\n .then((lineages = {}) => {\n patientLineage = lineages.patientLineage;\n placeLineage = lineages.placeLineage;\n\n return fetchContacts(lineage.concat(patientLineage, placeLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n fillContactsInDocs(placeLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (utils.isReport(doc)) {\n const contactId = utils.getId(doc.contact);\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = utils.isReport(doc) ? doc.contact : doc;\n ids.push(...getContactIds(selfAndParents(startLineageFrom)));\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid]\n let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid]\n let subjectDocs;\n\n return fetchSubjectsUuids(hydratedDocs)\n .then((subjectMaps) => {\n placeUuids = subjectMaps.placeUuids;\n patientUuids = subjectMaps.patientUuids;\n\n return fetchDocs([...placeUuids.values(), ...patientUuids.values()]);\n })\n .then(subjects => {\n subjectDocs = subjects;\n knownDocs.push(...subjects);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(subjectDocs),\n ...collectLeafContactIds(subjectDocs),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return getContactById(parents, id);\n });\n };\n\n const isReport = utils.isReport(doc);\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = getContactById(subjectDocs, patientUuids.get(doc._id));\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n const placeDoc = getContactById(subjectDocs, placeUuids.get(doc._id));\n const placeLineage = reconstructLineage(placeDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const utils = require('./utils');\nconst RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n\n if (utils.validLinkedDocs(doc)) {\n Object.keys(doc.linked_docs).forEach(key => {\n doc.linked_docs[key] = utils.getId(doc.linked_docs[key]);\n });\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","const contactTypeUtils = require('@medic/contact-types-utils');\nconst _ = require('lodash/core');\n\nconst isContact = doc => {\n if (!doc) {\n return;\n }\n\n return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type);\n};\n\nconst getId = (item) => item && (typeof item === 'string' ? item : item._id);\n\n// don't process linked docs for non-contact types\n// linked_docs property should be a key-value object\nconst validLinkedDocs = doc => {\n return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs);\n};\n\nconst isReport = (doc) => doc.type === 'data_record';\nconst getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id;\nconst getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id;\n\n\nmodule.exports = {\n getId,\n validLinkedDocs,\n isReport,\n getPatientId,\n getPlaceId,\n};\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.9.1\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.1';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!contactId) {\n return false;\n }\n\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countPassedEmissionsByGroup = {};\n const countEmissionsByGroup = {};\n\n relevantEmissions.forEach(emission => {\n const groupBy = emission.groupBy;\n if (!groupBy) {\n return;\n }\n if (!countPassedEmissionsByGroup[groupBy]) {\n countPassedEmissionsByGroup[groupBy] = 0;\n countEmissionsByGroup[groupBy] = 0;\n }\n countEmissionsByGroup[groupBy]++;\n if (emission.pass) {\n countPassedEmissionsByGroup[groupBy]++;\n }\n });\n\n const groups = Object.keys(countEmissionsByGroup);\n\n return {\n pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","/**\n * CHT Script API - Auth module\n * Provides tools related to Authentication.\n */\n\nconst ADMIN_ROLE = '_admin';\nconst NATIONAL_ADMIN_ROLE = 'national_admin'; // Deprecated: kept for backwards compatibility: #4525\nconst DISALLOWED_PERMISSION_PREFIX = '!';\n\nconst isAdmin = (userRoles) => {\n if (!Array.isArray(userRoles)) {\n return false;\n }\n\n return [ADMIN_ROLE, NATIONAL_ADMIN_ROLE].some(role => userRoles.includes(role));\n};\n\nconst groupPermissions = (permissions) => {\n const groups = { allowed: [], disallowed: [] };\n\n permissions.forEach(permission => {\n if (permission.indexOf(DISALLOWED_PERMISSION_PREFIX) === 0) {\n // Removing the DISALLOWED_PERMISSION_PREFIX and keeping the permission name.\n groups.disallowed.push(permission.substring(1));\n } else {\n groups.allowed.push(permission);\n }\n });\n\n return groups;\n};\n\nconst debug = (reason, permissions, roles) => {\n // eslint-disable-next-line no-console\n console.debug(`CHT Script API :: ${reason}. User roles: ${roles}. Wanted permissions: ${permissions}`);\n};\n\nconst checkUserHasPermissions = (permissions, userRoles, chtPermissionsSettings, expectedToHave) => {\n return permissions.every(permission => {\n const roles = chtPermissionsSettings[permission];\n\n if (!roles) {\n return !expectedToHave;\n }\n\n return expectedToHave === userRoles.some(role => roles.includes(role));\n });\n};\n\nconst verifyParameters = (permissions, userRoles, chtPermissionsSettings) => {\n if (!Array.isArray(permissions) || !permissions.length) {\n debug('Permissions to verify are not provided or have invalid type');\n return false;\n }\n\n if (!Array.isArray(userRoles)) {\n debug('User roles are not provided or have invalid type');\n return false;\n }\n\n if (!chtPermissionsSettings || !Object.keys(chtPermissionsSettings).length) {\n debug('CHT-Core\\'s configured permissions are not provided');\n return false;\n }\n\n return true;\n};\n\n/**\n * Verify if the user's role has the permission(s).\n * @param permissions {string | string[]} Permission(s) to verify\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasPermissions = (permissions, userRoles, chtPermissionsSettings) => {\n if (permissions && typeof permissions === 'string') {\n permissions = [ permissions ];\n }\n\n if (!verifyParameters(permissions, userRoles, chtPermissionsSettings)) {\n return false;\n }\n\n const { allowed, disallowed } = groupPermissions(permissions);\n\n if (isAdmin(userRoles)) {\n if (disallowed.length) {\n debug('Disallowed permission(s) found for admin', permissions, userRoles);\n return false;\n }\n // Admin has the permissions automatically.\n return true;\n }\n\n const hasDisallowed = !checkUserHasPermissions(disallowed, userRoles, chtPermissionsSettings, false);\n const hasAllowed = checkUserHasPermissions(allowed, userRoles, chtPermissionsSettings, true);\n\n if (hasDisallowed) {\n debug('Found disallowed permission(s)', permissions, userRoles);\n return false;\n }\n\n if (!hasAllowed) {\n debug('Missing permission(s)', permissions, userRoles);\n return false;\n }\n\n return true;\n};\n\n/**\n * Verify if the user's role has all the permissions of any of the provided groups.\n * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => {\n if (!verifyParameters(permissionsGroupList, userRoles, chtPermissionsSettings)) {\n return false;\n }\n\n const validGroup = permissionsGroupList.every(permissions => Array.isArray(permissions));\n if (!validGroup) {\n debug('Permission groups to verify are invalid');\n return false;\n }\n\n const allowedGroupList = [];\n const disallowedGroupList = [];\n permissionsGroupList.forEach(permissions => {\n const { allowed, disallowed } = groupPermissions(permissions);\n allowedGroupList.push(allowed);\n disallowedGroupList.push(disallowed);\n });\n\n if (isAdmin(userRoles)) {\n if (disallowedGroupList.every(permissions => permissions.length)) {\n debug('Disallowed permission(s) found for admin', permissionsGroupList, userRoles);\n return false;\n }\n // Admin has the permissions automatically.\n return true;\n }\n\n const hasAnyPermissionGroup = permissionsGroupList.some((permissions, i) => {\n const hasAnyAllowed = checkUserHasPermissions(allowedGroupList[i], userRoles, chtPermissionsSettings, true);\n const hasAnyDisallowed = !checkUserHasPermissions(disallowedGroupList[i], userRoles, chtPermissionsSettings, false);\n // Checking the 'permission group' is valid.\n return hasAnyAllowed && !hasAnyDisallowed;\n });\n\n if (!hasAnyPermissionGroup) {\n debug('No matching permissions', permissionsGroupList, userRoles);\n return false;\n }\n\n return true;\n};\n\nmodule.exports = {\n hasPermissions,\n hasAnyPermission\n};\n","/**\n * CHT Script API - Index\n * Builds and exports a versioned API from feature modules.\n * Whenever possible keep this file clean by defining new features in modules.\n */\nconst auth = require('./auth');\n\n/**\n * Verify if the user's role has the permission(s).\n * @param permissions {string | string[]} Permission(s) to verify\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasPermissions = (permissions, userRoles, chtPermissionsSettings) => {\n return auth.hasPermissions(permissions, userRoles, chtPermissionsSettings);\n};\n\n/**\n * Verify if the user's role has all the permissions of any of the provided groups.\n * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => {\n return auth.hasAnyPermission(permissionsGroupList, userRoles, chtPermissionsSettings);\n};\n\nmodule.exports = {\n v1: {\n hasPermissions,\n hasAnyPermission\n }\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\nconst utils = require('./utils');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nconst getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id);\n\nconst getContactIds = (contacts) => {\n const ids = [];\n contacts.forEach(doc => {\n if (!doc) {\n return;\n }\n\n const id = utils.getId(doc.contact);\n id && ids.push(id);\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n id && ids.push(id);\n });\n });\n\n return _.uniq(ids);\n};\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (utils.isReport(doc)) {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n if (!doc) {\n return;\n }\n const id = utils.getId(doc.contact);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.linked_docs[key] = deepCopy(contactDoc);\n }\n });\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = getContactIds(lineage);\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = getContactById(lineage, id);\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n if (placeLineage && placeLineage.length) {\n const placeDoc = placeLineage.shift();\n fillParentsInDocs(placeDoc, placeLineage);\n doc.place = placeDoc;\n }\n\n return doc;\n };\n\n /*\n * @returns {Object} subjectMaps\n * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid]\n * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid]\n */\n const fetchSubjectsUuids = (records) => {\n const shortcodes = [];\n const recordToPlaceUuidMap = new Map();\n const recordToPatientUuidMap = new Map();\n\n records.forEach(record => {\n if (!utils.isReport(record)) {\n return;\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n recordToPatientUuidMap.set(record._id, patientId);\n recordToPlaceUuidMap.set(record._id, placeId);\n\n shortcodes.push(patientId, placeId);\n });\n\n if (!shortcodes.some(shortcode => shortcode)) {\n return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap });\n }\n\n return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => {\n records.forEach(record => {\n const patientShortcode = recordToPatientUuidMap.get(record._id);\n recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode));\n\n const placeShortcode = recordToPlaceUuidMap.get(record._id);\n recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode));\n });\n\n return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap };\n });\n };\n\n /*\n * @returns {Object} lineages\n * @returns {Array} lineages.patientLineage\n * @returns {Array} lineages.placeLineage\n */\n const fetchSubjectLineage = (record) => {\n if (!utils.isReport(record)) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n\n if (!patientId && !placeId) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => {\n const patientUuid = shortcodeToUuidMap.get(patientId);\n const placeUuid = shortcodeToUuidMap.get(placeId);\n\n return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => {\n const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || [];\n const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || [];\n\n return { patientLineage, placeLineage };\n });\n });\n };\n\n /*\n * @returns {Map} map with [k, v] pairs of [shortcode, uuid]\n */\n const contactUuidByShortcode = function(shortcodes) {\n const keys = shortcodes\n .filter(shortcode => shortcode)\n .map(shortcode => [ 'shortcode', shortcode ]);\n\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n\n return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ])));\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n let placeLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchSubjectLineage(lineage[0])\n .then((lineages = {}) => {\n patientLineage = lineages.patientLineage;\n placeLineage = lineages.placeLineage;\n\n return fetchContacts(lineage.concat(patientLineage, placeLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n fillContactsInDocs(placeLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (utils.isReport(doc)) {\n const contactId = utils.getId(doc.contact);\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = utils.isReport(doc) ? doc.contact : doc;\n ids.push(...getContactIds(selfAndParents(startLineageFrom)));\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid]\n let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid]\n\n return fetchSubjectsUuids(hydratedDocs)\n .then((subjectMaps) => {\n placeUuids = subjectMaps.placeUuids;\n patientUuids = subjectMaps.patientUuids;\n\n return fetchDocs([...placeUuids.values(), ...patientUuids.values()]);\n })\n .then(subjects => {\n knownDocs.push(...subjects);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(subjects),\n ...collectLeafContactIds(subjects),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return getContactById(parents, id);\n });\n };\n\n const isReport = utils.isReport(doc);\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = getContactById(knownDocs, patientUuids.get(doc._id));\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n const placeDoc = getContactById(knownDocs, placeUuids.get(doc._id));\n const placeLineage = reconstructLineage(placeDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const utils = require('./utils');\nconst RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n\n if (utils.validLinkedDocs(doc)) {\n Object.keys(doc.linked_docs).forEach(key => {\n doc.linked_docs[key] = utils.getId(doc.linked_docs[key]);\n });\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","const contactTypeUtils = require('@medic/contact-types-utils');\nconst _ = require('lodash/core');\n\nconst isContact = doc => {\n if (!doc) {\n return;\n }\n\n return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type);\n};\n\nconst getId = (item) => item && (typeof item === 'string' ? item : item._id);\n\n// don't process linked docs for non-contact types\n// linked_docs property should be a key-value object\nconst validLinkedDocs = doc => {\n return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs);\n};\n\nconst isReport = (doc) => doc.type === 'data_record';\nconst getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id;\nconst getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id;\n\n\nmodule.exports = {\n getId,\n validLinkedDocs,\n isReport,\n getPatientId,\n getPlaceId,\n};\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// Current version.\nvar VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\nvar isString = tagTester('String');\n\nvar isNumber = tagTester('Number');\n\nvar isDate = tagTester('Date');\n\nvar isRegExp = tagTester('RegExp');\n\nvar isError = tagTester('Error');\n\nvar isSymbol = tagTester('Symbol');\n\nvar isArrayBuffer = tagTester('ArrayBuffer');\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nvar isFunction$1 = isFunction;\n\nvar hasObjectTag = tagTester('Object');\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nvar isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nvar isArray = nativeIsArray || tagTester('Array');\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n}());\n\nvar isArguments$1 = isArguments;\n\n// Is a given object a finite number?\nfunction isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n// Is the given value `NaN`?\nfunction isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n// Internal helper to obtain the `byteLength` property of an object.\nvar getByteLength = shallowProperty('byteLength');\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nvar isBufferLike = createSizePropertyCheck(getByteLength);\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nvar isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n// Internal helper to obtain the `length` property of an object.\nvar getLength = shallowProperty('length');\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n}\n\n_$1.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_$1.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n_$1.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\nvar isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\nvar isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\nvar isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\nvar isWeakSet = tagTester('WeakSet');\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nvar extend = createAssigner(allKeys);\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nvar extendOwn = createAssigner(keys);\n\n// Fill in a given object with default properties.\nvar defaults = createAssigner(allKeys, true);\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath$1(path) {\n return isArray(path) ? path : [path];\n}\n_$1.toPath = toPath$1;\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return _$1.toPath(path);\n}\n\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_$1.iteratee = iteratee;\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n// A (possibly faster) way to get the current timestamp as an integer.\nvar now = Date.now || function() {\n return new Date().getTime();\n};\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n// Internal list of HTML entities for escaping.\nvar escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n// Function for escaping strings to HTML interpolation.\nvar _escape = createEscaper(escapeMap);\n\n// Internal list of HTML entities for unescaping.\nvar unescapeMap = invert(escapeMap);\n\n// Function for unescaping strings from HTML interpolation.\nvar _unescape = createEscaper(unescapeMap);\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nvar templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n}\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _$1;\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nvar bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nvar isArrayLike = createSizePropertyCheck(getLength);\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nvar bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nvar delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nvar defer = partial(delay, _$1, 1);\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nvar once = partial(before, 2);\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n// Returns the first index on an array-like that passes a truth test.\nvar findIndex = createPredicateIndexFinder(1);\n\n// Returns the last index on an array-like that passes a truth test.\nvar findLastIndex = createPredicateIndexFinder(-1);\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nvar indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nvar lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nvar reduce = createReduce(1);\n\n// The right-associative version of reduce, also known as `foldr`.\nvar reduceRight = createReduce(-1);\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n// Invoke a method (with arguments) on every item in a collection.\nvar invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return map(obj, property(key));\n}\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nvar groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nvar indexBy = group(function(result, value, key) {\n result[key] = value;\n});\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nvar countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n});\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nvar partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n// Return a copy of the object only containing the allowed properties.\nvar pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n// Return a copy of the object without the disallowed properties.\nvar omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return filter(array, Boolean);\n}\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return flatten$1(array, depth, false);\n}\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nvar difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n// Return a version of the array that does not contain the specified value(s).\nvar without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nvar union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n});\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nvar zip = restArguments(unzip);\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n}\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n}\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\n// Named Exports\n\nvar allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n};\n\n// Default Export\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n\nexports.VERSION = VERSION;\nexports._ = _;\nexports._escape = _escape;\nexports._unescape = _unescape;\nexports.after = after;\nexports.allKeys = allKeys;\nexports.before = before;\nexports.bind = bind;\nexports.bindAll = bindAll;\nexports.chain = chain;\nexports.chunk = chunk;\nexports.clone = clone;\nexports.compact = compact;\nexports.compose = compose;\nexports.constant = constant;\nexports.contains = contains;\nexports.countBy = countBy;\nexports.create = create;\nexports.debounce = debounce;\nexports.defaults = defaults;\nexports.defer = defer;\nexports.delay = delay;\nexports.difference = difference;\nexports.each = each;\nexports.every = every;\nexports.extend = extend;\nexports.extendOwn = extendOwn;\nexports.filter = filter;\nexports.find = find;\nexports.findIndex = findIndex;\nexports.findKey = findKey;\nexports.findLastIndex = findLastIndex;\nexports.findWhere = findWhere;\nexports.first = first;\nexports.flatten = flatten;\nexports.functions = functions;\nexports.get = get;\nexports.groupBy = groupBy;\nexports.has = has;\nexports.identity = identity;\nexports.indexBy = indexBy;\nexports.indexOf = indexOf;\nexports.initial = initial;\nexports.intersection = intersection;\nexports.invert = invert;\nexports.invoke = invoke;\nexports.isArguments = isArguments$1;\nexports.isArray = isArray;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBoolean = isBoolean;\nexports.isDataView = isDataView$1;\nexports.isDate = isDate;\nexports.isElement = isElement;\nexports.isEmpty = isEmpty;\nexports.isEqual = isEqual;\nexports.isError = isError;\nexports.isFinite = isFinite$1;\nexports.isFunction = isFunction$1;\nexports.isMap = isMap;\nexports.isMatch = isMatch;\nexports.isNaN = isNaN$1;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isRegExp = isRegExp;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isTypedArray = isTypedArray$1;\nexports.isUndefined = isUndefined;\nexports.isWeakMap = isWeakMap;\nexports.isWeakSet = isWeakSet;\nexports.iteratee = iteratee;\nexports.keys = keys;\nexports.last = last;\nexports.lastIndexOf = lastIndexOf;\nexports.map = map;\nexports.mapObject = mapObject;\nexports.matcher = matcher;\nexports.max = max;\nexports.memoize = memoize;\nexports.min = min;\nexports.mixin = mixin;\nexports.negate = negate;\nexports.noop = noop;\nexports.now = now;\nexports.object = object;\nexports.omit = omit;\nexports.once = once;\nexports.pairs = pairs;\nexports.partial = partial;\nexports.partition = partition;\nexports.pick = pick;\nexports.pluck = pluck;\nexports.property = property;\nexports.propertyOf = propertyOf;\nexports.random = random;\nexports.range = range;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reject = reject;\nexports.rest = rest;\nexports.restArguments = restArguments;\nexports.result = result;\nexports.sample = sample;\nexports.shuffle = shuffle;\nexports.size = size;\nexports.some = some;\nexports.sortBy = sortBy;\nexports.sortedIndex = sortedIndex;\nexports.tap = tap;\nexports.template = template;\nexports.templateSettings = templateSettings;\nexports.throttle = throttle;\nexports.times = times;\nexports.toArray = toArray;\nexports.toPath = toPath$1;\nexports.union = union;\nexports.uniq = uniq;\nexports.uniqueId = uniqueId;\nexports.unzip = unzip;\nexports.values = values;\nexports.where = where;\nexports.without = without;\nexports.wrap = wrap;\nexports.zip = zip;\n//# sourceMappingURL=underscore-node-f.cjs.map\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nvar underscoreNodeF = require('./underscore-node-f.cjs');\n\n\n\nmodule.exports = underscoreNodeF._;\n//# sourceMappingURL=underscore-node.cjs.map\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n cht: settings.chtScriptApi,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!contactId) {\n return false;\n }\n\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countPassedEmissionsByGroup = {};\n const countEmissionsByGroup = {};\n\n relevantEmissions.forEach(emission => {\n const groupBy = emission.groupBy;\n if (!groupBy) {\n return;\n }\n if (!countPassedEmissionsByGroup[groupBy]) {\n countPassedEmissionsByGroup[groupBy] = 0;\n countEmissionsByGroup[groupBy] = 0;\n }\n countEmissionsByGroup[groupBy]++;\n if (emission.pass) {\n countPassedEmissionsByGroup[groupBy]++;\n }\n });\n\n const groups = Object.keys(countEmissionsByGroup);\n\n return {\n pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","/**\n * CHT Script API - Auth module\n * Provides tools related to Authentication.\n */\n\nconst ADMIN_ROLE = '_admin';\nconst NATIONAL_ADMIN_ROLE = 'national_admin'; // Deprecated: kept for backwards compatibility: #4525\nconst DISALLOWED_PERMISSION_PREFIX = '!';\n\nconst isAdmin = (userRoles) => {\n if (!Array.isArray(userRoles)) {\n return false;\n }\n\n return [ADMIN_ROLE, NATIONAL_ADMIN_ROLE].some(role => userRoles.includes(role));\n};\n\nconst groupPermissions = (permissions) => {\n const groups = { allowed: [], disallowed: [] };\n\n permissions.forEach(permission => {\n if (permission.indexOf(DISALLOWED_PERMISSION_PREFIX) === 0) {\n // Removing the DISALLOWED_PERMISSION_PREFIX and keeping the permission name.\n groups.disallowed.push(permission.substring(1));\n } else {\n groups.allowed.push(permission);\n }\n });\n\n return groups;\n};\n\nconst debug = (reason, permissions, roles) => {\n // eslint-disable-next-line no-console\n console.debug(`CHT Script API :: ${reason}. User roles: ${roles}. Wanted permissions: ${permissions}`);\n};\n\nconst checkUserHasPermissions = (permissions, userRoles, chtPermissionsSettings, expectedToHave) => {\n return permissions.every(permission => {\n const roles = chtPermissionsSettings[permission];\n\n if (!roles) {\n return !expectedToHave;\n }\n\n return expectedToHave === userRoles.some(role => roles.includes(role));\n });\n};\n\nconst verifyParameters = (permissions, userRoles, chtPermissionsSettings) => {\n if (!Array.isArray(permissions) || !permissions.length) {\n debug('Permissions to verify are not provided or have invalid type');\n return false;\n }\n\n if (!Array.isArray(userRoles)) {\n debug('User roles are not provided or have invalid type');\n return false;\n }\n\n if (!chtPermissionsSettings || !Object.keys(chtPermissionsSettings).length) {\n debug('CHT-Core\\'s configured permissions are not provided');\n return false;\n }\n\n return true;\n};\n\n/**\n * Verify if the user's role has the permission(s).\n * @param permissions {string | string[]} Permission(s) to verify\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasPermissions = (permissions, userRoles, chtPermissionsSettings) => {\n if (permissions && typeof permissions === 'string') {\n permissions = [ permissions ];\n }\n\n if (!verifyParameters(permissions, userRoles, chtPermissionsSettings)) {\n return false;\n }\n\n const { allowed, disallowed } = groupPermissions(permissions);\n\n if (isAdmin(userRoles)) {\n if (disallowed.length) {\n debug('Disallowed permission(s) found for admin', permissions, userRoles);\n return false;\n }\n // Admin has the permissions automatically.\n return true;\n }\n\n const hasDisallowed = !checkUserHasPermissions(disallowed, userRoles, chtPermissionsSettings, false);\n const hasAllowed = checkUserHasPermissions(allowed, userRoles, chtPermissionsSettings, true);\n\n if (hasDisallowed) {\n debug('Found disallowed permission(s)', permissions, userRoles);\n return false;\n }\n\n if (!hasAllowed) {\n debug('Missing permission(s)', permissions, userRoles);\n return false;\n }\n\n return true;\n};\n\n/**\n * Verify if the user's role has all the permissions of any of the provided groups.\n * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => {\n if (!verifyParameters(permissionsGroupList, userRoles, chtPermissionsSettings)) {\n return false;\n }\n\n const validGroup = permissionsGroupList.every(permissions => Array.isArray(permissions));\n if (!validGroup) {\n debug('Permission groups to verify are invalid');\n return false;\n }\n\n const allowedGroupList = [];\n const disallowedGroupList = [];\n permissionsGroupList.forEach(permissions => {\n const { allowed, disallowed } = groupPermissions(permissions);\n allowedGroupList.push(allowed);\n disallowedGroupList.push(disallowed);\n });\n\n if (isAdmin(userRoles)) {\n if (disallowedGroupList.every(permissions => permissions.length)) {\n debug('Disallowed permission(s) found for admin', permissionsGroupList, userRoles);\n return false;\n }\n // Admin has the permissions automatically.\n return true;\n }\n\n const hasAnyPermissionGroup = permissionsGroupList.some((permissions, i) => {\n const hasAnyAllowed = checkUserHasPermissions(allowedGroupList[i], userRoles, chtPermissionsSettings, true);\n const hasAnyDisallowed = !checkUserHasPermissions(disallowedGroupList[i], userRoles, chtPermissionsSettings, false);\n // Checking the 'permission group' is valid.\n return hasAnyAllowed && !hasAnyDisallowed;\n });\n\n if (!hasAnyPermissionGroup) {\n debug('No matching permissions', permissionsGroupList, userRoles);\n return false;\n }\n\n return true;\n};\n\nmodule.exports = {\n hasPermissions,\n hasAnyPermission\n};\n","/**\n * CHT Script API - Index\n * Builds and exports a versioned API from feature modules.\n * Whenever possible keep this file clean by defining new features in modules.\n */\nconst auth = require('./auth');\n\n/**\n * Verify if the user's role has the permission(s).\n * @param permissions {string | string[]} Permission(s) to verify\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasPermissions = (permissions, userRoles, chtPermissionsSettings) => {\n return auth.hasPermissions(permissions, userRoles, chtPermissionsSettings);\n};\n\n/**\n * Verify if the user's role has all the permissions of any of the provided groups.\n * @param permissionsGroupList {string[][]} Array of groups of permissions due to the complexity of permission grouping\n * @param userRoles {string[]} Array of user roles.\n * @param chtPermissionsSettings {object} Object of configured permissions in CHT-Core's settings.\n * @return {boolean}\n */\nconst hasAnyPermission = (permissionsGroupList, userRoles, chtPermissionsSettings) => {\n return auth.hasAnyPermission(permissionsGroupList, userRoles, chtPermissionsSettings);\n};\n\nmodule.exports = {\n v1: {\n hasPermissions,\n hasAnyPermission\n }\n};\n","const HARDCODED_PERSON_TYPE = 'person';\nconst HARDCODED_TYPES = [\n 'district_hospital',\n 'health_center',\n 'clinic',\n 'person'\n];\n\nconst getContactTypes = config => {\n return config && Array.isArray(config.contact_types) && config.contact_types || [];\n};\n\nconst getTypeId = (doc) => {\n if (!doc) {\n return;\n }\n return doc.type === 'contact' ? doc.contact_type : doc.type;\n};\n\nconst getTypeById = (config, typeId) => {\n const contactTypes = getContactTypes(config);\n return contactTypes.find(type => type.id === typeId);\n};\n\nconst isPersonType = (type) => {\n return type && (type.person || type.id === HARDCODED_PERSON_TYPE);\n};\n\nconst isPlaceType = (type) => {\n return type && !type.person && type.id !== HARDCODED_PERSON_TYPE;\n};\n\nconst hasParents = (type) => !!(type && type.parents && type.parents.length);\n\nconst isParentOf = (parentType, childType) => {\n if (!parentType || !childType) {\n return false;\n }\n\n const parentTypeId = typeof parentType === 'string' ? parentType : parentType.id;\n return !!(childType && childType.parents && childType.parents.includes(parentTypeId));\n};\n\n// A leaf place type is a contact type that does not have any child place types, but can have child person types\nconst getLeafPlaceTypes = (config) => {\n const types = getContactTypes(config);\n const placeTypes = types.filter(type => !type.person);\n return placeTypes.filter(type => {\n return placeTypes.every(inner => !inner.parents || !inner.parents.includes(type.id));\n });\n};\n\nconst getContactType = (config, contact) => {\n const typeId = getTypeId(contact);\n return typeId && getTypeById(config, typeId);\n};\n\n// returns true if contact's type exists and is a person type OR if contact's type is the hardcoded person type\nconst isPerson = (config, contact) => {\n const typeId = getTypeId(contact);\n const type = getTypeById(config, typeId) || { id: typeId };\n return isPersonType(type);\n};\n\nconst isPlace = (config, contact) => {\n const type = getContactType(config, contact);\n return isPlaceType(type);\n};\n\nconst isHardcodedType = type => HARDCODED_TYPES.includes(type);\n\nconst isOrphan = (type) => !type.parents || !type.parents.length;\n/**\n * Returns an array of child types for the given type id.\n * If parent is falsey, returns the types with no parent.\n */\nconst getChildren = (config, parentType) => {\n const types = getContactTypes(config);\n return types.filter(type => (!parentType && isOrphan(type)) || isParentOf(parentType, type));\n};\n\nconst getPlaceTypes = (config) => getContactTypes(config).filter(isPlaceType);\nconst getPersonTypes = (config) => getContactTypes(config).filter(isPersonType);\n\nmodule.exports = {\n getTypeId,\n getTypeById,\n isPersonType,\n isPlaceType,\n hasParents,\n isParentOf,\n getLeafPlaceTypes,\n getContactType,\n isPerson,\n isPlace,\n isHardcodedType,\n HARDCODED_TYPES,\n getContactTypes,\n getChildren,\n getPlaceTypes,\n getPersonTypes,\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\nconst utils = require('./utils');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nconst getContactById = (contacts, id) => id && contacts.find(contact => contact && contact._id === id);\n\nconst getContactIds = (contacts) => {\n const ids = [];\n contacts.forEach(doc => {\n if (!doc) {\n return;\n }\n\n const id = utils.getId(doc.contact);\n id && ids.push(id);\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n id && ids.push(id);\n });\n });\n\n return _.uniq(ids);\n};\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (utils.isReport(doc)) {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n if (!doc) {\n return;\n }\n const id = utils.getId(doc.contact);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n\n if (!utils.validLinkedDocs(doc)) {\n return;\n }\n\n Object.keys(doc.linked_docs).forEach(key => {\n const id = utils.getId(doc.linked_docs[key]);\n const contactDoc = getContactById(contacts, id);\n if (contactDoc) {\n doc.linked_docs[key] = deepCopy(contactDoc);\n }\n });\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = getContactIds(lineage);\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = getContactById(lineage, id);\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage, placeLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n if (placeLineage && placeLineage.length) {\n const placeDoc = placeLineage.shift();\n fillParentsInDocs(placeDoc, placeLineage);\n doc.place = placeDoc;\n }\n\n return doc;\n };\n\n /*\n * @returns {Object} subjectMaps\n * @returns {Map} subjectMaps.patientUuids - map with [k, v] pairs of [recordUuid, patientUuid]\n * @returns {Map} subjectMaps.placeUuids - map with [k, v] pairs of [recordUuid, placeUuid]\n */\n const fetchSubjectsUuids = (records) => {\n const shortcodes = [];\n const recordToPlaceUuidMap = new Map();\n const recordToPatientUuidMap = new Map();\n\n records.forEach(record => {\n if (!utils.isReport(record)) {\n return;\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n recordToPatientUuidMap.set(record._id, patientId);\n recordToPlaceUuidMap.set(record._id, placeId);\n\n shortcodes.push(patientId, placeId);\n });\n\n if (!shortcodes.some(shortcode => shortcode)) {\n return Promise.resolve({ patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap });\n }\n\n return contactUuidByShortcode(shortcodes).then(shortcodeToUuidMap => {\n records.forEach(record => {\n const patientShortcode = recordToPatientUuidMap.get(record._id);\n recordToPatientUuidMap.set(record._id, shortcodeToUuidMap.get(patientShortcode));\n\n const placeShortcode = recordToPlaceUuidMap.get(record._id);\n recordToPlaceUuidMap.set(record._id, shortcodeToUuidMap.get(placeShortcode));\n });\n\n return { patientUuids: recordToPatientUuidMap, placeUuids: recordToPlaceUuidMap };\n });\n };\n\n /*\n * @returns {Object} lineages\n * @returns {Array} lineages.patientLineage\n * @returns {Array} lineages.placeLineage\n */\n const fetchSubjectLineage = (record) => {\n if (!utils.isReport(record)) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n const patientId = utils.getPatientId(record);\n const placeId = utils.getPlaceId(record);\n\n if (!patientId && !placeId) {\n return Promise.resolve({ patientLineage: [], placeLineage: [] });\n }\n\n return contactUuidByShortcode([patientId, placeId]).then((shortcodeToUuidMap) => {\n const patientUuid = shortcodeToUuidMap.get(patientId);\n const placeUuid = shortcodeToUuidMap.get(placeId);\n\n return fetchLineageByIds([patientUuid, placeUuid]).then((lineages) => {\n const patientLineage = lineages.find(lineage => lineage[0]._id === patientUuid) || [];\n const placeLineage = lineages.find(lineage => lineage[0]._id === placeUuid) || [];\n\n return { patientLineage, placeLineage };\n });\n });\n };\n\n /*\n * @returns {Map} map with [k, v] pairs of [shortcode, uuid]\n */\n const contactUuidByShortcode = function(shortcodes) {\n const keys = shortcodes\n .filter(shortcode => shortcode)\n .map(shortcode => [ 'shortcode', shortcode ]);\n\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n\n return new Map(shortcodes.map(shortcode => ([ shortcode, findIdWithKey(shortcode) || shortcode, ])));\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n let placeLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchSubjectLineage(lineage[0])\n .then((lineages = {}) => {\n patientLineage = lineages.patientLineage;\n placeLineage = lineages.placeLineage;\n\n return fetchContacts(lineage.concat(patientLineage, placeLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n fillContactsInDocs(placeLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage, placeLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (utils.isReport(doc)) {\n const contactId = utils.getId(doc.contact);\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = utils.isReport(doc) ? doc.contact : doc;\n ids.push(...getContactIds(selfAndParents(startLineageFrom)));\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids; // a map of [k, v] pairs with [hydratedDocUuid, patientUuid]\n let placeUuids; // a map of [k, v] pairs with [hydratedDocUuid, placeUuid]\n\n return fetchSubjectsUuids(hydratedDocs)\n .then((subjectMaps) => {\n placeUuids = subjectMaps.placeUuids;\n patientUuids = subjectMaps.patientUuids;\n\n return fetchDocs([...placeUuids.values(), ...patientUuids.values()]);\n })\n .then(subjects => {\n knownDocs.push(...subjects);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(subjects),\n ...collectLeafContactIds(subjects),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return getContactById(parents, id);\n });\n };\n\n const isReport = utils.isReport(doc);\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = getContactById(knownDocs, patientUuids.get(doc._id));\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n const placeDoc = getContactById(knownDocs, placeUuids.get(doc._id));\n const placeLineage = reconstructLineage(placeDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage, placeLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents) and place (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const utils = require('./utils');\nconst RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n\n if (utils.validLinkedDocs(doc)) {\n Object.keys(doc.linked_docs).forEach(key => {\n doc.linked_docs[key] = utils.getId(doc.linked_docs[key]);\n });\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","const contactTypeUtils = require('@medic/contact-types-utils');\nconst _ = require('lodash/core');\n\nconst isContact = doc => {\n if (!doc) {\n return;\n }\n\n return doc.type === 'contact' || contactTypeUtils.HARDCODED_TYPES.includes(doc.type);\n};\n\nconst getId = (item) => item && (typeof item === 'string' ? item : item._id);\n\n// don't process linked docs for non-contact types\n// linked_docs property should be a key-value object\nconst validLinkedDocs = doc => {\n return isContact(doc) && _.isObject(doc.linked_docs) && !_.isArray(doc.linked_docs);\n};\n\nconst isReport = (doc) => doc.type === 'data_record';\nconst getPatientId = (doc) => (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) || doc.patient_id;\nconst getPlaceId = (doc) => (doc.fields && doc.fields.place_id) || doc.place_id;\n\n\nmodule.exports = {\n getId,\n validLinkedDocs,\n isReport,\n getPatientId,\n getPlaceId,\n};\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// Current version.\nvar VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\nvar isString = tagTester('String');\n\nvar isNumber = tagTester('Number');\n\nvar isDate = tagTester('Date');\n\nvar isRegExp = tagTester('RegExp');\n\nvar isError = tagTester('Error');\n\nvar isSymbol = tagTester('Symbol');\n\nvar isArrayBuffer = tagTester('ArrayBuffer');\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nvar isFunction$1 = isFunction;\n\nvar hasObjectTag = tagTester('Object');\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nvar isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nvar isArray = nativeIsArray || tagTester('Array');\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n}());\n\nvar isArguments$1 = isArguments;\n\n// Is a given object a finite number?\nfunction isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n// Is the given value `NaN`?\nfunction isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n// Internal helper to obtain the `byteLength` property of an object.\nvar getByteLength = shallowProperty('byteLength');\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nvar isBufferLike = createSizePropertyCheck(getByteLength);\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nvar isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n// Internal helper to obtain the `length` property of an object.\nvar getLength = shallowProperty('length');\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n}\n\n_$1.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_$1.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n_$1.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\nvar isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\nvar isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\nvar isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\nvar isWeakSet = tagTester('WeakSet');\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nvar extend = createAssigner(allKeys);\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nvar extendOwn = createAssigner(keys);\n\n// Fill in a given object with default properties.\nvar defaults = createAssigner(allKeys, true);\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath$1(path) {\n return isArray(path) ? path : [path];\n}\n_$1.toPath = toPath$1;\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return _$1.toPath(path);\n}\n\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_$1.iteratee = iteratee;\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n// A (possibly faster) way to get the current timestamp as an integer.\nvar now = Date.now || function() {\n return new Date().getTime();\n};\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n// Internal list of HTML entities for escaping.\nvar escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n// Function for escaping strings to HTML interpolation.\nvar _escape = createEscaper(escapeMap);\n\n// Internal list of HTML entities for unescaping.\nvar unescapeMap = invert(escapeMap);\n\n// Function for unescaping strings from HTML interpolation.\nvar _unescape = createEscaper(unescapeMap);\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nvar templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n}\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _$1;\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nvar bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nvar isArrayLike = createSizePropertyCheck(getLength);\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nvar bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nvar delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nvar defer = partial(delay, _$1, 1);\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nvar once = partial(before, 2);\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n// Returns the first index on an array-like that passes a truth test.\nvar findIndex = createPredicateIndexFinder(1);\n\n// Returns the last index on an array-like that passes a truth test.\nvar findLastIndex = createPredicateIndexFinder(-1);\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nvar indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nvar lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nvar reduce = createReduce(1);\n\n// The right-associative version of reduce, also known as `foldr`.\nvar reduceRight = createReduce(-1);\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n// Invoke a method (with arguments) on every item in a collection.\nvar invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return map(obj, property(key));\n}\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nvar groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nvar indexBy = group(function(result, value, key) {\n result[key] = value;\n});\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nvar countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n});\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nvar partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n// Return a copy of the object only containing the allowed properties.\nvar pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n// Return a copy of the object without the disallowed properties.\nvar omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return filter(array, Boolean);\n}\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return flatten$1(array, depth, false);\n}\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nvar difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n// Return a version of the array that does not contain the specified value(s).\nvar without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nvar union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n});\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nvar zip = restArguments(unzip);\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n}\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n}\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\n// Named Exports\n\nvar allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n};\n\n// Default Export\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n\nexports.VERSION = VERSION;\nexports._ = _;\nexports._escape = _escape;\nexports._unescape = _unescape;\nexports.after = after;\nexports.allKeys = allKeys;\nexports.before = before;\nexports.bind = bind;\nexports.bindAll = bindAll;\nexports.chain = chain;\nexports.chunk = chunk;\nexports.clone = clone;\nexports.compact = compact;\nexports.compose = compose;\nexports.constant = constant;\nexports.contains = contains;\nexports.countBy = countBy;\nexports.create = create;\nexports.debounce = debounce;\nexports.defaults = defaults;\nexports.defer = defer;\nexports.delay = delay;\nexports.difference = difference;\nexports.each = each;\nexports.every = every;\nexports.extend = extend;\nexports.extendOwn = extendOwn;\nexports.filter = filter;\nexports.find = find;\nexports.findIndex = findIndex;\nexports.findKey = findKey;\nexports.findLastIndex = findLastIndex;\nexports.findWhere = findWhere;\nexports.first = first;\nexports.flatten = flatten;\nexports.functions = functions;\nexports.get = get;\nexports.groupBy = groupBy;\nexports.has = has;\nexports.identity = identity;\nexports.indexBy = indexBy;\nexports.indexOf = indexOf;\nexports.initial = initial;\nexports.intersection = intersection;\nexports.invert = invert;\nexports.invoke = invoke;\nexports.isArguments = isArguments$1;\nexports.isArray = isArray;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBoolean = isBoolean;\nexports.isDataView = isDataView$1;\nexports.isDate = isDate;\nexports.isElement = isElement;\nexports.isEmpty = isEmpty;\nexports.isEqual = isEqual;\nexports.isError = isError;\nexports.isFinite = isFinite$1;\nexports.isFunction = isFunction$1;\nexports.isMap = isMap;\nexports.isMatch = isMatch;\nexports.isNaN = isNaN$1;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isRegExp = isRegExp;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isTypedArray = isTypedArray$1;\nexports.isUndefined = isUndefined;\nexports.isWeakMap = isWeakMap;\nexports.isWeakSet = isWeakSet;\nexports.iteratee = iteratee;\nexports.keys = keys;\nexports.last = last;\nexports.lastIndexOf = lastIndexOf;\nexports.map = map;\nexports.mapObject = mapObject;\nexports.matcher = matcher;\nexports.max = max;\nexports.memoize = memoize;\nexports.min = min;\nexports.mixin = mixin;\nexports.negate = negate;\nexports.noop = noop;\nexports.now = now;\nexports.object = object;\nexports.omit = omit;\nexports.once = once;\nexports.pairs = pairs;\nexports.partial = partial;\nexports.partition = partition;\nexports.pick = pick;\nexports.pluck = pluck;\nexports.property = property;\nexports.propertyOf = propertyOf;\nexports.random = random;\nexports.range = range;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reject = reject;\nexports.rest = rest;\nexports.restArguments = restArguments;\nexports.result = result;\nexports.sample = sample;\nexports.shuffle = shuffle;\nexports.size = size;\nexports.some = some;\nexports.sortBy = sortBy;\nexports.sortedIndex = sortedIndex;\nexports.tap = tap;\nexports.template = template;\nexports.templateSettings = templateSettings;\nexports.throttle = throttle;\nexports.times = times;\nexports.toArray = toArray;\nexports.toPath = toPath$1;\nexports.union = union;\nexports.uniq = uniq;\nexports.uniqueId = uniqueId;\nexports.unzip = unzip;\nexports.values = values;\nexports.where = where;\nexports.without = without;\nexports.wrap = wrap;\nexports.zip = zip;\n//# sourceMappingURL=underscore-node-f.cjs.map\n","// Underscore.js 1.13.1\n// https://underscorejs.org\n// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nvar underscoreNodeF = require('./underscore-node-f.cjs');\n\n\n\nmodule.exports = underscoreNodeF._;\n//# sourceMappingURL=underscore-node.cjs.map\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, returns tasks for all contacts\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Returns a breakdown of tasks by state and title for the provided list of contacts\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, returns breakdown for all contacts\n * @returns {Promise} The breakdown of tasks counts by state and title\n */\n fetchTasksBreakdown: contactIds => wireupToProvider.fetchTasksBreakdown(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\nconst rowsOf = (query) => query.then(result => uniqBy(result.rows, 'id'));\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n allTaskRowsByOwner: (contactIds) => {\n const keys = contactIds.map(contactId => (['owner', 'all', contactId]));\n return rowsOf(db.query('medic-client/tasks_by_contact', { keys }));\n },\n\n allTaskRows: () => {\n const options = {\n startkey: ['owner', 'all'],\n endkey: ['owner', 'all', '\\ufff0'],\n };\n\n return rowsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, returns tasks for all contacts\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Returns a breakdown of task counts by state and title for the provided contacts, or all contacts\n * Does NOT refresh rules emissions\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, returns breakdown for all contacts\n * @return {Promise<{\n * Ready: number,\n * Draft: number,\n * Failed: number,\n * Completed: number,\n * Cancelled: number,\n *}>}\n */\n fetchTasksBreakdown: (provider, contactIds) => {\n const tasksByState = Object.assign({}, TaskStates.states);\n Object\n .keys(tasksByState)\n .forEach(state => tasksByState[state] = 0);\n\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return Promise.resolve(tasksByState);\n }\n\n const getTasks = contactIds ? provider.allTaskRowsByOwner(contactIds) : provider.allTaskRows();\n\n return getTasks.then(taskRows => {\n taskRows.forEach(({ value: { state } }) => {\n if (Object.hasOwnProperty.call(tasksByState, state)) {\n tasksByState[state]++;\n }\n });\n\n return tasksByState;\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n cht: settings.chtScriptApi,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!contactId) {\n return false;\n }\n\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countPassedEmissionsByGroup = {};\n const countEmissionsByGroup = {};\n\n relevantEmissions.forEach(emission => {\n const groupBy = emission.groupBy;\n if (!groupBy) {\n return;\n }\n if (!countPassedEmissionsByGroup[groupBy]) {\n countPassedEmissionsByGroup[groupBy] = 0;\n countEmissionsByGroup[groupBy] = 0;\n }\n countEmissionsByGroup[groupBy]++;\n if (emission.pass) {\n countPassedEmissionsByGroup[groupBy]++;\n }\n });\n\n const groups = Object.keys(countEmissionsByGroup);\n\n return {\n pass: groups.filter(group => countPassedEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n states: States,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arDz = moment.defineLocale('ar-dz', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'birneçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var br = moment.defineLocale('br', {\n months: \"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu\".split(\n '_'\n ),\n monthsShort: \"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker\".split('_'),\n weekdays: \"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn\".split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: \"[Warc'hoazh da] LT\",\n nextWeek: 'dddd [da] LT',\n lastDay: \"[Dec'h da] LT\",\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: \"%s 'zo\",\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha invalida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var hi = moment.defineLocale('hi', {\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n '_'\n ),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n );\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return (\n '(' +\n monthsSubjective[momentToFormat.month()] +\n '|' +\n monthsNominative[momentToFormat.month()] +\n ')'\n );\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'masiku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Пагоҳ соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js language configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js language configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/cht-core-3-9/shared-libs/calendar-interval/node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.25.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.25.3';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","const moment = require('moment');\n\nconst normalizeStartDate = (intervalStartDate) => {\n intervalStartDate = parseInt(intervalStartDate);\n\n if (isNaN(intervalStartDate) || intervalStartDate <= 0 || intervalStartDate > 31) {\n intervalStartDate = 1;\n }\n\n return intervalStartDate;\n};\n\nconst getMinimumStartDate = (intervalStartDate, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().subtract(1, 'month').date(intervalStartDate).startOf('day'),\n relativeDate.clone().startOf('month')\n )\n .valueOf();\n};\n\nconst getMinimumEndDate = (intervalStartDate, nextMonth, relativeDate) => {\n return moment\n .min(\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').date(intervalStartDate - 1).endOf('day'),\n relativeDate.clone().add(nextMonth ? 1 : 0, 'month').endOf('month')\n )\n .valueOf();\n};\n\nconst getInterval = (intervalStartDate, referenceDate = moment()) => {\n intervalStartDate = normalizeStartDate(intervalStartDate);\n if (intervalStartDate === 1) {\n return {\n start: referenceDate.startOf('month').valueOf(),\n end: referenceDate.endOf('month').valueOf()\n };\n }\n\n if (intervalStartDate <= referenceDate.date()) {\n return {\n start: referenceDate.date(intervalStartDate).startOf('day').valueOf(),\n end: getMinimumEndDate(intervalStartDate, true, referenceDate)\n };\n }\n\n return {\n start: getMinimumStartDate(intervalStartDate, referenceDate),\n end: getMinimumEndDate(intervalStartDate, false, referenceDate)\n };\n};\n\nmodule.exports = {\n // Returns the timestamps of the start and end of the current calendar interval\n // @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n //\n // if `intervalStartDate` exceeds month's day count, the start/end of following/current month is returned\n // f.e. `intervalStartDate` === 31 would generate next intervals :\n // [12-31 -> 01-30], [01-31 -> 02-[28|29]], [03-01 -> 03-30], [03-31 -> 04-30], [05-01 -> 05-30], [05-31 - 06-30]\n getCurrent: (intervalStartDate) => getInterval(intervalStartDate),\n\n /**\n * Returns the timestamps of the start and end of the a calendar interval that contains a reference date\n * @param {Number} [intervalStartDate=1] - day of month when interval starts (1 - 31)\n * @param {Number} timestamp - the reference date the interval should include\n * @returns { start: number, end: number } - timestamps that define the calendar interval\n */\n getInterval: (intervalStartDate, timestamp) => getInterval(intervalStartDate, moment(timestamp)),\n};\n","const _ = require('lodash/core');\n_.uniq = require('lodash/uniq');\n\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj));\n\nconst selfAndParents = function(self) {\n const parents = [];\n let current = self;\n while (current) {\n if (parents.includes(current)) {\n return parents;\n }\n\n parents.push(current);\n current = current.parent;\n }\n return parents;\n};\n\nconst extractParentIds = current => selfAndParents(current)\n .map(parent => parent._id)\n .filter(id => id);\n\nmodule.exports = function(Promise, DB) {\n const fillParentsInDocs = function(doc, lineage) {\n if (!doc || !lineage.length) {\n return doc;\n }\n\n // Parent hierarchy starts at the contact for data_records\n let currentParent;\n if (doc.type === 'data_record') {\n currentParent = doc.contact = lineage.shift() || doc.contact;\n } else {\n // It's a contact\n currentParent = doc;\n }\n\n const parentIds = extractParentIds(currentParent.parent);\n lineage.forEach(function(l, i) {\n currentParent.parent = l ? deepCopy(l) : { _id: parentIds[i] };\n currentParent = currentParent.parent;\n });\n\n return doc;\n };\n\n const fillContactsInDocs = function(docs, contacts) {\n if (!contacts || !contacts.length) {\n return;\n }\n\n docs.forEach(function(doc) {\n const id = doc && doc.contact && doc.contact._id;\n const contactDoc = id && contacts.find(contactDoc => contactDoc._id === id);\n if (contactDoc) {\n doc.contact = deepCopy(contactDoc);\n }\n });\n };\n\n const fetchContacts = function(lineage) {\n const contactIds = _.uniq(\n lineage\n .map(function(doc) {\n return doc && doc.contact && doc.contact._id;\n })\n .filter(function(id) {\n return !!id;\n })\n );\n\n // Only fetch docs that are new to us\n const lineageContacts = [];\n const contactsToFetch = [];\n contactIds.forEach(function(id) {\n const contact = lineage.find(function(doc) {\n return doc && doc._id === id;\n });\n if (contact) {\n lineageContacts.push(deepCopy(contact));\n } else {\n contactsToFetch.push(id);\n }\n });\n\n return fetchDocs(contactsToFetch)\n .then(function(fetchedContacts) {\n return lineageContacts.concat(fetchedContacts);\n });\n };\n\n const mergeLineagesIntoDoc = function(lineage, contacts, patientLineage) {\n const doc = lineage.shift();\n fillParentsInDocs(doc, lineage);\n\n if (patientLineage && patientLineage.length) {\n const patientDoc = patientLineage.shift();\n fillParentsInDocs(patientDoc, patientLineage);\n doc.patient = patientDoc;\n }\n\n return doc;\n };\n\n const findPatientId = function(doc) {\n return (\n doc.type === 'data_record' &&\n (\n (doc.fields && (doc.fields.patient_id || doc.fields.patient_uuid)) ||\n doc.patient_id\n )\n );\n };\n\n const fetchPatientUuids = function(records) {\n const patientIds = records.map(record => findPatientId(record));\n if (!patientIds.some(patientId => patientId)) {\n return Promise.resolve([]);\n }\n return contactUuidByPatientIds(patientIds);\n };\n\n const fetchPatientLineage = function(record) {\n return fetchPatientUuids([record])\n .then(function([uuid]) {\n if (!uuid) {\n return [];\n }\n\n return fetchLineageById(uuid);\n });\n };\n\n const contactUuidByPatientIds = function(patientIds) {\n const keys = patientIds\n .filter(patientId => patientId)\n .map(patientId => [ 'shortcode', patientId ]);\n return DB.query('medic-client/contacts_by_reference', { keys })\n .then(function(results) {\n const findIdWithKey = key => {\n const matchingRow = results.rows.find(row => row.key[1] === key);\n return matchingRow && matchingRow.id;\n };\n return patientIds.map(patientId => findIdWithKey(patientId) || patientId);\n });\n };\n\n const fetchLineageById = function(id) {\n const options = {\n startkey: [id],\n endkey: [id, {}],\n include_docs: true\n };\n return DB.query('medic-client/docs_by_id_lineage', options)\n .then(function(result) {\n return result.rows.map(function(row) {\n return row.doc;\n });\n });\n };\n\n const fetchLineageByIds = function(ids) {\n return fetchDocs(ids).then(function(docs) {\n return hydrateDocs(docs).then(function(hydratedDocs) {\n // Returning a list of docs just like fetchLineageById\n const docsList = [];\n hydratedDocs.forEach(function(hdoc) {\n const docLineage = selfAndParents(hdoc);\n docsList.push(docLineage);\n });\n return docsList;\n });\n });\n };\n\n const fetchDoc = function(id) {\n return DB.get(id)\n .catch(function(err) {\n if (err.status === 404) {\n err.statusCode = 404;\n }\n throw err;\n });\n };\n\n const fetchHydratedDoc = function(id, options = {}, callback) {\n let lineage;\n let patientLineage;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n _.defaults(options, {\n throwWhenMissingLineage: false,\n });\n\n return fetchLineageById(id)\n .then(function(result) {\n lineage = result;\n\n if (lineage.length === 0) {\n if (options.throwWhenMissingLineage) {\n const err = new Error(`Document not found: ${id}`);\n err.code = 404;\n throw err;\n } else {\n // Not a doc that has lineage, just do a normal fetch.\n return fetchDoc(id);\n }\n }\n\n return fetchPatientLineage(lineage[0])\n .then(function(result) {\n patientLineage = result;\n return fetchContacts(lineage.concat(patientLineage));\n })\n .then(function(contacts) {\n fillContactsInDocs(lineage, contacts);\n fillContactsInDocs(patientLineage, contacts);\n return mergeLineagesIntoDoc(lineage, contacts, patientLineage);\n });\n })\n .then(function(result) {\n if (callback) {\n callback(null, result);\n }\n return result;\n })\n .catch(function(err) {\n if (callback) {\n callback(err);\n } else {\n throw err;\n }\n });\n };\n\n // for data_records, include the first-level contact.\n const collectParentIds = function(docs) {\n const ids = [];\n docs.forEach(function(doc) {\n let parent = doc.parent;\n if (doc.type === 'data_record') {\n const contactId = doc.contact && doc.contact._id;\n if (!contactId) {\n return;\n }\n ids.push(contactId);\n parent = doc.contact;\n }\n\n ids.push(...extractParentIds(parent));\n });\n return _.uniq(ids);\n };\n\n // for data_records, doesn't include the first-level contact (it counts as a parent).\n const collectLeafContactIds = function(partiallyHydratedDocs) {\n const ids = [];\n partiallyHydratedDocs.forEach(function(doc) {\n const startLineageFrom = doc.type === 'data_record' ? doc.contact : doc;\n const contactIds = selfAndParents(startLineageFrom)\n .map(parent => parent.contact && parent.contact._id)\n .filter(id => id);\n\n ids.push(...contactIds);\n });\n\n return _.uniq(ids);\n };\n\n const fetchDocs = function(ids) {\n if (!ids || !ids.length) {\n return Promise.resolve([]);\n }\n const keys = _.uniq(ids.filter(id => id));\n if (keys.length === 0) {\n return Promise.resolve([]);\n }\n\n return DB.allDocs({ keys, include_docs: true })\n .then(function(results) {\n return results.rows\n .map(function(row) {\n return row.doc;\n })\n .filter(function(doc) {\n return !!doc;\n });\n });\n };\n\n const hydrateDocs = function(docs) {\n if (!docs.length) {\n return Promise.resolve([]);\n }\n\n const hydratedDocs = deepCopy(docs); // a copy of the original docs which we will incrementally hydrate and return\n const knownDocs = [...hydratedDocs]; // an array of all documents which we have fetched\n\n let patientUuids;\n let patientDocs;\n\n return fetchPatientUuids(hydratedDocs)\n .then(function(uuids) {\n patientUuids = uuids;\n return fetchDocs(patientUuids);\n })\n .then(function(patients) {\n patientDocs = patients;\n knownDocs.push(...patients);\n\n const firstRoundIdsToFetch = _.uniq([\n ...collectParentIds(hydratedDocs),\n ...collectLeafContactIds(hydratedDocs),\n\n ...collectParentIds(patientDocs),\n ...collectLeafContactIds(patientDocs),\n ]);\n\n return fetchDocs(firstRoundIdsToFetch);\n })\n .then(function(firstRoundFetched) {\n knownDocs.push(...firstRoundFetched);\n const secondRoundIdsToFetch = collectLeafContactIds(firstRoundFetched)\n .filter(id => !knownDocs.some(doc => doc._id === id));\n return fetchDocs(secondRoundIdsToFetch);\n })\n .then(function(secondRoundFetched) {\n knownDocs.push(...secondRoundFetched);\n\n fillContactsInDocs(knownDocs, knownDocs);\n hydratedDocs.forEach((doc, i) => {\n const reconstructLineage = (docWithLineage, parents) => {\n const parentIds = extractParentIds(docWithLineage);\n return parentIds.map(id => {\n // how can we use hashmaps?\n return parents.find(doc => doc._id === id);\n });\n };\n\n const isReport = doc.type === 'data_record';\n const findParentsFor = isReport ? doc.contact : doc;\n const lineage = reconstructLineage(findParentsFor, knownDocs);\n\n if (isReport) {\n lineage.unshift(doc);\n }\n\n const patientDoc = patientUuids[i] && patientDocs.find(known => known._id === patientUuids[i]);\n const patientLineage = reconstructLineage(patientDoc, knownDocs);\n\n mergeLineagesIntoDoc(lineage, knownDocs, patientLineage);\n });\n\n return hydratedDocs;\n });\n };\n\n const fetchHydratedDocs = docIds => {\n if (!Array.isArray(docIds)) {\n return Promise.reject(new Error('Invalid parameter: \"docIds\" must be an array'));\n }\n\n if (!docIds.length) {\n return Promise.resolve([]);\n }\n\n if (docIds.length === 1) {\n return fetchHydratedDoc(docIds[0])\n .then(doc => [doc])\n .catch(err => {\n if (err.status === 404) {\n return [];\n }\n\n throw err;\n });\n }\n\n return DB\n .allDocs({ keys: docIds, include_docs: true })\n .then(result => {\n const docs = result.rows.map(row => row.doc).filter(doc => doc);\n return hydrateDocs(docs);\n });\n };\n\n return {\n /**\n * Given a doc id get a doc and all parents, contact (and parents) and patient (and parents)\n * @param {String} id The id of the doc to fetch and hydrate\n * @param {Object} [options] Options for the behavior of the hydration\n * @param {Boolean} [options.throwWhenMissingLineage=false] When true, throw if the doc has nothing to hydrate.\n * When false, does a best effort to return the document regardless of content.\n * @returns {Promise} A promise to return the hydrated doc.\n */\n fetchHydratedDoc: (id, options, callback) => fetchHydratedDoc(id, options, callback),\n\n /**\n * Given an array of ids, returns hydrated versions of every requested doc (using hydrateDocs or fetchHydratedDoc)\n * If a doc is not found, it's simply excluded from the results list\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise} A promise to return the hydrated docs\n */\n fetchHydratedDocs: docIds => fetchHydratedDocs(docIds),\n\n /**\n * Given an array of docs bind the parents, contact (and parents) and patient (and parents)\n * @param {Object[]} docs The array of docs to hydrate\n * @returns {Promise}\n */\n hydrateDocs: docs => hydrateDocs(docs),\n\n fetchLineageById,\n fetchLineageByIds,\n fillContactsInDocs,\n fillParentsInDocs,\n fetchContacts,\n };\n};\n","/**\n * @module lineage\n */\nmodule.exports = (Promise, DB) => Object.assign(\n {},\n require('./hydration')(Promise, DB),\n require('./minify')\n);\n","const RECURSION_LIMIT = 50;\n\n// Minifies things you would attach to another doc:\n// doc.parent = minify(doc.parent)\n// Not:\n// minify(doc)\nfunction minifyLineage(parent) {\n if (!parent || !parent._id) {\n return parent;\n }\n\n const docId = parent._id;\n const result = { _id: parent._id };\n let minified = result;\n for (let guard = RECURSION_LIMIT; parent.parent && parent.parent._id; --guard) {\n if (guard === 0) {\n throw Error(`Could not minify ${docId}, possible parent recursion.`);\n }\n\n minified.parent = { _id: parent.parent._id };\n minified = minified.parent;\n parent = parent.parent;\n }\n\n return result;\n}\n\n/**\n * Remove all hyrdrated items and leave just the ids\n * @param {Object} doc The doc to minify\n */\nfunction minify(doc) {\n if (!doc) {\n return;\n }\n if (doc.parent) {\n doc.parent = minifyLineage(doc.parent);\n }\n if (doc.contact && doc.contact._id) {\n const miniContact = { _id: doc.contact._id };\n if (doc.contact.parent) {\n miniContact.parent = minifyLineage(doc.contact.parent);\n }\n doc.contact = miniContact;\n }\n if (doc.type === 'data_record') {\n delete doc.patient;\n delete doc.place;\n }\n}\n\nmodule.exports = {\n minify,\n minifyLineage,\n};\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","const uniq = require('lodash/uniq');\n\nconst formCodeMatches = (conf, form) => {\n return (new RegExp('^[^a-z]*' + conf + '[^a-z]*$', 'i')).test(form);\n};\n\n// Returns whether `doc` is a valid registration against a configuration\n// This is done by checks roughly similar to the `registration` transition filter function\n// Serves as a replacement for checking for `transitions` metadata within the doc itself\nexports.isValidRegistration = (doc, settings) => {\n if (!doc ||\n (doc.errors && doc.errors.length) ||\n !settings ||\n !settings.registrations ||\n doc.type !== 'data_record' ||\n !doc.form) {\n return false;\n }\n\n // Registration transition should be configured for this form\n const registrationConfiguration = settings.registrations.find((conf) => {\n return conf &&\n conf.form &&\n formCodeMatches(conf.form, doc.form);\n });\n if (!registrationConfiguration) {\n return false;\n }\n\n if (doc.content_type === 'xml') {\n return true;\n }\n\n // SMS forms need to be configured\n const form = settings.forms && settings.forms[doc.form];\n if (!form) {\n return false;\n }\n\n // Require a known submitter or the form to be public.\n return Boolean(form.public_form || doc.contact);\n};\n\nexports._formCodeMatches = formCodeMatches;\n\nconst CONTACT_SUBJECT_PROPERTIES = ['_id', 'patient_id', 'place_id'];\nconst REPORT_SUBJECT_PROPERTIES = ['patient_id', 'patient_uuid', 'place_id', 'place_uuid'];\n\nexports.getSubjectIds = (doc) => {\n const subjectIds = [];\n\n if (!doc) {\n return subjectIds;\n }\n\n if (doc.type === 'data_record') {\n REPORT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n if (doc.fields && doc.fields[prop]) {\n subjectIds.push(doc.fields[prop]);\n }\n });\n } else {\n CONTACT_SUBJECT_PROPERTIES.forEach(prop => {\n if (doc[prop]) {\n subjectIds.push(doc[prop]);\n }\n });\n }\n\n return uniq(subjectIds);\n};\n\nexports.getSubjectId = report => {\n if (!report) {\n return false;\n }\n for (const prop of REPORT_SUBJECT_PROPERTIES) {\n if (report[prop]) {\n return report[prop];\n }\n if (report.fields && report.fields[prop]) {\n return report.fields[prop];\n }\n }\n};\n","(function () {\n \"use strict\";\n\n function defineArgumentsExtended(extended, is) {\n\n var pSlice = Array.prototype.slice,\n isArguments = is.isArguments;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n\n return extended\n .define(isArguments, {\n toArray: argsToArray\n })\n .expose({\n argsToArray: argsToArray\n });\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArgumentsExtended(require(\"extended\"), require(\"is-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\"], function (extended, is) {\n return defineArgumentsExtended(extended, is);\n });\n } else {\n this.argumentsExtended = defineArgumentsExtended(this.extended, this.isExtended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n /*global define*/\n\n function defineArray(extended, is, args) {\n\n var isString = is.isString,\n isArray = Array.isArray || is.isArray,\n isDate = is.isDate,\n floor = Math.floor,\n abs = Math.abs,\n mathMax = Math.max,\n mathMin = Math.min,\n arrayProto = Array.prototype,\n arrayIndexOf = arrayProto.indexOf,\n arrayForEach = arrayProto.forEach,\n arrayMap = arrayProto.map,\n arrayReduce = arrayProto.reduce,\n arrayReduceRight = arrayProto.reduceRight,\n arrayFilter = arrayProto.filter,\n arrayEvery = arrayProto.every,\n arraySome = arrayProto.some,\n argsToArray = args.argsToArray;\n\n\n function cross(num, cros) {\n return reduceRight(cros, function (a, b) {\n if (!isArray(b)) {\n b = [b];\n }\n b.unshift(num);\n a.unshift(b);\n return a;\n }, []);\n }\n\n function permute(num, cross, length) {\n var ret = [];\n for (var i = 0; i < cross.length; i++) {\n ret.push([num].concat(rotate(cross, i)).slice(0, length));\n }\n return ret;\n }\n\n\n function intersection(a, b) {\n var ret = [], aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n ret.push(aOne);\n }\n }\n return ret;\n }\n\n\n var _sort = (function () {\n\n var isAll = function (arr, test) {\n return every(arr, test);\n };\n\n var defaultCmp = function (a, b) {\n return a - b;\n };\n\n var dateSort = function (a, b) {\n return a.getTime() - b.getTime();\n };\n\n return function _sort(arr, property) {\n var ret = [];\n if (isArray(arr)) {\n ret = arr.slice();\n if (property) {\n if (typeof property === \"function\") {\n ret.sort(property);\n } else {\n ret.sort(function (a, b) {\n var aProp = a[property], bProp = b[property];\n if (isString(aProp) && isString(bProp)) {\n return aProp > bProp ? 1 : aProp < bProp ? -1 : 0;\n } else if (isDate(aProp) && isDate(bProp)) {\n return aProp.getTime() - bProp.getTime();\n } else {\n return aProp - bProp;\n }\n });\n }\n } else {\n if (isAll(ret, isString)) {\n ret.sort();\n } else if (isAll(ret, isDate)) {\n ret.sort(dateSort);\n } else {\n ret.sort(defaultCmp);\n }\n }\n }\n return ret;\n };\n\n })();\n\n function indexOf(arr, searchElement, from) {\n var index = (from || 0) - 1,\n length = arr.length;\n while (++index < length) {\n if (arr[index] === searchElement) {\n return index;\n }\n }\n return -1;\n }\n\n function lastIndexOf(arr, searchElement, from) {\n if (!isArray(arr)) {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n\n var n = len;\n if (arguments.length > 2) {\n n = Number(arguments[2]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n\n var k = n >= 0 ? mathMin(n, len - 1) : len - abs(n);\n\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n }\n\n function filter(arr, iterator, scope) {\n if (arr && arrayFilter && arrayFilter === arr.filter) {\n return arr.filter(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i]; // in case fun mutates this\n if (iterator.call(scope, val, i, t)) {\n res.push(val);\n }\n }\n }\n return res;\n }\n\n function forEach(arr, iterator, scope) {\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n if (arr && arrayForEach && arrayForEach === arr.forEach) {\n arr.forEach(iterator, scope);\n return arr;\n }\n for (var i = 0, len = arr.length; i < len; ++i) {\n iterator.call(scope || arr, arr[i], i, arr);\n }\n\n return arr;\n }\n\n function every(arr, iterator, scope) {\n if (arr && arrayEvery && arrayEvery === arr.every) {\n return arr.every(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n function some(arr, iterator, scope) {\n if (arr && arraySome && arraySome === arr.some) {\n return arr.some(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && iterator.call(scope, t[i], i, t)) {\n return true;\n }\n }\n return false;\n }\n\n function map(arr, iterator, scope) {\n if (arr && arrayMap && arrayMap === arr.map) {\n return arr.map(iterator, scope);\n }\n if (!isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n var res = [];\n for (var i = 0; i < len; i++) {\n if (i in t) {\n res.push(iterator.call(scope, t[i], i, t));\n }\n }\n return res;\n }\n\n function reduce(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduce && arrayReduce === arr.reduce) {\n return initial ? arr.reduce(accumulator, curr) : arr.reduce(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n var i = 0, l = arr.length >> 0;\n if (arguments.length < 3) {\n if (l === 0) {\n throw new TypeError(\"Array length is 0 and no second argument\");\n }\n curr = arr[0];\n i = 1; // start accumulating at the second element\n } else {\n curr = arguments[2];\n }\n while (i < l) {\n if (i in arr) {\n curr = accumulator.call(undefined, curr, arr[i], i, arr);\n }\n ++i;\n }\n return curr;\n }\n\n function reduceRight(arr, accumulator, curr) {\n var initial = arguments.length > 2;\n if (arr && arrayReduceRight && arrayReduceRight === arr.reduceRight) {\n return initial ? arr.reduceRight(accumulator, curr) : arr.reduceRight(accumulator);\n }\n if (!isArray(arr) || typeof accumulator !== \"function\") {\n throw new TypeError();\n }\n\n var t = Object(arr);\n var len = t.length >>> 0;\n\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 2) {\n throw new TypeError();\n }\n\n var k = len - 1;\n if (arguments.length >= 3) {\n curr = arguments[2];\n } else {\n do {\n if (k in arr) {\n curr = arr[k--];\n break;\n }\n }\n while (true);\n }\n while (k >= 0) {\n if (k in t) {\n curr = accumulator.call(undefined, curr, t[k], k, t);\n }\n k--;\n }\n return curr;\n }\n\n\n function toArray(o) {\n var ret = [];\n if (o !== null) {\n var args = argsToArray(arguments);\n if (args.length === 1) {\n if (isArray(o)) {\n ret = o;\n } else if (is.isHash(o)) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n ret.push([i, o[i]]);\n }\n }\n } else {\n ret.push(o);\n }\n } else {\n forEach(args, function (a) {\n ret = ret.concat(toArray(a));\n });\n }\n }\n return ret;\n }\n\n function sum(array) {\n array = array || [];\n if (array.length) {\n return reduce(array, function (a, b) {\n return a + b;\n });\n } else {\n return 0;\n }\n }\n\n function avg(arr) {\n arr = arr || [];\n if (arr.length) {\n var total = sum(arr);\n if (is.isNumber(total)) {\n return total / arr.length;\n } else {\n throw new Error(\"Cannot average an array of non numbers.\");\n }\n } else {\n return 0;\n }\n }\n\n function sort(arr, cmp) {\n return _sort(arr, cmp);\n }\n\n function min(arr, cmp) {\n return _sort(arr, cmp)[0];\n }\n\n function max(arr, cmp) {\n return _sort(arr, cmp)[arr.length - 1];\n }\n\n function difference(arr1) {\n var ret = arr1, args = flatten(argsToArray(arguments, 1));\n if (isArray(arr1)) {\n ret = filter(arr1, function (a) {\n return indexOf(args, a) === -1;\n });\n }\n return ret;\n }\n\n function removeDuplicates(arr) {\n var ret = [], i = -1, l, retLength = 0;\n if (arr) {\n l = arr.length;\n while (++i < l) {\n var item = arr[i];\n if (indexOf(ret, item) === -1) {\n ret[retLength++] = item;\n }\n }\n }\n return ret;\n }\n\n\n function unique(arr) {\n return removeDuplicates(arr);\n }\n\n\n function rotate(arr, numberOfTimes) {\n var ret = arr.slice();\n if (typeof numberOfTimes !== \"number\") {\n numberOfTimes = 1;\n }\n if (numberOfTimes && isArray(arr)) {\n if (numberOfTimes > 0) {\n ret.push(ret.shift());\n numberOfTimes--;\n } else {\n ret.unshift(ret.pop());\n numberOfTimes++;\n }\n return rotate(ret, numberOfTimes);\n } else {\n return ret;\n }\n }\n\n function permutations(arr, length) {\n var ret = [];\n if (isArray(arr)) {\n var copy = arr.slice(0);\n if (typeof length !== \"number\") {\n length = arr.length;\n }\n if (!length) {\n ret = [\n []\n ];\n } else if (length <= arr.length) {\n ret = reduce(arr, function (a, b, i) {\n var ret;\n if (length > 1) {\n ret = permute(b, rotate(copy, i).slice(1), length);\n } else {\n ret = [\n [b]\n ];\n }\n return a.concat(ret);\n }, []);\n }\n }\n return ret;\n }\n\n function zip() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n var arr1 = arrs.shift();\n if (isArray(arr1)) {\n ret = reduce(arr1, function (a, b, i) {\n var curr = [b];\n for (var j = 0; j < arrs.length; j++) {\n var currArr = arrs[j];\n if (isArray(currArr) && !is.isUndefined(currArr[i])) {\n curr.push(currArr[i]);\n } else {\n curr.push(null);\n }\n }\n a.push(curr);\n return a;\n }, []);\n }\n }\n return ret;\n }\n\n function transpose(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n var last;\n forEach(arr, function (a) {\n if (isArray(a) && (!last || a.length === last.length)) {\n forEach(a, function (b, i) {\n if (!ret[i]) {\n ret[i] = [];\n }\n ret[i].push(b);\n });\n last = a;\n }\n });\n }\n return ret;\n }\n\n function valuesAt(arr, indexes) {\n var ret = [];\n indexes = argsToArray(arguments);\n arr = indexes.shift();\n if (isArray(arr) && indexes.length) {\n for (var i = 0, l = indexes.length; i < l; i++) {\n ret.push(arr[indexes[i]] || null);\n }\n }\n return ret;\n }\n\n function union() {\n var ret = [];\n var arrs = argsToArray(arguments);\n if (arrs.length > 1) {\n for (var i = 0, l = arrs.length; i < l; i++) {\n ret = ret.concat(arrs[i]);\n }\n ret = removeDuplicates(ret);\n }\n return ret;\n }\n\n function intersect() {\n var collect = [], sets, i = -1 , l;\n if (arguments.length > 1) {\n //assume we are intersections all the lists in the array\n sets = argsToArray(arguments);\n } else {\n sets = arguments[0];\n }\n if (isArray(sets)) {\n collect = sets[0];\n i = 0;\n l = sets.length;\n while (++i < l) {\n collect = intersection(collect, sets[i]);\n }\n }\n return removeDuplicates(collect);\n }\n\n function powerSet(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = reduce(arr, function (a, b) {\n var ret = map(a, function (c) {\n return c.concat(b);\n });\n return a.concat(ret);\n }, [\n []\n ]);\n }\n return ret;\n }\n\n function cartesian(a, b) {\n var ret = [];\n if (isArray(a) && isArray(b) && a.length && b.length) {\n ret = cross(a[0], b).concat(cartesian(a.slice(1), b));\n }\n return ret;\n }\n\n function compact(arr) {\n var ret = [];\n if (isArray(arr) && arr.length) {\n ret = filter(arr, function (item) {\n return !is.isUndefinedOrNull(item);\n });\n }\n return ret;\n }\n\n function multiply(arr, times) {\n times = is.isNumber(times) ? times : 1;\n if (!times) {\n //make sure times is greater than zero if it is zero then dont multiply it\n times = 1;\n }\n arr = toArray(arr || []);\n var ret = [], i = 0;\n while (++i <= times) {\n ret = ret.concat(arr);\n }\n return ret;\n }\n\n function flatten(arr) {\n var set;\n var args = argsToArray(arguments);\n if (args.length > 1) {\n //assume we are intersections all the lists in the array\n set = args;\n } else {\n set = toArray(arr);\n }\n return reduce(set, function (a, b) {\n return a.concat(b);\n }, []);\n }\n\n function pluck(arr, prop) {\n prop = prop.split(\".\");\n var result = arr.slice(0);\n forEach(prop, function (prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n result = map(result, function (item) {\n return exec ? item[exec[1]]() : item[prop];\n });\n });\n return result;\n }\n\n function invoke(arr, func, args) {\n args = argsToArray(arguments, 2);\n return map(arr, function (item) {\n var exec = isString(func) ? item[func] : func;\n return exec.apply(item, args);\n });\n }\n\n\n var array = {\n toArray: toArray,\n sum: sum,\n avg: avg,\n sort: sort,\n min: min,\n max: max,\n difference: difference,\n removeDuplicates: removeDuplicates,\n unique: unique,\n rotate: rotate,\n permutations: permutations,\n zip: zip,\n transpose: transpose,\n valuesAt: valuesAt,\n union: union,\n intersect: intersect,\n powerSet: powerSet,\n cartesian: cartesian,\n compact: compact,\n multiply: multiply,\n flatten: flatten,\n pluck: pluck,\n invoke: invoke,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n reduceRight: reduceRight,\n some: some,\n every: every,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf\n };\n\n return extended.define(isArray, array).expose(array);\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineArray(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineArray(extended, is, args);\n });\n } else {\n this.arrayExtended = defineArray(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","(function () {\n \"use strict\";\n\n function defineDate(extended, is, array) {\n\n function _pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function _truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = _truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function every(arr, iterator, scope) {\n if (!is.isArray(arr) || typeof iterator !== \"function\") {\n throw new TypeError();\n }\n var t = Object(arr);\n var len = t.length >>> 0;\n for (var i = 0; i < len; i++) {\n if (i in t && !iterator.call(scope, t[i], i, t)) {\n return false;\n }\n }\n return true;\n }\n\n\n var transforms = (function () {\n var floor = Math.floor, round = Math.round;\n\n var addMap = {\n day: function addDay(date, amount) {\n return [amount, \"Date\", false];\n },\n weekday: function addWeekday(date, amount) {\n // Divide the increment time span into weekspans plus leftover days\n // e.g., 8 days is one 5-day weekspan / and two leftover days\n // Can't have zero leftover days, so numbers divisible by 5 get\n // a days value of 5, and the remaining days make up the number of weeks\n var days, weeks, mod = amount % 5, strt = date.getDay(), adj = 0;\n if (!mod) {\n days = (amount > 0) ? 5 : -5;\n weeks = (amount > 0) ? ((amount - 5) / 5) : ((amount + 5) / 5);\n } else {\n days = mod;\n weeks = parseInt(amount / 5, 10);\n }\n if (strt === 6 && amount > 0) {\n adj = 1;\n } else if (strt === 0 && amount < 0) {\n // Orig date is Sun / negative increment\n // Jump back over Sat\n adj = -1;\n }\n // Get weekday val for the new date\n var trgt = strt + days;\n // New date is on Sat or Sun\n if (trgt === 0 || trgt === 6) {\n adj = (amount > 0) ? 2 : -2;\n }\n // Increment by number of weeks plus leftover days plus\n // weekend adjustments\n return [(7 * weeks) + days + adj, \"Date\", false];\n },\n year: function addYear(date, amount) {\n return [amount, \"FullYear\", true];\n },\n week: function addWeek(date, amount) {\n return [amount * 7, \"Date\", false];\n },\n quarter: function addYear(date, amount) {\n return [amount * 3, \"Month\", true];\n },\n month: function addYear(date, amount) {\n return [amount, \"Month\", true];\n }\n };\n\n function addTransform(interval, date, amount) {\n interval = interval.replace(/s$/, \"\");\n if (addMap.hasOwnProperty(interval)) {\n return addMap[interval](date, amount);\n }\n return [amount, \"UTC\" + interval.charAt(0).toUpperCase() + interval.substring(1) + \"s\", false];\n }\n\n\n var differenceMap = {\n \"quarter\": function quarterDifference(date1, date2, utc) {\n var yearDiff = date2.getFullYear() - date1.getFullYear();\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n // Figure out which quarter the months are in\n var q1 = floor(m1 / 3) + 1;\n var q2 = floor(m2 / 3) + 1;\n // Add quarters for any year difference between the dates\n q2 += (yearDiff * 4);\n return q2 - q1;\n },\n\n \"weekday\": function weekdayDifference(date1, date2, utc) {\n var days = differenceTransform(\"day\", date1, date2, utc), weeks;\n var mod = days % 7;\n // Even number of weeks\n if (mod === 0) {\n days = differenceTransform(\"week\", date1, date2, utc) * 5;\n } else {\n // Weeks plus spare change (< 7 days)\n var adj = 0, aDay = date1[utc ? \"getUTCDay\" : \"getDay\"](), bDay = date2[utc ? \"getUTCDay\" : \"getDay\"]();\n weeks = parseInt(days / 7, 10);\n // Mark the date advanced by the number of\n // round weeks (may be zero)\n var dtMark = new Date(+date1);\n dtMark.setDate(dtMark[utc ? \"getUTCDate\" : \"getDate\"]() + (weeks * 7));\n var dayMark = dtMark[utc ? \"getUTCDay\" : \"getDay\"]();\n\n // Spare change days -- 6 or less\n if (days > 0) {\n if (aDay === 6 || bDay === 6) {\n adj = -1;\n } else if (aDay === 0) {\n adj = 0;\n } else if (bDay === 0 || (dayMark + mod) > 5) {\n adj = -2;\n }\n } else if (days < 0) {\n if (aDay === 6) {\n adj = 0;\n } else if (aDay === 0 || bDay === 0) {\n adj = 1;\n } else if (bDay === 6 || (dayMark + mod) < 0) {\n adj = 2;\n }\n }\n days += adj;\n days -= (weeks * 2);\n }\n return days;\n },\n year: function (date1, date2) {\n return date2.getFullYear() - date1.getFullYear();\n },\n month: function (date1, date2, utc) {\n var m1 = date1[utc ? \"getUTCMonth\" : \"getMonth\"]();\n var m2 = date2[utc ? \"getUTCMonth\" : \"getMonth\"]();\n return (m2 - m1) + ((date2.getFullYear() - date1.getFullYear()) * 12);\n },\n week: function (date1, date2, utc) {\n return round(differenceTransform(\"day\", date1, date2, utc) / 7);\n },\n day: function (date1, date2) {\n return 1.1574074074074074e-8 * (date2.getTime() - date1.getTime());\n },\n hour: function (date1, date2) {\n return 2.7777777777777776e-7 * (date2.getTime() - date1.getTime());\n },\n minute: function (date1, date2) {\n return 0.000016666666666666667 * (date2.getTime() - date1.getTime());\n },\n second: function (date1, date2) {\n return 0.001 * (date2.getTime() - date1.getTime());\n },\n millisecond: function (date1, date2) {\n return date2.getTime() - date1.getTime();\n }\n };\n\n\n function differenceTransform(interval, date1, date2, utc) {\n interval = interval.replace(/s$/, \"\");\n return round(differenceMap[interval](date1, date2, utc));\n }\n\n\n return {\n addTransform: addTransform,\n differenceTransform: differenceTransform\n };\n }()),\n addTransform = transforms.addTransform,\n differenceTransform = transforms.differenceTransform;\n\n\n /**\n * @ignore\n * Based on DOJO Date Implementation\n *\n * Dojo is available under *either* the terms of the modified BSD license *or* the\n * Academic Free License version 2.1. As a recipient of Dojo, you may choose which\n * license to receive this code under (except as noted in per-module LICENSE\n * files). Some modules may not be the copyright of the Dojo Foundation. These\n * modules contain explicit declarations of copyright in both the LICENSE files in\n * the directories in which they reside and in the code itself. No external\n * contributions are allowed under licenses which are fundamentally incompatible\n * with the AFL or BSD licenses that Dojo is distributed under.\n *\n */\n\n var floor = Math.floor, round = Math.round, min = Math.min, pow = Math.pow, ceil = Math.ceil, abs = Math.abs;\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var monthAbbr = [\"Jan.\", \"Feb.\", \"Mar.\", \"Apr.\", \"May.\", \"Jun.\", \"Jul.\", \"Aug.\", \"Sep.\", \"Oct.\", \"Nov.\", \"Dec.\"];\n var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n var dayAbbr = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n var eraNames = [\"Before Christ\", \"Anno Domini\"];\n var eraAbbr = [\"BC\", \"AD\"];\n\n\n function getDayOfYear(/*Date*/dateObject, utc) {\n // summary: gets the day of the year as represented by dateObject\n return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject, null, utc) + 1; // Number\n }\n\n function getWeekOfYear(/*Date*/dateObject, /*Number*/firstDayOfWeek, utc) {\n firstDayOfWeek = firstDayOfWeek || 0;\n var fullYear = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n var firstDayOfYear = new Date(fullYear, 0, 1).getDay(),\n adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,\n week = floor((getDayOfYear(dateObject) + adj - 1) / 7);\n\n // if year starts on the specified day, start counting weeks at 1\n if (firstDayOfYear === firstDayOfWeek) {\n week++;\n }\n\n return week; // Number\n }\n\n function getTimezoneName(/*Date*/dateObject) {\n var str = dateObject.toString();\n var tz = '';\n var pos = str.indexOf('(');\n if (pos > -1) {\n tz = str.substring(++pos, str.indexOf(')'));\n }\n return tz; // String\n }\n\n\n function buildDateEXP(pattern, tokens) {\n return pattern.replace(/([a-z])\\1*/ig,function (match) {\n // Build a simple regexp. Avoid captures, which would ruin the tokens list\n var s,\n c = match.charAt(0),\n l = match.length,\n p2 = '0?',\n p3 = '0{0,2}';\n if (c === 'y') {\n s = '\\\\d{2,4}';\n } else if (c === \"M\") {\n s = (l > 2) ? '\\\\S+?' : '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"D\") {\n s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|' + p3 + '[1-9][0-9]|' + p2 + '[1-9]';\n } else if (c === \"d\") {\n s = '3[01]|[12]\\\\d|' + p2 + '[1-9]';\n } else if (c === \"w\") {\n s = '[1-4][0-9]|5[0-3]|' + p2 + '[1-9]';\n } else if (c === \"E\") {\n s = '\\\\S+';\n } else if (c === \"h\") {\n s = '1[0-2]|' + p2 + '[1-9]';\n } else if (c === \"K\") {\n s = '1[01]|' + p2 + '\\\\d';\n } else if (c === \"H\") {\n s = '1\\\\d|2[0-3]|' + p2 + '\\\\d';\n } else if (c === \"k\") {\n s = '1\\\\d|2[0-4]|' + p2 + '[1-9]';\n } else if (c === \"m\" || c === \"s\") {\n s = '[0-5]\\\\d';\n } else if (c === \"S\") {\n s = '\\\\d{' + l + '}';\n } else if (c === \"a\") {\n var am = 'AM', pm = 'PM';\n s = am + '|' + pm;\n if (am !== am.toLowerCase()) {\n s += '|' + am.toLowerCase();\n }\n if (pm !== pm.toLowerCase()) {\n s += '|' + pm.toLowerCase();\n }\n s = s.replace(/\\./g, \"\\\\.\");\n } else if (c === 'v' || c === 'z' || c === 'Z' || c === 'G' || c === 'q' || c === 'Q') {\n s = \".*\";\n } else {\n s = c === \" \" ? \"\\\\s*\" : c + \"*\";\n }\n if (tokens) {\n tokens.push(match);\n }\n\n return \"(\" + s + \")\"; // add capture\n }).replace(/[\\xa0 ]/g, \"[\\\\s\\\\xa0]\"); // normalize whitespace. Need explicit handling of \\xa0 for IE.\n }\n\n\n /**\n * @namespace Utilities for Dates\n */\n var date = {\n\n /**@lends date*/\n\n /**\n * Returns the number of days in the month of a date\n *\n * @example\n *\n * dateExtender.getDaysInMonth(new Date(2006, 1, 1)); //28\n * dateExtender.getDaysInMonth(new Date(2004, 1, 1)); //29\n * dateExtender.getDaysInMonth(new Date(2006, 2, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 3, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 4, 1)); //31\n * dateExtender.getDaysInMonth(new Date(2006, 5, 1)); //30\n * dateExtender.getDaysInMonth(new Date(2006, 6, 1)); //31\n * @param {Date} dateObject the date containing the month\n * @return {Number} the number of days in the month\n */\n getDaysInMonth: function (/*Date*/dateObject) {\n //\tsummary:\n //\t\tReturns the number of days in the month used by dateObject\n var month = dateObject.getMonth();\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month === 1 && date.isLeapYear(dateObject)) {\n return 29;\n } // Number\n return days[month]; // Number\n },\n\n /**\n * Determines if a date is a leap year\n *\n * @example\n *\n * dateExtender.isLeapYear(new Date(1600, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2004, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2000, 0, 1)); //true\n * dateExtender.isLeapYear(new Date(2006, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1900, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1800, 0, 1)); //false\n * dateExtender.isLeapYear(new Date(1700, 0, 1)); //false\n *\n * @param {Date} dateObject\n * @returns {Boolean} true if it is a leap year false otherwise\n */\n isLeapYear: function (/*Date*/dateObject, utc) {\n var year = dateObject[utc ? \"getUTCFullYear\" : \"getFullYear\"]();\n return (year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0);\n\n },\n\n /**\n * Determines if a date is on a weekend\n *\n * @example\n *\n * var thursday = new Date(2006, 8, 21);\n * var saturday = new Date(2006, 8, 23);\n * var sunday = new Date(2006, 8, 24);\n * var monday = new Date(2006, 8, 25);\n * dateExtender.isWeekend(thursday)); //false\n * dateExtender.isWeekend(saturday); //true\n * dateExtender.isWeekend(sunday); //true\n * dateExtender.isWeekend(monday)); //false\n *\n * @param {Date} dateObject the date to test\n *\n * @returns {Boolean} true if the date is a weekend\n */\n isWeekend: function (/*Date?*/dateObject, utc) {\n // summary:\n //\tDetermines if the date falls on a weekend, according to local custom.\n var day = (dateObject || new Date())[utc ? \"getUTCDay\" : \"getDay\"]();\n return day === 0 || day === 6;\n },\n\n /**\n * Get the timezone of a date\n *\n * @example\n * //just setting the strLocal to simulate the toString() of a date\n * dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)';\n * //just setting the strLocal to simulate the locale\n * dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)';\n * dt.strLocale = 'Sun Sep 17 22:57:18 2006';\n * dateExtender.getTimezoneName(dt); //'CDT'\n * @param dateObject the date to get the timezone from\n *\n * @returns {String} the timezone of the date\n */\n getTimezoneName: getTimezoneName,\n\n /**\n * Compares two dates\n *\n * @example\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * dateExtender.compare(d1, d1); // 0\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d1, d2, \"date\"); // 1\n * dateExtender.compare(d1, d2, \"datetime\"); // 1\n *\n * var d1 = new Date();\n * d1.setHours(0);\n * var d2 = new Date();\n * d2.setFullYear(2005);\n * d2.setHours(12);\n * dateExtender.compare(d2, d1, \"date\"); // -1\n * dateExtender.compare(d1, d2, \"time\"); //-1\n *\n * @param {Date|String} date1 the date to comapare\n * @param {Date|String} [date2=new Date()] the date to compare date1 againse\n * @param {\"date\"|\"time\"|\"datetime\"} portion compares the portion specified\n *\n * @returns -1 if date1 is < date2 0 if date1 === date2 1 if date1 > date2\n */\n compare: function (/*Date*/date1, /*Date*/date2, /*String*/portion) {\n date1 = new Date(+date1);\n date2 = new Date(+(date2 || new Date()));\n\n if (portion === \"date\") {\n // Ignore times and compare dates.\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n } else if (portion === \"time\") {\n // Ignore dates and compare times.\n date1.setFullYear(0, 0, 0);\n date2.setFullYear(0, 0, 0);\n }\n return date1 > date2 ? 1 : date1 < date2 ? -1 : 0;\n },\n\n\n /**\n * Adds a specified interval and amount to a date\n *\n * @example\n * var dtA = new Date(2005, 11, 27);\n * dateExtender.add(dtA, \"year\", 1); //new Date(2006, 11, 27);\n * dateExtender.add(dtA, \"years\", 1); //new Date(2006, 11, 27);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"quarter\", 1); //new Date(2000, 3, 1);\n * dateExtender.add(dtA, \"quarters\", 1); //new Date(2000, 3, 1);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 1);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 1);\n *\n * dtA = new Date(2000, 0, 31);\n * dateExtender.add(dtA, \"month\", 1); //new Date(2000, 1, 29);\n * dateExtender.add(dtA, \"months\", 1); //new Date(2000, 1, 29);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"week\", 1); //new Date(2000, 0, 8);\n * dateExtender.add(dtA, \"weeks\", 1); //new Date(2000, 0, 8);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"day\", 1); //new Date(2000, 0, 2);\n *\n * dtA = new Date(2000, 0, 1);\n * dateExtender.add(dtA, \"weekday\", 1); //new Date(2000, 0, 3);\n *\n * dtA = new Date(2000, 0, 1, 11);\n * dateExtender.add(dtA, \"hour\", 1); //new Date(2000, 0, 1, 12);\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dateExtender.add(dtA, \"minute\", 1); //new Date(2001, 0, 1, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dateExtender.add(dtA, \"second\", 1); //new Date(2001, 0, 1, 0, 0, 0);\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dateExtender.add(dtA, \"millisecond\", 1); //new Date(2001, 0, 1, 0, 0, 0, 0);\n *\n * @param {Date} date\n * @param {String} interval the interval to add\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n * @param {Number} [amount=0] the amount to add\n */\n add: function (/*Date*/date, /*String*/interval, /*int*/amount) {\n var res = addTransform(interval, date, amount || 0);\n amount = res[0];\n var property = res[1];\n var sum = new Date(+date);\n var fixOvershoot = res[2];\n if (property) {\n sum[\"set\" + property](sum[\"get\" + property]() + amount);\n }\n\n if (fixOvershoot && (sum.getDate() < date.getDate())) {\n sum.setDate(0);\n }\n\n return sum; // Date\n },\n\n /**\n * Finds the difference between two dates based on the specified interval\n *\n * @example\n *\n * var dtA, dtB;\n *\n * dtA = new Date(2005, 11, 27);\n * dtB = new Date(2006, 11, 27);\n * dateExtender.difference(dtA, dtB, \"year\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2001, 2, 1);\n * dateExtender.difference(dtA, dtB, \"quarter\"); //4\n * dateExtender.difference(dtA, dtB, \"month\"); //13\n *\n * dtA = new Date(2000, 1, 1);\n * dtB = new Date(2000, 1, 8);\n * dateExtender.difference(dtA, dtB, \"week\"); //1\n *\n * dtA = new Date(2000, 1, 29);\n * dtB = new Date(2000, 2, 1);\n * dateExtender.difference(dtA, dtB, \"day\"); //1\n *\n * dtA = new Date(2006, 7, 3);\n * dtB = new Date(2006, 7, 11);\n * dateExtender.difference(dtA, dtB, \"weekday\"); //6\n *\n * dtA = new Date(2000, 11, 31, 23);\n * dtB = new Date(2001, 0, 1, 0);\n * dateExtender.difference(dtA, dtB, \"hour\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59);\n * dtB = new Date(2001, 0, 1, 0, 0);\n * dateExtender.difference(dtA, dtB, \"minute\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59);\n * dtB = new Date(2001, 0, 1, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"second\"); //1\n *\n * dtA = new Date(2000, 11, 31, 23, 59, 59, 999);\n * dtB = new Date(2001, 0, 1, 0, 0, 0, 0);\n * dateExtender.difference(dtA, dtB, \"millisecond\"); //1\n *\n *\n * @param {Date} date1\n * @param {Date} [date2 = new Date()]\n * @param {String} [interval = \"day\"] the intercal to find the difference of.\n *
    \n *
  • day | days
  • \n *
  • weekday | weekdays
  • \n *
  • year | years
  • \n *
  • week | weeks
  • \n *
  • quarter | quarters
  • \n *
  • months | months
  • \n *
  • hour | hours
  • \n *
  • minute | minutes
  • \n *
  • second | seconds
  • \n *
  • millisecond | milliseconds
  • \n *
\n */\n difference: function (/*Date*/date1, /*Date?*/date2, /*String*/interval, utc) {\n date2 = date2 || new Date();\n interval = interval || \"day\";\n return differenceTransform(interval, date1, date2, utc);\n },\n\n /**\n * Formats a date to the specidifed format string\n *\n * @example\n *\n * var date = new Date(2006, 7, 11, 0, 55, 12, 345);\n * dateExtender.format(date, \"EEEE, MMMM dd, yyyy\"); //\"Friday, August 11, 2006\"\n * dateExtender.format(date, \"M/dd/yy\"); //\"8/11/06\"\n * dateExtender.format(date, \"E\"); //\"6\"\n * dateExtender.format(date, \"h:m a\"); //\"12:55 AM\"\n * dateExtender.format(date, 'h:m:s'); //\"12:55:12\"\n * dateExtender.format(date, 'h:m:s.SS'); //\"12:55:12.35\"\n * dateExtender.format(date, 'k:m:s.SS'); //\"24:55:12.35\"\n * dateExtender.format(date, 'H:m:s.SS'); //\"0:55:12.35\"\n * dateExtender.format(date, \"ddMMyyyy\"); //\"11082006\"\n *\n * @param date the date to format\n * @param {String} format the format of the date composed of the following options\n *
    \n *
  • G Era designator Text AD
  • \n *
  • y Year Year 1996; 96
  • \n *
  • M Month in year Month July; Jul; 07
  • \n *
  • w Week in year Number 27
  • \n *
  • W Week in month Number 2
  • \n *
  • D Day in year Number 189
  • \n *
  • d Day in month Number 10
  • \n *
  • E Day in week Text Tuesday; Tue
  • \n *
  • a Am/pm marker Text PM
  • \n *
  • H Hour in day (0-23) Number 0
  • \n *
  • k Hour in day (1-24) Number 24
  • \n *
  • K Hour in am/pm (0-11) Number 0
  • \n *
  • h Hour in am/pm (1-12) Number 12
  • \n *
  • m Minute in hour Number 30
  • \n *
  • s Second in minute Number 55
  • \n *
  • S Millisecond Number 978
  • \n *
  • z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
  • \n *
  • Z Time zone RFC 822 time zone -0800
  • \n *
\n */\n format: function (date, format, utc) {\n utc = utc || false;\n var fullYear, month, day, d, hour, minute, second, millisecond;\n if (utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n day = date.getUTCDay();\n d = date.getUTCDate();\n hour = date.getUTCHours();\n minute = date.getUTCMinutes();\n second = date.getUTCSeconds();\n millisecond = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n d = date.getDate();\n day = date.getDay();\n hour = date.getHours();\n minute = date.getMinutes();\n second = date.getSeconds();\n millisecond = date.getMilliseconds();\n }\n return format.replace(/([A-Za-z])\\1*/g, function (match) {\n var s, pad,\n c = match.charAt(0),\n l = match.length;\n if (c === 'd') {\n s = \"\" + d;\n pad = true;\n } else if (c === \"H\" && !s) {\n s = \"\" + hour;\n pad = true;\n } else if (c === 'm' && !s) {\n s = \"\" + minute;\n pad = true;\n } else if (c === 's') {\n if (!s) {\n s = \"\" + second;\n }\n pad = true;\n } else if (c === \"G\") {\n s = ((l < 4) ? eraAbbr : eraNames)[fullYear < 0 ? 0 : 1];\n } else if (c === \"y\") {\n s = fullYear;\n if (l > 1) {\n if (l === 2) {\n s = _truncate(\"\" + s, 2, true);\n } else {\n pad = true;\n }\n }\n } else if (c.toUpperCase() === \"Q\") {\n s = ceil((month + 1) / 3);\n pad = true;\n } else if (c === \"M\") {\n if (l < 3) {\n s = month + 1;\n pad = true;\n } else {\n s = (l === 3 ? monthAbbr : monthNames)[month];\n }\n } else if (c === \"w\") {\n s = getWeekOfYear(date, 0, utc);\n pad = true;\n } else if (c === \"D\") {\n s = getDayOfYear(date, utc);\n pad = true;\n } else if (c === \"E\") {\n if (l < 3) {\n s = day + 1;\n pad = true;\n } else {\n s = (l === -3 ? dayAbbr : dayNames)[day];\n }\n } else if (c === 'a') {\n s = (hour < 12) ? 'AM' : 'PM';\n } else if (c === \"h\") {\n s = (hour % 12) || 12;\n pad = true;\n } else if (c === \"K\") {\n s = (hour % 12);\n pad = true;\n } else if (c === \"k\") {\n s = hour || 24;\n pad = true;\n } else if (c === \"S\") {\n s = round(millisecond * pow(10, l - 3));\n pad = true;\n } else if (c === \"z\" || c === \"v\" || c === \"Z\") {\n s = getTimezoneName(date);\n if ((c === \"z\" || c === \"v\") && !s) {\n l = 4;\n }\n if (!s || c === \"Z\") {\n var offset = date.getTimezoneOffset();\n var tz = [\n (offset >= 0 ? \"-\" : \"+\"),\n _pad(floor(abs(offset) / 60), 2, \"0\"),\n _pad(abs(offset) % 60, 2, \"0\")\n ];\n if (l === 4) {\n tz.splice(0, 0, \"GMT\");\n tz.splice(3, 0, \":\");\n }\n s = tz.join(\"\");\n }\n } else {\n s = match;\n }\n if (pad) {\n s = _pad(s, l, '0');\n }\n return s;\n });\n }\n\n };\n\n var numberDate = {};\n\n function addInterval(interval) {\n numberDate[interval + \"sFromNow\"] = function (val) {\n return date.add(new Date(), interval, val);\n };\n numberDate[interval + \"sAgo\"] = function (val) {\n return date.add(new Date(), interval, -val);\n };\n }\n\n var intervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\n for (var i = 0, l = intervals.length; i < l; i++) {\n addInterval(intervals[i]);\n }\n\n var stringDate = {\n\n parseDate: function (dateStr, format) {\n if (!format) {\n throw new Error('format required when calling dateExtender.parse');\n }\n var tokens = [], regexp = buildDateEXP(format, tokens),\n re = new RegExp(\"^\" + regexp + \"$\", \"i\"),\n match = re.exec(dateStr);\n if (!match) {\n return null;\n } // null\n var result = [1970, 0, 1, 0, 0, 0, 0], // will get converted to a Date at the end\n amPm = \"\",\n valid = every(match, function (v, i) {\n if (i) {\n var token = tokens[i - 1];\n var l = token.length, type = token.charAt(0);\n if (type === 'y') {\n if (v < 100) {\n v = parseInt(v, 10);\n //choose century to apply, according to a sliding window\n //of 80 years before and 20 years after present year\n var year = '' + new Date().getFullYear(),\n century = year.substring(0, 2) * 100,\n cutoff = min(year.substring(2, 4) + 20, 99);\n result[0] = (v < cutoff) ? century + v : century - 100 + v;\n } else {\n result[0] = v;\n }\n } else if (type === \"M\") {\n if (l > 2) {\n var months = monthNames, j, k;\n if (l === 3) {\n months = monthAbbr;\n }\n //Tolerate abbreviating period in month part\n //Case-insensitive comparison\n v = v.replace(\".\", \"\").toLowerCase();\n var contains = false;\n for (j = 0, k = months.length; j < k && !contains; j++) {\n var s = months[j].replace(\".\", \"\").toLocaleLowerCase();\n if (s === v) {\n v = j;\n contains = true;\n }\n }\n if (!contains) {\n return false;\n }\n } else {\n v--;\n }\n result[1] = v;\n } else if (type === \"E\" || type === \"e\") {\n var days = dayNames;\n if (l === 3) {\n days = dayAbbr;\n }\n //Case-insensitive comparison\n v = v.toLowerCase();\n days = array.map(days, function (d) {\n return d.toLowerCase();\n });\n var d = array.indexOf(days, v);\n if (d === -1) {\n v = parseInt(v, 10);\n if (isNaN(v) || v > days.length) {\n return false;\n }\n } else {\n v = d;\n }\n } else if (type === 'D' || type === \"d\") {\n if (type === \"D\") {\n result[1] = 0;\n }\n result[2] = v;\n } else if (type === \"a\") {\n var am = \"am\";\n var pm = \"pm\";\n var period = /\\./g;\n v = v.replace(period, '').toLowerCase();\n // we might not have seen the hours field yet, so store the state and apply hour change later\n amPm = (v === pm) ? 'p' : (v === am) ? 'a' : '';\n } else if (type === \"k\" || type === \"h\" || type === \"H\" || type === \"K\") {\n if (type === \"k\" && (+v) === 24) {\n v = 0;\n }\n result[3] = v;\n } else if (type === \"m\") {\n result[4] = v;\n } else if (type === \"s\") {\n result[5] = v;\n } else if (type === \"S\") {\n result[6] = v;\n }\n }\n return true;\n });\n if (valid) {\n var hours = +result[3];\n //account for am/pm\n if (amPm === 'p' && hours < 12) {\n result[3] = hours + 12; //e.g., 3pm -> 15\n } else if (amPm === 'a' && hours === 12) {\n result[3] = 0; //12am -> 0\n }\n var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date\n var dateToken = (array.indexOf(tokens, 'd') !== -1),\n monthToken = (array.indexOf(tokens, 'M') !== -1),\n month = result[1],\n day = result[2],\n dateMonth = dateObject.getMonth(),\n dateDay = dateObject.getDate();\n if ((monthToken && dateMonth > month) || (dateToken && dateDay > day)) {\n return null;\n }\n return dateObject; // Date\n } else {\n return null;\n }\n }\n };\n\n\n var ret = extended.define(is.isDate, date).define(is.isString, stringDate).define(is.isNumber, numberDate);\n for (i in date) {\n if (date.hasOwnProperty(i)) {\n ret[i] = date[i];\n }\n }\n\n for (i in stringDate) {\n if (stringDate.hasOwnProperty(i)) {\n ret[i] = stringDate[i];\n }\n }\n for (i in numberDate) {\n if (numberDate.hasOwnProperty(i)) {\n ret[i] = numberDate[i];\n }\n }\n return ret;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineDate(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, arr) {\n return defineDate(extended, is, arr);\n });\n } else {\n this.dateExtended = defineDate(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n\n /**\n * @projectName declare\n * @github http://github.com/doug-martin/declare.js\n * @header\n *\n * Declare is a library designed to allow writing object oriented code the same way in both the browser and node.js.\n *\n * ##Installation\n *\n * `npm install declare.js`\n *\n * Or [download the source](https://raw.github.com/doug-martin/declare.js/master/declare.js) ([minified](https://raw.github.com/doug-martin/declare.js/master/declare-min.js))\n *\n * ###Requirejs\n *\n * To use with requirejs place the `declare` source in the root scripts directory\n *\n * ```\n *\n * define([\"declare\"], function(declare){\n * return declare({\n * instance : {\n * hello : function(){\n * return \"world\";\n * }\n * }\n * });\n * });\n *\n * ```\n *\n *\n * ##Usage\n *\n * declare.js provides\n *\n * Class methods\n *\n * * `as(module | object, name)` : exports the object to module or the object with the name\n * * `mixin(mixin)` : mixes in an object but does not inherit directly from the object. **Note** this does not return a new class but changes the original class.\n * * `extend(proto)` : extend a class with the given properties. A shortcut to `declare(Super, {})`;\n *\n * Instance methods\n *\n * * `_super(arguments)`: calls the super of the current method, you can pass in either the argments object or an array with arguments you want passed to super\n * * `_getSuper()`: returns a this methods direct super.\n * * `_static` : use to reference class properties and methods.\n * * `get(prop)` : gets a property invoking the getter if it exists otherwise it just returns the named property on the object.\n * * `set(prop, val)` : sets a property invoking the setter if it exists otherwise it just sets the named property on the object.\n *\n *\n * ###Declaring a new Class\n *\n * Creating a new class with declare is easy!\n *\n * ```\n *\n * var Mammal = declare({\n * //define your instance methods and properties\n * instance : {\n *\n * //will be called whenever a new instance is created\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this._type = options.type || \"mammal\";\n * },\n *\n * speak : function() {\n * return \"A mammal of type \" + this._type + \" sounds like\";\n * },\n *\n * //Define your getters\n * getters : {\n *\n * //can be accessed by using the get method. (mammal.get(\"type\"))\n * type : function() {\n * return this._type;\n * }\n * },\n *\n * //Define your setters\n * setters : {\n *\n * //can be accessed by using the set method. (mammal.set(\"type\", \"mammalType\"))\n * type : function(t) {\n * this._type = t;\n * }\n * }\n * },\n *\n * //Define your static methods\n * static : {\n *\n * //Mammal.soundOff(); //\"Im a mammal!!\"\n * soundOff : function() {\n * return \"Im a mammal!!\";\n * }\n * }\n * });\n *\n *\n * ```\n *\n * You can use Mammal just like you would any other class.\n *\n * ```\n * Mammal.soundOff(\"Im a mammal!!\");\n *\n * var myMammal = new Mammal({type : \"mymammal\"});\n * myMammal.speak(); // \"A mammal of type mymammal sounds like\"\n * myMammal.get(\"type\"); //\"mymammal\"\n * myMammal.set(\"type\", \"mammal\");\n * myMammal.get(\"type\"); //\"mammal\"\n *\n *\n * ```\n *\n * ###Extending a class\n *\n * If you want to just extend a single class use the .extend method.\n *\n * ```\n *\n * var Wolf = Mammal.extend({\n *\n * //define your instance method\n * instance: {\n *\n * //You can override super constructors just be sure to call `_super`\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments); //call our super constructor.\n * this._sound = \"growl\";\n * this._color = options.color || \"grey\";\n * },\n *\n * //override Mammals `speak` method by appending our own data to it.\n * speak : function() {\n * return this._super(arguments) + \" a \" + this._sound;\n * },\n *\n * //add new getters for sound and color\n * getters : {\n *\n * //new Wolf().get(\"type\")\n * //notice color is read only as we did not define a setter\n * color : function() {\n * return this._color;\n * },\n *\n * //new Wolf().get(\"sound\")\n * sound : function() {\n * return this._sound;\n * }\n * },\n *\n * setters : {\n *\n * //new Wolf().set(\"sound\", \"howl\")\n * sound : function(s) {\n * this._sound = s;\n * }\n * }\n *\n * },\n *\n * static : {\n *\n * //You can override super static methods also! And you can still use _super\n * soundOff : function() {\n * //You can even call super in your statics!!!\n * //should return \"I'm a mammal!! that growls\"\n * return this._super(arguments) + \" that growls\";\n * }\n * }\n * });\n *\n * Wolf.soundOff(); //Im a mammal!! that growls\n *\n * var myWolf = new Wolf();\n * myWolf instanceof Mammal //true\n * myWolf instanceof Wolf //true\n *\n * ```\n *\n * You can also extend a class by using the declare method and just pass in the super class.\n *\n * ```\n * //Typical hierarchical inheritance\n * // Mammal->Wolf->Dog\n * var Dog = declare(Wolf, {\n * instance: {\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * //override Wolfs initialization of sound to woof.\n * this._sound = \"woof\";\n *\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a growl thats domesticated\"\n * return this._super(arguments) + \" thats domesticated\";\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'm a mammal!! that growls but now barks\"\n * return this._super(arguments) + \" but now barks\";\n * }\n * }\n * });\n *\n * Dog.soundOff(); //Im a mammal!! that growls but now barks\n *\n * var myDog = new Dog();\n * myDog instanceof Mammal //true\n * myDog instanceof Wolf //true\n * myDog instanceof Dog //true\n *\n *\n * //Notice you still get the extend method.\n *\n * // Mammal->Wolf->Dog->Breed\n * var Breed = Dog.extend({\n * instance: {\n *\n * //initialize outside of constructor\n * _pitch : \"high\",\n *\n * constructor: function(options) {\n * options = options || {};\n * this._super(arguments);\n * this.breed = options.breed || \"lab\";\n * },\n *\n * speak : function() {\n * //Should return \"A mammal of type mammal sounds like a\n * //growl thats domesticated with a high pitch!\"\n * return this._super(arguments) + \" with a \" + this._pitch + \" pitch!\";\n * },\n *\n * getters : {\n * pitch : function() {\n * return this._pitch;\n * }\n * }\n * },\n *\n * static : {\n * soundOff : function() {\n * //should return \"I'M A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n * return this._super(arguments).toUpperCase() + \"!\";\n * }\n * }\n * });\n *\n *\n * Breed.soundOff()//\"IM A MAMMAL!! THAT GROWLS BUT NOW BARKS!\"\n *\n * var myBreed = new Breed({color : \"gold\", type : \"lab\"}),\n * myBreed instanceof Dog //true\n * myBreed instanceof Wolf //true\n * myBreed instanceof Mammal //true\n * myBreed.speak() //\"A mammal of type lab sounds like a woof thats domesticated with a high pitch!\"\n * myBreed.get(\"type\") //\"lab\"\n * myBreed.get(\"color\") //\"gold\"\n * myBreed.get(\"sound\")\" //\"woof\"\n * ```\n *\n * ###Multiple Inheritance / Mixins\n *\n * declare also allows the use of multiple super classes.\n * This is useful if you have generic classes that provide functionality but shouldnt be used on their own.\n *\n * Lets declare a mixin that allows us to watch for property changes.\n *\n * ```\n * //Notice that we set up the functions outside of declare because we can reuse them\n *\n * function _set(prop, val) {\n * //get the old value\n * var oldVal = this.get(prop);\n * //call super to actually set the property\n * var ret = this._super(arguments);\n * //call our handlers\n * this.__callHandlers(prop, oldVal, val);\n * return ret;\n * }\n *\n * function _callHandlers(prop, oldVal, newVal) {\n * //get our handlers for the property\n * var handlers = this.__watchers[prop], l;\n * //if the handlers exist and their length does not equal 0 then we call loop through them\n * if (handlers && (l = handlers.length) !== 0) {\n * for (var i = 0; i < l; i++) {\n * //call the handler\n * handlers[i].call(null, prop, oldVal, newVal);\n * }\n * }\n * }\n *\n *\n * //the watch function\n * function _watch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * //if its not a function then its an invalid handler\n * throw new TypeError(\"Invalid handler.\");\n * }\n * if (!this.__watchers[prop]) {\n * //create the watchers if it doesnt exist\n * this.__watchers[prop] = [handler];\n * } else {\n * //otherwise just add it to the handlers array\n * this.__watchers[prop].push(handler);\n * }\n * }\n *\n * function _unwatch(prop, handler) {\n * if (\"function\" !== typeof handler) {\n * throw new TypeError(\"Invalid handler.\");\n * }\n * var handlers = this.__watchers[prop], index;\n * if (handlers && (index = handlers.indexOf(handler)) !== -1) {\n * //remove the handler if it is found\n * handlers.splice(index, 1);\n * }\n * }\n *\n * declare({\n * instance:{\n * constructor:function () {\n * this._super(arguments);\n * //set up our watchers\n * this.__watchers = {};\n * },\n *\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set up our callhandlers function\n * __callHandlers:_callHandlers,\n * //add the watch function\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * },\n *\n * \"static\":{\n *\n * init:function () {\n * this._super(arguments);\n * this.__watchers = {};\n * },\n * //override the default set function so we can watch values\n * \"set\":_set,\n * //set our callHandlers function\n * __callHandlers:_callHandlers,\n * //add the watch\n * watch:_watch,\n * //add the unwatch function\n * unwatch:_unwatch\n * }\n * })\n *\n * ```\n *\n * Now lets use the mixin\n *\n * ```\n * var WatchDog = declare([Dog, WatchMixin]);\n *\n * var watchDog = new WatchDog();\n * //create our handler\n * function watch(id, oldVal, newVal) {\n * console.log(\"watchdog's %s was %s, now %s\", id, oldVal, newVal);\n * }\n *\n * //watch for property changes\n * watchDog.watch(\"type\", watch);\n * watchDog.watch(\"color\", watch);\n * watchDog.watch(\"sound\", watch);\n *\n * //now set the properties each handler will be called\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * //unwatch the property changes\n * watchDog.unwatch(\"type\", watch);\n * watchDog.unwatch(\"color\", watch);\n * watchDog.unwatch(\"sound\", watch);\n *\n * //no handlers will be called this time\n * watchDog.set(\"type\", \"newDog\");\n * watchDog.set(\"color\", \"newColor\");\n * watchDog.set(\"sound\", \"newSound\");\n *\n *\n * ```\n *\n * ###Accessing static methods and properties witin an instance.\n *\n * To access static properties on an instance use the `_static` property which is a reference to your constructor.\n *\n * For example if your in your constructor and you want to have configurable default values.\n *\n * ```\n * consturctor : function constructor(opts){\n * this.opts = opts || {};\n * this._type = opts.type || this._static.DEFAULT_TYPE;\n * }\n * ```\n *\n *\n *\n * ###Creating a new instance of within an instance.\n *\n * Often times you want to create a new instance of an object within an instance. If your subclassed however you cannot return a new instance of the parent class as it will not be the right sub class. `declare` provides a way around this by setting the `_static` property on each isntance of the class.\n *\n * Lets add a reproduce method `Mammal`\n *\n * ```\n * reproduce : function(options){\n * return new this._static(options);\n * }\n * ```\n *\n * Now in each subclass you can call reproduce and get the proper type.\n *\n * ```\n * var myDog = new Dog();\n * var myDogsChild = myDog.reproduce();\n *\n * myDogsChild instanceof Dog; //true\n * ```\n *\n * ###Using the `as`\n *\n * `declare` also provides an `as` method which allows you to add your class to an object or if your using node.js you can pass in `module` and the class will be exported as the module.\n *\n * ```\n * var animals = {};\n *\n * Mammal.as(animals, \"Dog\");\n * Wolf.as(animals, \"Wolf\");\n * Dog.as(animals, \"Dog\");\n * Breed.as(animals, \"Breed\");\n *\n * var myDog = new animals.Dog();\n *\n * ```\n *\n * Or in node\n *\n * ```\n * Mammal.as(exports, \"Dog\");\n * Wolf.as(exports, \"Wolf\");\n * Dog.as(exports, \"Dog\");\n * Breed.as(exports, \"Breed\");\n *\n * ```\n *\n * To export a class as the `module` in node\n *\n * ```\n * Mammal.as(module);\n * ```\n *\n *\n */\n function createDeclared() {\n var arraySlice = Array.prototype.slice, classCounter = 0, Base, forceNew = new Function();\n\n var SUPER_REGEXP = /(super)/g;\n\n function argsToArray(args, slice) {\n slice = slice || 0;\n return arraySlice.call(args, slice);\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && obj !== undef && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object;\n }\n\n var isArguments = function _isArguments(object) {\n return Object.prototype.toString.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && obj.hasOwnProperty(\"callee\"));\n };\n }\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function callSuper(args, a) {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n args = !args ? [] : (!isArguments(args) && !isArray(args)) ? [args] : args;\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, args);\n }\n } while (l > ++pos);\n }\n\n return null;\n }\n\n function getSuper() {\n var meta = this.__meta,\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.bind(this);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n function getter(name) {\n var getters = this.__getters__;\n if (getters.hasOwnProperty(name)) {\n return getters[name].apply(this);\n } else {\n return this[name];\n }\n }\n\n function setter(name, val) {\n var setters = this.__setters__;\n if (isHash(name)) {\n for (var i in name) {\n var prop = name[i];\n if (setters.hasOwnProperty(i)) {\n setters[name].call(this, prop);\n } else {\n this[i] = prop;\n }\n }\n } else {\n if (setters.hasOwnProperty(name)) {\n return setters[name].apply(this, argsToArray(arguments, 1));\n } else {\n return this[name] = val;\n }\n }\n }\n\n\n function defaultFunction() {\n var meta = this.__meta || {},\n supers = meta.supers,\n l = supers.length, superMeta = meta.superMeta, pos = superMeta.pos;\n if (l > pos) {\n var name = superMeta.name, f = superMeta.f, m;\n do {\n m = supers[pos][name];\n if (\"function\" === typeof m && (m = m._f || m) !== f) {\n superMeta.pos = 1 + pos;\n return m.apply(this, arguments);\n }\n } while (l > ++pos);\n }\n return null;\n }\n\n\n function functionWrapper(f, name) {\n if (f.toString().match(SUPER_REGEXP)) {\n var wrapper = function wrapper() {\n var ret, meta = this.__meta || {};\n var orig = meta.superMeta;\n meta.superMeta = {f: f, pos: 0, name: name};\n switch (arguments.length) {\n case 0:\n ret = f.call(this);\n break;\n case 1:\n ret = f.call(this, arguments[0]);\n break;\n case 2:\n ret = f.call(this, arguments[0], arguments[1]);\n break;\n\n case 3:\n ret = f.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n ret = f.apply(this, arguments);\n }\n meta.superMeta = orig;\n return ret;\n };\n wrapper._f = f;\n return wrapper;\n } else {\n f._f = f;\n return f;\n }\n }\n\n function defineMixinProps(child, proto) {\n\n var operations = proto.setters || {}, __setters = child.__setters__, __getters = child.__getters__;\n for (var i in operations) {\n if (!__setters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n for (i in operations) {\n if (!__getters.hasOwnProperty(i)) { //make sure that the setter isnt already there\n __getters[i] = operations[i];\n }\n }\n for (var j in proto) {\n if (j !== \"getters\" && j !== \"setters\") {\n var p = proto[j];\n if (\"function\" === typeof p) {\n if (!child.hasOwnProperty(j)) {\n child[j] = functionWrapper(defaultFunction, j);\n }\n } else {\n child[j] = p;\n }\n }\n }\n }\n\n function mixin() {\n var args = argsToArray(arguments), l = args.length;\n var child = this.prototype;\n var childMeta = child.__meta, thisMeta = this.__meta, bases = child.__meta.bases, staticBases = bases.slice(),\n staticSupers = thisMeta.supers || [], supers = childMeta.supers || [];\n for (var i = 0; i < l; i++) {\n var m = args[i], mProto = m.prototype;\n var protoMeta = mProto.__meta, meta = m.__meta;\n !protoMeta && (protoMeta = (mProto.__meta = {proto: mProto || {}}));\n !meta && (meta = (m.__meta = {proto: m.__proto__ || {}}));\n defineMixinProps(child, protoMeta.proto || {});\n defineMixinProps(this, meta.proto || {});\n //copy the bases for static,\n\n mixinSupers(m.prototype, supers, bases);\n mixinSupers(m, staticSupers, staticBases);\n }\n return this;\n }\n\n function mixinSupers(sup, arr, bases) {\n var meta = sup.__meta;\n !meta && (meta = (sup.__meta = {}));\n var unique = sup.__meta.unique;\n !unique && (meta.unique = \"declare\" + ++classCounter);\n //check it we already have this super mixed into our prototype chain\n //if true then we have already looped their supers!\n if (indexOf(bases, unique) === -1) {\n //add their id to our bases\n bases.push(unique);\n var supers = sup.__meta.supers || [], i = supers.length - 1 || 0;\n while (i >= 0) {\n mixinSupers(supers[i--], arr, bases);\n }\n arr.unshift(sup);\n }\n }\n\n function defineProps(child, proto) {\n var operations = proto.setters,\n __setters = child.__setters__,\n __getters = child.__getters__;\n if (operations) {\n for (var i in operations) {\n __setters[i] = operations[i];\n }\n }\n operations = proto.getters || {};\n if (operations) {\n for (i in operations) {\n __getters[i] = operations[i];\n }\n }\n for (i in proto) {\n if (i != \"getters\" && i != \"setters\") {\n var f = proto[i];\n if (\"function\" === typeof f) {\n var meta = f.__meta || {};\n if (!meta.isConstructor) {\n child[i] = functionWrapper(f, i);\n } else {\n child[i] = f;\n }\n } else {\n child[i] = f;\n }\n }\n }\n\n }\n\n function _export(obj, name) {\n if (obj && name) {\n obj[name] = this;\n } else {\n obj.exports = obj = this;\n }\n return this;\n }\n\n function extend(proto) {\n return declare(this, proto);\n }\n\n function getNew(ctor) {\n // create object with correct prototype using a do-nothing\n // constructor\n forceNew.prototype = ctor.prototype;\n var t = new forceNew();\n forceNew.prototype = null;\t// clean up\n return t;\n }\n\n\n function __declare(child, sup, proto) {\n var childProto = {}, supers = [];\n var unique = \"declare\" + ++classCounter, bases = [], staticBases = [];\n var instanceSupers = [], staticSupers = [];\n var meta = {\n supers: instanceSupers,\n unique: unique,\n bases: bases,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n var childMeta = {\n supers: staticSupers,\n unique: unique,\n bases: staticBases,\n isConstructor: true,\n superMeta: {\n f: null,\n pos: 0,\n name: null\n }\n };\n\n if (isHash(sup) && !proto) {\n proto = sup;\n sup = Base;\n }\n\n if (\"function\" === typeof sup || isArray(sup)) {\n supers = isArray(sup) ? sup : [sup];\n sup = supers.shift();\n child.__meta = childMeta;\n childProto = getNew(sup);\n childProto.__meta = meta;\n childProto.__getters__ = merge({}, childProto.__getters__ || {});\n childProto.__setters__ = merge({}, childProto.__setters__ || {});\n child.__getters__ = merge({}, child.__getters__ || {});\n child.__setters__ = merge({}, child.__setters__ || {});\n mixinSupers(sup.prototype, instanceSupers, bases);\n mixinSupers(sup, staticSupers, staticBases);\n } else {\n child.__meta = childMeta;\n childProto.__meta = meta;\n childProto.__getters__ = childProto.__getters__ || {};\n childProto.__setters__ = childProto.__setters__ || {};\n child.__getters__ = child.__getters__ || {};\n child.__setters__ = child.__setters__ || {};\n }\n child.prototype = childProto;\n if (proto) {\n var instance = meta.proto = proto.instance || {};\n var stat = childMeta.proto = proto.static || {};\n stat.init = stat.init || defaultFunction;\n defineProps(childProto, instance);\n defineProps(child, stat);\n if (!instance.hasOwnProperty(\"constructor\")) {\n childProto.constructor = instance.constructor = functionWrapper(defaultFunction, \"constructor\");\n } else {\n childProto.constructor = functionWrapper(instance.constructor, \"constructor\");\n }\n } else {\n meta.proto = {};\n childMeta.proto = {};\n child.init = functionWrapper(defaultFunction, \"init\");\n childProto.constructor = functionWrapper(defaultFunction, \"constructor\");\n }\n if (supers.length) {\n mixin.apply(child, supers);\n }\n if (sup) {\n //do this so we mixin our super methods directly but do not ov\n merge(child, merge(merge({}, sup), child));\n }\n childProto._super = child._super = callSuper;\n childProto._getSuper = child._getSuper = getSuper;\n childProto._static = child;\n }\n\n function declare(sup, proto) {\n function declared() {\n switch (arguments.length) {\n case 0:\n this.constructor.call(this);\n break;\n case 1:\n this.constructor.call(this, arguments[0]);\n break;\n case 2:\n this.constructor.call(this, arguments[0], arguments[1]);\n break;\n case 3:\n this.constructor.call(this, arguments[0], arguments[1], arguments[2]);\n break;\n default:\n this.constructor.apply(this, arguments);\n }\n }\n\n __declare(declared, sup, proto);\n return declared.init() || declared;\n }\n\n function singleton(sup, proto) {\n var retInstance;\n\n function declaredSingleton() {\n if (!retInstance) {\n this.constructor.apply(this, arguments);\n retInstance = this;\n }\n return retInstance;\n }\n\n __declare(declaredSingleton, sup, proto);\n return declaredSingleton.init() || declaredSingleton;\n }\n\n Base = declare({\n instance: {\n \"get\": getter,\n \"set\": setter\n },\n\n \"static\": {\n \"get\": getter,\n \"set\": setter,\n mixin: mixin,\n extend: extend,\n as: _export\n }\n });\n\n declare.singleton = singleton;\n return declare;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = createDeclared();\n }\n } else if (\"function\" === typeof define && define.amd) {\n define(createDeclared);\n } else {\n this.declare = createDeclared();\n }\n}());\n\n\n\n","module.exports = require(\"./declare.js\");","(function () {\n \"use strict\";\n /*global extender is, dateExtended*/\n\n function defineExtended(extender) {\n\n\n var merge = (function merger() {\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n };\n }());\n\n function getExtended() {\n\n var loaded = {};\n\n\n //getInitial instance;\n var extended = extender.define();\n extended.expose({\n register: function register(alias, extendWith) {\n if (!extendWith) {\n extendWith = alias;\n alias = null;\n }\n var type = typeof extendWith;\n if (alias) {\n extended[alias] = extendWith;\n } else if (extendWith && type === \"function\") {\n extended.extend(extendWith);\n } else if (type === \"object\") {\n extended.expose(extendWith);\n } else {\n throw new TypeError(\"extended.register must be called with an extender function\");\n }\n return extended;\n },\n\n define: function () {\n return extender.define.apply(extender, arguments);\n }\n });\n\n return extended;\n }\n\n function extended() {\n return getExtended();\n }\n\n extended.define = function define() {\n return extender.define.apply(extender, arguments);\n };\n\n return extended;\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtended(require(\"extender\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extender\"], function (extender) {\n return defineExtended(extender);\n });\n } else {\n this.extended = defineExtended(this.extender);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n /*jshint strict:false*/\n\n\n /**\n *\n * @projectName extender\n * @github http://github.com/doug-martin/extender\n * @header\n * [![build status](https://secure.travis-ci.org/doug-martin/extender.png)](http://travis-ci.org/doug-martin/extender)\n * # Extender\n *\n * `extender` is a library that helps in making chainable APIs, by creating a function that accepts different values and returns an object decorated with functions based on the type.\n *\n * ## Why Is Extender Different?\n *\n * Extender is different than normal chaining because is does more than return `this`. It decorates your values in a type safe manner.\n *\n * For example if you return an array from a string based method then the returned value will be decorated with array methods and not the string methods. This allow you as the developer to focus on your API and not worrying about how to properly build and connect your API.\n *\n *\n * ## Installation\n *\n * ```\n * npm install extender\n * ```\n *\n * Or [download the source](https://raw.github.com/doug-martin/extender/master/extender.js) ([minified](https://raw.github.com/doug-martin/extender/master/extender-min.js))\n *\n * **Note** `extender` depends on [`declare.js`](http://doug-martin.github.com/declare.js/).\n *\n * ### Requirejs\n *\n * To use with requirejs place the `extend` source in the root scripts directory\n *\n * ```javascript\n *\n * define([\"extender\"], function(extender){\n * });\n *\n * ```\n *\n *\n * ## Usage\n *\n * **`extender.define(tester, decorations)`**\n *\n * To create your own extender call the `extender.define` function.\n *\n * This function accepts an optional tester which is used to determine a value should be decorated with the specified `decorations`\n *\n * ```javascript\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n *\n * var myExtender = extender.define(isString, {\n *\t\tmultiply: function (str, times) {\n *\t\t\tvar ret = str;\n *\t\t\tfor (var i = 1; i < times; i++) {\n *\t\t\t\tret += str;\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t},\n *\t\ttoArray: function (str, delim) {\n *\t\t\tdelim = delim || \"\";\n *\t\t\treturn str.split(delim);\n *\t\t}\n *\t});\n *\n * myExtender(\"hello\").multiply(2).value(); //hellohello\n *\n * ```\n *\n * If you do not specify a tester function and just pass in an object of `functions` then all values passed in will be decorated with methods.\n *\n * ```javascript\n *\n * function isUndefined(obj) {\n * var undef;\n * return obj === undef;\n * }\n *\n * function isUndefinedOrNull(obj) {\n *\tvar undef;\n * return obj === undef || obj === null;\n * }\n *\n * function isArray(obj) {\n * return Object.prototype.toString.call(obj) === \"[object Array]\";\n * }\n *\n * function isBoolean(obj) {\n * var undef, type = typeof obj;\n * return !isUndefinedOrNull(obj) && type === \"boolean\" || type === \"Boolean\";\n * }\n *\n * function isString(obj) {\n * return !isUndefinedOrNull(obj) && (typeof obj === \"string\" || obj instanceof String);\n * }\n *\n * var myExtender = extender.define({\n *\tisUndefined : isUndefined,\n *\tisUndefinedOrNull : isUndefinedOrNull,\n *\tisArray : isArray,\n *\tisBoolean : isBoolean,\n *\tisString : isString\n * });\n *\n * ```\n *\n * To use\n *\n * ```\n * var undef;\n * myExtender(\"hello\").isUndefined().value(); //false\n * myExtender(undef).isUndefined().value(); //true\n * ```\n *\n * You can also chain extenders so that they accept multiple types and decorates accordingly.\n *\n * ```javascript\n * myExtender\n * .define(isArray, {\n *\t\tpluck: function (arr, m) {\n *\t\t\tvar ret = [];\n *\t\t\tfor (var i = 0, l = arr.length; i < l; i++) {\n *\t\t\t\tret.push(arr[i][m]);\n *\t\t\t}\n *\t\t\treturn ret;\n *\t\t}\n *\t})\n * .define(isBoolean, {\n *\t\tinvert: function (val) {\n *\t\t\treturn !val;\n *\t\t}\n *\t});\n *\n * myExtender([{a: \"a\"},{a: \"b\"},{a: \"c\"}]).pluck(\"a\").value(); //[\"a\", \"b\", \"c\"]\n * myExtender(\"I love javascript!\").toArray(/\\s+/).pluck(\"0\"); //[\"I\", \"l\", \"j\"]\n *\n * ```\n *\n * Notice that we reuse the same extender as defined above.\n *\n * **Return Values**\n *\n * When creating an extender if you return a value from one of the decoration functions then that value will also be decorated. If you do not return any values then the extender will be returned.\n *\n * **Default decoration methods**\n *\n * By default every value passed into an extender is decorated with the following methods.\n *\n * * `value` : The value this extender represents.\n * * `eq(otherValue)` : Tests strict equality of the currently represented value to the `otherValue`\n * * `neq(oterValue)` : Tests strict inequality of the currently represented value.\n * * `print` : logs the current value to the console.\n *\n * **Extender initialization**\n *\n * When creating an extender you can also specify a constructor which will be invoked with the current value.\n *\n * ```javascript\n * myExtender.define(isString, {\n *\tconstructor : function(val){\n * //set our value to the string trimmed\n *\t\tthis._value = val.trimRight().trimLeft();\n *\t}\n * });\n * ```\n *\n * **`noWrap`**\n *\n * `extender` also allows you to specify methods that should not have the value wrapped providing a cleaner exit function other than `value()`.\n *\n * For example suppose you have an API that allows you to build a validator, rather than forcing the user to invoke the `value` method you could add a method called `validator` which makes more syntactic sense.\n *\n * ```\n *\n * var myValidator = extender.define({\n * //chainable validation methods\n * //...\n * //end chainable validation methods\n *\n * noWrap : {\n * validator : function(){\n * //return your validator\n * }\n * }\n * });\n *\n * myValidator().isNotNull().isEmailAddress().validator(); //now you dont need to call .value()\n *\n *\n * ```\n * **`extender.extend(extendr)`**\n *\n * You may also compose extenders through the use of `extender.extend(extender)`, which will return an entirely new extender that is the composition of extenders.\n *\n * Suppose you have the following two extenders.\n *\n * ```javascript\n * var myExtender = extender\n * .define({\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * });\n * var myExtender2 = extender.define(is.array, {\n * pluck: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * },\n *\n * noWrap: {\n * pluckPlain: function (arr, m) {\n * var ret = [];\n * for (var i = 0, l = arr.length; i < l; i++) {\n * ret.push(arr[i][m]);\n * }\n * return ret;\n * }\n * }\n * });\n *\n *\n * ```\n *\n * And you do not want to alter either of them but instead what to create a third that is the union of the two.\n *\n *\n * ```javascript\n * var composed = extender.extend(myExtender).extend(myExtender2);\n * ```\n * So now you can use the new extender with the joined functionality if `myExtender` and `myExtender2`.\n *\n * ```javascript\n * var extended = composed([\n * {a: \"a\"},\n * {a: \"b\"},\n * {a: \"c\"}\n * ]);\n * extended.isArray().value(); //true\n * extended.pluck(\"a\").value(); // [\"a\", \"b\", \"c\"]);\n *\n * ```\n *\n * **Note** `myExtender` and `myExtender2` will **NOT** be altered.\n *\n * **`extender.expose(methods)`**\n *\n * The `expose` method allows you to add methods to your extender that are not wrapped or automatically chained by exposing them on the extender directly.\n *\n * ```\n * var isMethods = {\n * isFunction: is.function,\n * isNumber: is.number,\n * isString: is.string,\n * isDate: is.date,\n * isArray: is.array,\n * isBoolean: is.boolean,\n * isUndefined: is.undefined,\n * isDefined: is.defined,\n * isUndefinedOrNull: is.undefinedOrNull,\n * isNull: is.null,\n * isArguments: is.arguments,\n * isInstanceOf: is.instanceOf,\n * isRegExp: is.regExp\n * };\n *\n * var myExtender = extender.define(isMethods).expose(isMethods);\n *\n * myExtender.isArray([]); //true\n * myExtender([]).isArray([]).value(); //true\n *\n * ```\n *\n *\n * **Using `instanceof`**\n *\n * When using extenders you can test if a value is an `instanceof` of an extender by using the instanceof operator.\n *\n * ```javascript\n * var str = myExtender(\"hello\");\n *\n * str instanceof myExtender; //true\n * ```\n *\n * ## Examples\n *\n * To see more examples click [here](https://github.com/doug-martin/extender/tree/master/examples)\n */\n function defineExtender(declare) {\n\n\n var slice = Array.prototype.slice, undef;\n\n function indexOf(arr, item) {\n if (arr && arr.length) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n }\n\n var merge = (function merger() {\n function _merge(target, source, exclude) {\n var name, s;\n for (name in source) {\n if (source.hasOwnProperty(name) && indexOf(exclude, name) === -1) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n return function merge(obj) {\n if (!obj) {\n obj = {};\n }\n var l = arguments.length;\n var exclude = arguments[arguments.length - 1];\n if (isArray(exclude)) {\n l--;\n } else {\n exclude = [];\n }\n for (var i = 1; i < l; i++) {\n _merge(obj, arguments[i], exclude);\n }\n return obj; // Object\n };\n }());\n\n\n function extender(supers) {\n supers = supers || [];\n var Base = declare({\n instance: {\n constructor: function (value) {\n this._value = value;\n },\n\n value: function () {\n return this._value;\n },\n\n eq: function eq(val) {\n return this[\"__extender__\"](this._value === val);\n },\n\n neq: function neq(other) {\n return this[\"__extender__\"](this._value !== other);\n },\n print: function () {\n console.log(this._value);\n return this;\n }\n }\n }), defined = [];\n\n function addMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n var ret = func.apply(this, args);\n return ret !== undef ? this[\"__extender__\"](ret) : this;\n };\n }\n proto[name] = extendedMethod;\n }\n\n function addNoWrapMethod(proto, name, func) {\n if (\"function\" !== typeof func) {\n throw new TypeError(\"when extending type you must provide a function\");\n }\n var extendedMethod;\n if (name === \"constructor\") {\n extendedMethod = function () {\n this._super(arguments);\n func.apply(this, arguments);\n };\n } else {\n extendedMethod = function extendedMethod() {\n var args = slice.call(arguments);\n args.unshift(this._value);\n return func.apply(this, args);\n };\n }\n proto[name] = extendedMethod;\n }\n\n function decorateProto(proto, decoration, nowrap) {\n for (var i in decoration) {\n if (decoration.hasOwnProperty(i)) {\n if (i !== \"getters\" && i !== \"setters\") {\n if (i === \"noWrap\") {\n decorateProto(proto, decoration[i], true);\n } else if (nowrap) {\n addNoWrapMethod(proto, i, decoration[i]);\n } else {\n addMethod(proto, i, decoration[i]);\n }\n } else {\n proto[i] = decoration[i];\n }\n }\n }\n }\n\n function _extender(obj) {\n var ret = obj, i, l;\n if (!(obj instanceof Base)) {\n var OurBase = Base;\n for (i = 0, l = defined.length; i < l; i++) {\n var definer = defined[i];\n if (definer[0](obj)) {\n OurBase = OurBase.extend({instance: definer[1]});\n }\n }\n ret = new OurBase(obj);\n ret[\"__extender__\"] = _extender;\n }\n return ret;\n }\n\n function always() {\n return true;\n }\n\n function define(tester, decorate) {\n if (arguments.length) {\n if (typeof tester === \"object\") {\n decorate = tester;\n tester = always;\n }\n decorate = decorate || {};\n var proto = {};\n decorateProto(proto, decorate);\n //handle browsers like which skip over the constructor while looping\n if (!proto.hasOwnProperty(\"constructor\")) {\n if (decorate.hasOwnProperty(\"constructor\")) {\n addMethod(proto, \"constructor\", decorate.constructor);\n } else {\n proto.constructor = function () {\n this._super(arguments);\n };\n }\n }\n defined.push([tester, proto]);\n }\n return _extender;\n }\n\n function extend(supr) {\n if (supr && supr.hasOwnProperty(\"__defined__\")) {\n _extender[\"__defined__\"] = defined = defined.concat(supr[\"__defined__\"]);\n }\n merge(_extender, supr, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n return _extender;\n }\n\n _extender.define = define;\n _extender.extend = extend;\n _extender.expose = function expose() {\n var methods;\n for (var i = 0, l = arguments.length; i < l; i++) {\n methods = arguments[i];\n if (typeof methods === \"object\") {\n merge(_extender, methods, [\"define\", \"extend\", \"expose\", \"__defined__\"]);\n }\n }\n return _extender;\n };\n _extender[\"__defined__\"] = defined;\n\n\n return _extender;\n }\n\n return {\n define: function () {\n return extender().define.apply(extender, arguments);\n },\n\n extend: function (supr) {\n return extender().define().extend(supr);\n }\n };\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineExtender(require(\"declare.js\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\"], function (declare) {\n return defineExtender(declare);\n });\n } else {\n this.extender = defineExtender(this.declare);\n }\n\n}).call(this);","module.exports = require(\"./extender.js\");","(function () {\n \"use strict\";\n\n function defineFunction(extended, is, args) {\n\n var isArray = is.isArray,\n isObject = is.isObject,\n isString = is.isString,\n isFunction = is.isFunction,\n argsToArray = args.argsToArray;\n\n function spreadArgs(f, args, scope) {\n var ret;\n switch ((args || []).length) {\n case 0:\n ret = f.call(scope);\n break;\n case 1:\n ret = f.call(scope, args[0]);\n break;\n case 2:\n ret = f.call(scope, args[0], args[1]);\n break;\n case 3:\n ret = f.call(scope, args[0], args[1], args[2]);\n break;\n default:\n ret = f.apply(scope, args);\n }\n return ret;\n }\n\n function hitch(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args.concat(argsToArray(arguments)), scope);\n } else {\n return func;\n }\n };\n } else {\n if (args.length) {\n return function () {\n return spreadArgs(method, args.concat(argsToArray(arguments)), scope);\n };\n } else {\n\n return function () {\n return spreadArgs(method, arguments, scope);\n };\n }\n }\n }\n\n\n function applyFirst(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n var func = scope[method];\n if (isFunction(func)) {\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(func, scopeArgs, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = argsToArray(arguments), scope = scopeArgs.shift();\n scopeArgs = args.concat(scopeArgs);\n return spreadArgs(method, scopeArgs, scope);\n };\n }\n }\n\n\n function hitchIgnore(scope, method, args) {\n args = argsToArray(arguments, 2);\n if ((isString(method) && !(method in scope))) {\n throw new Error(method + \" property not defined in scope\");\n } else if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" is not a function\");\n }\n if (isString(method)) {\n return function () {\n var func = scope[method];\n if (isFunction(func)) {\n return spreadArgs(func, args, scope);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n return spreadArgs(method, args, scope);\n };\n }\n }\n\n\n function hitchAll(scope) {\n var funcs = argsToArray(arguments, 1);\n if (!isObject(scope) && !isFunction(scope)) {\n throw new TypeError(\"scope must be an object\");\n }\n if (funcs.length === 1 && isArray(funcs[0])) {\n funcs = funcs[0];\n }\n if (!funcs.length) {\n funcs = [];\n for (var k in scope) {\n if (scope.hasOwnProperty(k) && isFunction(scope[k])) {\n funcs.push(k);\n }\n }\n }\n for (var i = 0, l = funcs.length; i < l; i++) {\n scope[funcs[i]] = hitch(scope, scope[funcs[i]]);\n }\n return scope;\n }\n\n\n function partial(method, args) {\n args = argsToArray(arguments, 1);\n if (!isString(method) && !isFunction(method)) {\n throw new Error(method + \" must be the name of a property or function to execute\");\n }\n if (isString(method)) {\n return function () {\n var func = this[method];\n if (isFunction(func)) {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(func, scopeArgs, this);\n } else {\n return func;\n }\n };\n } else {\n return function () {\n var scopeArgs = args.concat(argsToArray(arguments));\n return spreadArgs(method, scopeArgs, this);\n };\n }\n }\n\n function curryFunc(f, execute) {\n return function () {\n var args = argsToArray(arguments);\n return execute ? spreadArgs(f, arguments, this) : function () {\n return spreadArgs(f, args.concat(argsToArray(arguments)), this);\n };\n };\n }\n\n\n function curry(depth, cb, scope) {\n var f;\n if (scope) {\n f = hitch(scope, cb);\n } else {\n f = cb;\n }\n if (depth) {\n var len = depth - 1;\n for (var i = len; i >= 0; i--) {\n f = curryFunc(f, i === len);\n }\n }\n return f;\n }\n\n return extended\n .define(isObject, {\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n curry: function (scope, depth, fn) {\n return curry(depth, fn, scope);\n }\n })\n .define(isFunction, {\n bind: function (fn, obj) {\n return spreadArgs(hitch, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n bindIgnore: function (fn, obj) {\n return spreadArgs(hitchIgnore, [obj, fn].concat(argsToArray(arguments, 2)), this);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, num, scope) {\n return curry(num, fn, scope);\n },\n noWrap: {\n f: function () {\n return this.value();\n }\n }\n })\n .define(isString, {\n bind: function (str, scope) {\n return hitch(scope, str);\n },\n bindIgnore: function (str, scope) {\n return hitchIgnore(scope, str);\n },\n partial: partial,\n applyFirst: applyFirst,\n curry: function (fn, depth, scope) {\n return curry(depth, fn, scope);\n }\n })\n .expose({\n bind: hitch,\n bindAll: hitchAll,\n bindIgnore: hitchIgnore,\n partial: partial,\n applyFirst: applyFirst,\n curry: curry\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineFunction(require(\"extended\"), require(\"is-extended\"), require(\"arguments-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"arguments-extended\"], function (extended, is, args) {\n return defineFunction(extended, is, args);\n });\n } else {\n this.functionExtended = defineFunction(this.extended, this.isExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineHt(_) {\n\n\n var hashFunction = function (key) {\n if (typeof key === \"string\") {\n return key;\n } else if (typeof key === \"object\") {\n return key.hashCode ? key.hashCode() : \"\" + key;\n } else {\n return \"\" + key;\n }\n };\n\n var Bucket = _.declare({\n\n instance: {\n\n constructor: function () {\n this.__entries = [];\n this.__keys = [];\n this.__values = [];\n },\n\n pushValue: function (key, value) {\n this.__keys.push(key);\n this.__values.push(value);\n this.__entries.push({key: key, value: value});\n return value;\n },\n\n remove: function (key) {\n var ret = null, map = this.__entries, val, keys = this.__keys, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n if (!!(val = map[i]) && val.key === key) {\n map.splice(i, 1);\n keys.splice(i, 1);\n vals.splice(i, 1);\n return val.value;\n }\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var ret = null, map = this.__entries, vals = this.__values;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n var val = map[i];\n if (val && key === val.key) {\n vals[i] = value;\n val.value = value;\n ret = value;\n break;\n }\n }\n if (!ret) {\n map.push({key: key, value: value});\n }\n return ret;\n },\n\n find: function (key) {\n var ret = null, map = this.__entries, val;\n var i = map.length - 1;\n for (; i >= 0; i--) {\n val = map[i];\n if (val && key === val.key) {\n ret = val.value;\n break;\n }\n }\n return ret;\n },\n\n getEntrySet: function () {\n return this.__entries;\n },\n\n getKeys: function () {\n return this.__keys;\n },\n\n getValues: function (arr) {\n return this.__values;\n }\n }\n });\n\n return _.declare({\n\n instance: {\n\n constructor: function () {\n this.__map = {};\n },\n\n entrySet: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getEntrySet());\n }\n }\n return ret;\n },\n\n put: function (key, value) {\n var hash = hashFunction(key);\n var bucket = null;\n if (!(bucket = this.__map[hash])) {\n bucket = (this.__map[hash] = new Bucket());\n }\n bucket.pushValue(key, value);\n return value;\n },\n\n remove: function (key) {\n var hash = hashFunction(key), ret = null;\n var bucket = this.__map[hash];\n if (bucket) {\n ret = bucket.remove(key);\n }\n return ret;\n },\n\n \"get\": function (key) {\n var hash = hashFunction(key), ret = null, bucket;\n if (!!(bucket = this.__map[hash])) {\n ret = bucket.find(key);\n }\n return ret;\n },\n\n \"set\": function (key, value) {\n var hash = hashFunction(key), ret = null, bucket = null, map = this.__map;\n if (!!(bucket = map[hash])) {\n ret = bucket.set(key, value);\n } else {\n ret = (map[hash] = new Bucket()).pushValue(key, value);\n }\n return ret;\n },\n\n contains: function (key) {\n var hash = hashFunction(key), ret = false, bucket = null;\n if (!!(bucket = this.__map[hash])) {\n ret = !!(bucket.find(key));\n }\n return ret;\n },\n\n concat: function (hashTable) {\n if (hashTable instanceof this._static) {\n var ret = new this._static();\n var otherEntrySet = hashTable.entrySet().concat(this.entrySet());\n for (var i = otherEntrySet.length - 1; i >= 0; i--) {\n var e = otherEntrySet[i];\n ret.put(e.key, e.value);\n }\n return ret;\n } else {\n throw new TypeError(\"When joining hashtables the joining arg must be a HashTable\");\n }\n },\n\n filter: function (cb, scope) {\n var es = this.entrySet(), ret = new this._static();\n es = _.filter(es, cb, scope);\n for (var i = es.length - 1; i >= 0; i--) {\n var e = es[i];\n ret.put(e.key, e.value);\n }\n return ret;\n },\n\n forEach: function (cb, scope) {\n var es = this.entrySet();\n _.forEach(es, cb, scope);\n },\n\n every: function (cb, scope) {\n var es = this.entrySet();\n return _.every(es, cb, scope);\n },\n\n map: function (cb, scope) {\n var es = this.entrySet();\n return _.map(es, cb, scope);\n },\n\n some: function (cb, scope) {\n var es = this.entrySet();\n return _.some(es, cb, scope);\n },\n\n reduce: function (cb, scope) {\n var es = this.entrySet();\n return _.reduce(es, cb, scope);\n },\n\n reduceRight: function (cb, scope) {\n var es = this.entrySet();\n return _.reduceRight(es, cb, scope);\n },\n\n clear: function () {\n this.__map = {};\n },\n\n keys: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getKeys());\n //}\n }\n return ret;\n },\n\n values: function () {\n var ret = [], map = this.__map;\n for (var i in map) {\n //if (map.hasOwnProperty(i)) {\n ret = ret.concat(map[i].getValues());\n //}\n }\n return ret;\n },\n\n isEmpty: function () {\n return this.keys().length === 0;\n }\n }\n\n });\n\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineHt(require(\"extended\")().register(\"declare\", require(\"declare.js\")).register(require(\"is-extended\")).register(require(\"array-extended\")));\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare\", \"is-extended\", \"array-extended\"], function (extended, declare, is, array) {\n return defineHt(extended().register(\"declare\", declare).register(is).register(array));\n });\n } else {\n this.Ht = defineHt(this.extended().register(\"declare\", this.declare).register(this.isExtended).register(this.arrayExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function () {\n \"use strict\";\n\n function defineIsa(extended) {\n\n var pSlice = Array.prototype.slice;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n\n function argsToArray(args, slice) {\n var i = -1, j = 0, l = args.length, ret = [];\n slice = slice || 0;\n i += slice;\n while (++i < l) {\n ret[j++] = args[i];\n }\n return ret;\n }\n\n function keys(obj) {\n var ret = [];\n for (var i in obj) {\n if (hasOwn.call(obj, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n //taken from node js assert.js\n //https://github.com/joyent/node/blob/master/lib/assert.js\n function deepEqual(actual, expected) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (var i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (isString(actual) && isString(expected) && actual !== expected) {\n return false;\n } else if (typeof actual !== 'object' && typeof expected !== 'object') {\n return actual === expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected);\n }\n }\n\n\n function objEquiv(a, b) {\n var key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {\n return false;\n }\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) {\n return false;\n }\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b);\n }\n try {\n var ka = keys(a),\n kb = keys(b),\n i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) {\n return false;\n }\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) {\n return false;\n }\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n return true;\n }\n\n\n var isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]';\n };\n\n //ie hack\n if (\"undefined\" !== typeof window && !isFunction(window.alert)) {\n (function (alert) {\n isFunction = function (obj) {\n return toStr.call(obj) === '[object Function]' || obj === alert;\n };\n }(window.alert));\n }\n\n function isObject(obj) {\n var undef;\n return obj !== null && typeof obj === \"object\";\n }\n\n function isHash(obj) {\n var ret = isObject(obj);\n return ret && obj.constructor === Object && !obj.nodeType && !obj.setInterval;\n }\n\n function isEmpty(object) {\n if (isArguments(object)) {\n return object.length === 0;\n } else if (isObject(object)) {\n return keys(object).length === 0;\n } else if (isString(object) || isArray(object)) {\n return object.length === 0;\n }\n return true;\n }\n\n function isBoolean(obj) {\n return obj === true || obj === false || toStr.call(obj) === \"[object Boolean]\";\n }\n\n function isUndefined(obj) {\n return typeof obj === 'undefined';\n }\n\n function isDefined(obj) {\n return !isUndefined(obj);\n }\n\n function isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n }\n\n function isNull(obj) {\n return obj === null;\n }\n\n\n var isArguments = function _isArguments(object) {\n return toStr.call(object) === '[object Arguments]';\n };\n\n if (!isArguments(arguments)) {\n isArguments = function _isArguments(obj) {\n return !!(obj && hasOwn.call(obj, \"callee\"));\n };\n }\n\n\n function isInstanceOf(obj, clazz) {\n if (isFunction(clazz)) {\n return obj instanceof clazz;\n } else {\n return false;\n }\n }\n\n function isRegExp(obj) {\n return toStr.call(obj) === '[object RegExp]';\n }\n\n var isArray = Array.isArray || function isArray(obj) {\n return toStr.call(obj) === \"[object Array]\";\n };\n\n function isDate(obj) {\n return toStr.call(obj) === '[object Date]';\n }\n\n function isString(obj) {\n return toStr.call(obj) === '[object String]';\n }\n\n function isNumber(obj) {\n return toStr.call(obj) === '[object Number]';\n }\n\n function isTrue(obj) {\n return obj === true;\n }\n\n function isFalse(obj) {\n return obj === false;\n }\n\n function isNotNull(obj) {\n return !isNull(obj);\n }\n\n function isEq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj == obj2;\n }\n\n function isNeq(obj, obj2) {\n /*jshint eqeqeq:false*/\n return obj != obj2;\n }\n\n function isSeq(obj, obj2) {\n return obj === obj2;\n }\n\n function isSneq(obj, obj2) {\n return obj !== obj2;\n }\n\n function isIn(obj, arr) {\n if ((isArray(arr) && Array.prototype.indexOf) || isString(arr)) {\n return arr.indexOf(obj) > -1;\n } else if (isArray(arr)) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (isEq(obj, arr[i])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function isNotIn(obj, arr) {\n return !isIn(obj, arr);\n }\n\n function isLt(obj, obj2) {\n return obj < obj2;\n }\n\n function isLte(obj, obj2) {\n return obj <= obj2;\n }\n\n function isGt(obj, obj2) {\n return obj > obj2;\n }\n\n function isGte(obj, obj2) {\n return obj >= obj2;\n }\n\n function isLike(obj, reg) {\n if (isString(reg)) {\n return (\"\" + obj).match(reg) !== null;\n } else if (isRegExp(reg)) {\n return reg.test(obj);\n }\n return false;\n }\n\n function isNotLike(obj, reg) {\n return !isLike(obj, reg);\n }\n\n function contains(arr, obj) {\n return isIn(obj, arr);\n }\n\n function notContains(arr, obj) {\n return !isIn(obj, arr);\n }\n\n function containsAt(arr, obj, index) {\n if (isArray(arr) && arr.length > index) {\n return isEq(arr[index], obj);\n }\n return false;\n }\n\n function notContainsAt(arr, obj, index) {\n if (isArray(arr)) {\n return !isEq(arr[index], obj);\n }\n return false;\n }\n\n function has(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function notHas(obj, prop) {\n return !has(obj, prop);\n }\n\n function length(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length === l;\n }\n return false;\n }\n\n function notLength(obj, l) {\n if (has(obj, \"length\")) {\n return obj.length !== l;\n }\n return false;\n }\n\n var isa = {\n isFunction: isFunction,\n isObject: isObject,\n isEmpty: isEmpty,\n isHash: isHash,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isArray: isArray,\n isBoolean: isBoolean,\n isUndefined: isUndefined,\n isDefined: isDefined,\n isUndefinedOrNull: isUndefinedOrNull,\n isNull: isNull,\n isArguments: isArguments,\n instanceOf: isInstanceOf,\n isRegExp: isRegExp,\n deepEqual: deepEqual,\n isTrue: isTrue,\n isFalse: isFalse,\n isNotNull: isNotNull,\n isEq: isEq,\n isNeq: isNeq,\n isSeq: isSeq,\n isSneq: isSneq,\n isIn: isIn,\n isNotIn: isNotIn,\n isLt: isLt,\n isLte: isLte,\n isGt: isGt,\n isGte: isGte,\n isLike: isLike,\n isNotLike: isNotLike,\n contains: contains,\n notContains: notContains,\n has: has,\n notHas: notHas,\n isLength: length,\n isNotLength: notLength,\n containsAt: containsAt,\n notContainsAt: notContainsAt\n };\n\n var tester = {\n constructor: function () {\n this._testers = [];\n },\n\n noWrap: {\n tester: function () {\n var testers = this._testers;\n return function tester(value) {\n var isa = false;\n for (var i = 0, l = testers.length; i < l && !isa; i++) {\n isa = testers[i](value);\n }\n return isa;\n };\n }\n }\n };\n\n var switcher = {\n constructor: function () {\n this._cases = [];\n this.__default = null;\n },\n\n def: function (val, fn) {\n this.__default = fn;\n },\n\n noWrap: {\n switcher: function () {\n var testers = this._cases, __default = this.__default;\n return function tester() {\n var handled = false, args = argsToArray(arguments), caseRet;\n for (var i = 0, l = testers.length; i < l && !handled; i++) {\n caseRet = testers[i](args);\n if (caseRet.length > 1) {\n if (caseRet[1] || caseRet[0]) {\n return caseRet[1];\n }\n }\n }\n if (!handled && __default) {\n return __default.apply(this, args);\n }\n };\n }\n }\n };\n\n function addToTester(func) {\n tester[func] = function isaTester() {\n this._testers.push(isa[func]);\n };\n }\n\n function addToSwitcher(func) {\n switcher[func] = function isaTester() {\n var args = argsToArray(arguments, 1), isFunc = isa[func], handler, doBreak = true;\n if (args.length <= isFunc.length - 1) {\n throw new TypeError(\"A handler must be defined when calling using switch\");\n } else {\n handler = args.pop();\n if (isBoolean(handler)) {\n doBreak = handler;\n handler = args.pop();\n }\n }\n if (!isFunction(handler)) {\n throw new TypeError(\"handler must be defined\");\n }\n this._cases.push(function (testArgs) {\n if (isFunc.apply(isa, testArgs.concat(args))) {\n return [doBreak, handler.apply(this, testArgs)];\n }\n return [false];\n });\n };\n }\n\n for (var i in isa) {\n if (hasOwn.call(isa, i)) {\n addToSwitcher(i);\n addToTester(i);\n }\n }\n\n var is = extended.define(isa).expose(isa);\n is.tester = extended.define(tester);\n is.switcher = extended.define(switcher);\n return is;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineIsa(require(\"extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\"], function (extended) {\n return defineIsa(extended);\n });\n } else {\n this.isExtended = defineIsa(this.extended);\n }\n\n}).call(this);\n\n","(function () {\n \"use strict\";\n\n function defineLeafy(_) {\n\n function compare(a, b) {\n var ret = 0;\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else if (!b) {\n return 1;\n }\n return ret;\n }\n\n var multiply = _.multiply;\n\n var Tree = _.declare({\n\n instance: {\n\n /**\n * Prints a node\n * @param node node to print\n * @param level the current level the node is at, Used for formatting\n */\n __printNode: function (node, level) {\n //console.log(level);\n var str = [];\n if (_.isUndefinedOrNull(node)) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n },\n\n constructor: function (options) {\n options = options || {};\n this.compare = options.compare || compare;\n this.__root = null;\n },\n\n insert: function () {\n throw new Error(\"Not Implemented\");\n },\n\n remove: function () {\n throw new Error(\"Not Implemented\");\n },\n\n clear: function () {\n this.__root = null;\n },\n\n isEmpty: function () {\n return !(this.__root);\n },\n\n traverseWithCondition: function (node, order, callback) {\n var cont = true;\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n\n }\n } else if (order === Tree.IN_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n }\n } else if (order === Tree.POST_ORDER) {\n cont = this.traverseWithCondition(node.left, order, callback);\n if (cont) {\n if (cont) {\n cont = this.traverseWithCondition(node.right, order, callback);\n }\n if (cont) {\n cont = callback(node.data);\n }\n }\n } else if (order === Tree.REVERSE_ORDER) {\n cont = this.traverseWithCondition(node.right, order, callback);\n if (cont) {\n cont = callback(node.data);\n if (cont) {\n cont = this.traverseWithCondition(node.left, order, callback);\n }\n }\n }\n }\n return cont;\n },\n\n traverse: function (node, order, callback) {\n if (node) {\n order = order || Tree.PRE_ORDER;\n if (order === Tree.PRE_ORDER) {\n callback(node.data);\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.IN_ORDER) {\n this.traverse(node.left, order, callback);\n callback(node.data);\n this.traverse(node.right, order, callback);\n } else if (order === Tree.POST_ORDER) {\n this.traverse(node.left, order, callback);\n this.traverse(node.right, order, callback);\n callback(node.data);\n } else if (order === Tree.REVERSE_ORDER) {\n this.traverse(node.right, order, callback);\n callback(node.data);\n this.traverse(node.left, order, callback);\n\n }\n }\n },\n\n forEach: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n this.traverse(this.__root, order, function (node) {\n cb.call(scope, node, this);\n });\n },\n\n map: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n ret.insert(cb.call(scope, node, this));\n });\n return ret;\n },\n\n filter: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = new this._static();\n this.traverse(this.__root, order, function (node) {\n if (cb.call(scope, node, this)) {\n ret.insert(node);\n }\n });\n return ret;\n },\n\n reduce: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduce.apply(_, args);\n },\n\n reduceRight: function (fun, accumulator, order) {\n var arr = this.toArray(order);\n var args = [arr, fun];\n if (!_.isUndefinedOrNull(accumulator)) {\n args.push(accumulator);\n }\n return _.reduceRight.apply(_, args);\n },\n\n every: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret = false;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return ret;\n });\n return ret;\n },\n\n some: function (cb, scope, order) {\n if (typeof cb !== \"function\") {\n throw new TypeError();\n }\n\n order = order || Tree.IN_ORDER;\n scope = scope || this;\n var ret;\n this.traverseWithCondition(this.__root, order, function (node) {\n ret = cb.call(scope, node, this);\n return !ret;\n });\n return ret;\n },\n\n toArray: function (order) {\n order = order || Tree.IN_ORDER;\n var arr = [];\n this.traverse(this.__root, order, function (node) {\n arr.push(node);\n });\n return arr;\n },\n\n contains: function (value) {\n var ret = false;\n var root = this.__root;\n while (root !== null) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = true;\n root = null;\n }\n }\n return ret;\n },\n\n find: function (value) {\n var ret;\n var root = this.__root;\n while (root) {\n var cmp = this.compare(value, root.data);\n if (cmp) {\n root = root[(cmp === -1) ? \"left\" : \"right\"];\n } else {\n ret = root.data;\n break;\n }\n }\n return ret;\n },\n\n findLessThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverseWithCondition(this.__root, Tree.IN_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === 1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n findGreaterThan: function (value, exclusive) {\n //find a better way!!!!\n var ret = [], compare = this.compare;\n this.traverse(this.__root, Tree.REVERSE_ORDER, function (v) {\n var cmp = compare(value, v);\n if ((!exclusive && cmp === 0) || cmp === -1) {\n ret.push(v);\n return true;\n } else {\n return false;\n }\n });\n return ret;\n },\n\n print: function () {\n this.__printNode(this.__root, 0);\n }\n },\n\n \"static\": {\n PRE_ORDER: \"pre_order\",\n IN_ORDER: \"in_order\",\n POST_ORDER: \"post_order\",\n REVERSE_ORDER: \"reverse_order\"\n }\n });\n\n var AVLTree = (function () {\n var abs = Math.abs;\n\n\n var makeNode = function (data) {\n return {\n data: data,\n balance: 0,\n left: null,\n right: null\n };\n };\n\n var rotateSingle = function (root, dir, otherDir) {\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n return save;\n };\n\n\n var rotateDouble = function (root, dir, otherDir) {\n root[otherDir] = rotateSingle(root[otherDir], otherDir, dir);\n return rotateSingle(root, dir, otherDir);\n };\n\n var adjustBalance = function (root, dir, bal) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[dir], nn = n[otherDir];\n if (nn.balance === 0) {\n root.balance = n.balance = 0;\n } else if (nn.balance === bal) {\n root.balance = -bal;\n n.balance = 0;\n } else { /* nn.balance == -bal */\n root.balance = 0;\n n.balance = bal;\n }\n nn.balance = 0;\n };\n\n var insertAdjustBalance = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n\n var n = root[dir];\n var bal = dir === \"right\" ? -1 : +1;\n\n if (n.balance === bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, otherDir, dir);\n } else {\n adjustBalance(root, dir, bal);\n root = rotateDouble(root, otherDir, dir);\n }\n\n return root;\n\n };\n\n var removeAdjustBalance = function (root, dir, done) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var n = root[otherDir];\n var bal = dir === \"right\" ? -1 : 1;\n if (n.balance === -bal) {\n root.balance = n.balance = 0;\n root = rotateSingle(root, dir, otherDir);\n } else if (n.balance === bal) {\n adjustBalance(root, otherDir, -bal);\n root = rotateDouble(root, dir, otherDir);\n } else { /* n.balance == 0 */\n root.balance = -bal;\n n.balance = bal;\n root = rotateSingle(root, dir, otherDir);\n done.done = true;\n }\n return root;\n };\n\n function insert(tree, data, cmp) {\n /* Empty tree case */\n var root = tree.__root;\n if (root === null || root === undefined) {\n tree.__root = makeNode(data);\n } else {\n var it = root, upd = [], up = [], top = 0, dir;\n while (true) {\n dir = upd[top] = cmp(data, it.data) === -1 ? \"left\" : \"right\";\n up[top++] = it;\n if (!it[dir]) {\n it[dir] = makeNode(data);\n break;\n }\n it = it[dir];\n }\n if (!it[dir]) {\n return null;\n }\n while (--top >= 0) {\n up[top].balance += upd[top] === \"right\" ? -1 : 1;\n if (up[top].balance === 0) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = insertAdjustBalance(up[top], upd[top]);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n break;\n }\n }\n }\n }\n\n function remove(tree, data, cmp) {\n var root = tree.__root;\n if (root !== null && root !== undefined) {\n var it = root, top = 0, up = [], upd = [], done = {done: false}, dir, compare;\n while (true) {\n if (!it) {\n return;\n } else if ((compare = cmp(data, it.data)) === 0) {\n break;\n }\n dir = upd[top] = compare === -1 ? \"left\" : \"right\";\n up[top++] = it;\n it = it[dir];\n }\n var l = it.left, r = it.right;\n if (!l || !r) {\n dir = !l ? \"right\" : \"left\";\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = it[dir];\n } else {\n tree.__root = it[dir];\n }\n } else {\n var heir = l;\n upd[top] = \"left\";\n up[top++] = it;\n while (heir.right) {\n upd[top] = \"right\";\n up[top++] = heir;\n heir = heir.right;\n }\n it.data = heir.data;\n up[top - 1][up[top - 1] === it ? \"left\" : \"right\"] = heir.left;\n }\n while (--top >= 0 && !done.done) {\n up[top].balance += upd[top] === \"left\" ? -1 : +1;\n if (abs(up[top].balance) === 1) {\n break;\n } else if (abs(up[top].balance) > 1) {\n up[top] = removeAdjustBalance(up[top], upd[top], done);\n if (top !== 0) {\n up[top - 1][upd[top - 1]] = up[top];\n } else {\n tree.__root = up[0];\n }\n }\n }\n }\n }\n\n\n return Tree.extend({\n instance: {\n\n insert: function (data) {\n insert(this, data, this.compare);\n },\n\n\n remove: function (data) {\n remove(this, data, this.compare);\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.balance + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n }());\n\n var AnderssonTree = (function () {\n\n var nil = {level: 0, data: null};\n\n function makeNode(data, level) {\n return {\n data: data,\n level: level,\n left: nil,\n right: nil\n };\n }\n\n function skew(root) {\n if (root.level !== 0 && root.left.level === root.level) {\n var save = root.left;\n root.left = save.right;\n save.right = root;\n root = save;\n }\n return root;\n }\n\n function split(root) {\n if (root.level !== 0 && root.right.right.level === root.level) {\n var save = root.right;\n root.right = save.left;\n save.left = root;\n root = save;\n root.level++;\n }\n return root;\n }\n\n function insert(root, data, compare) {\n if (root === nil) {\n root = makeNode(data, 1);\n }\n else {\n var dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = insert(root[dir], data, compare);\n root = skew(root);\n root = split(root);\n }\n return root;\n }\n\n var remove = function (root, data, compare) {\n var rLeft, rRight;\n if (root !== nil) {\n var cmp = compare(data, root.data);\n if (cmp === 0) {\n rLeft = root.left, rRight = root.right;\n if (rLeft !== nil && rRight !== nil) {\n var heir = rLeft;\n while (heir.right !== nil) {\n heir = heir.right;\n }\n root.data = heir.data;\n root.left = remove(rLeft, heir.data, compare);\n } else {\n root = root[rLeft === nil ? \"right\" : \"left\"];\n }\n } else {\n var dir = cmp === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, compare);\n }\n }\n if (root !== nil) {\n var rLevel = root.level;\n var rLeftLevel = root.left.level, rRightLevel = root.right.level;\n if (rLeftLevel < rLevel - 1 || rRightLevel < rLevel - 1) {\n if (rRightLevel > --root.level) {\n root.right.level = root.level;\n }\n root = skew(root);\n root = split(root);\n }\n }\n return root;\n };\n\n return Tree.extend({\n\n instance: {\n\n isEmpty: function () {\n return this.__root === nil || this._super(arguments);\n },\n\n insert: function (data) {\n if (!this.__root) {\n this.__root = nil;\n }\n this.__root = insert(this.__root, data, this.compare);\n },\n\n remove: function (data) {\n this.__root = remove(this.__root, data, this.compare);\n },\n\n\n traverseWithCondition: function (node) {\n var cont = true;\n if (node !== nil) {\n return this._super(arguments);\n }\n return cont;\n },\n\n\n traverse: function (node) {\n if (node !== nil) {\n this._super(arguments);\n }\n },\n\n contains: function () {\n if (this.__root !== nil) {\n return this._super(arguments);\n }\n return false;\n },\n\n __printNode: function (node, level) {\n var str = [];\n if (!node || !node.data) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push(node.data + \":\" + node.level + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n\n });\n }());\n\n var BinaryTree = Tree.extend({\n instance: {\n insert: function (data) {\n if (!this.__root) {\n this.__root = {\n data: data,\n parent: null,\n left: null,\n right: null\n };\n return this.__root;\n }\n var compare = this.compare;\n var root = this.__root;\n while (root !== null) {\n var cmp = compare(data, root.data);\n if (cmp) {\n var leaf = (cmp === -1) ? \"left\" : \"right\";\n var next = root[leaf];\n if (!next) {\n return (root[leaf] = {data: data, parent: root, left: null, right: null});\n } else {\n root = next;\n }\n } else {\n return;\n }\n }\n },\n\n remove: function (data) {\n if (this.__root !== null) {\n var head = {right: this.__root}, it = head;\n var p, f = null;\n var dir = \"right\";\n while (it[dir] !== null) {\n p = it;\n it = it[dir];\n var cmp = this.compare(data, it.data);\n if (!cmp) {\n f = it;\n }\n dir = (cmp === -1 ? \"left\" : \"right\");\n }\n if (f !== null) {\n f.data = it.data;\n p[p.right === it ? \"right\" : \"left\"] = it[it.left === null ? \"right\" : \"left\"];\n }\n this.__root = head.right;\n }\n\n }\n }\n });\n\n var RedBlackTree = (function () {\n var RED = \"RED\", BLACK = \"BLACK\";\n\n var isRed = function (node) {\n return node !== null && node.red;\n };\n\n var makeNode = function (data) {\n return {\n data: data,\n red: true,\n left: null,\n right: null\n };\n };\n\n var insert = function (root, data, compare) {\n if (!root) {\n return makeNode(data);\n\n } else {\n var cmp = compare(data, root.data);\n if (cmp) {\n var dir = cmp === -1 ? \"left\" : \"right\";\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[dir] = insert(root[dir], data, compare);\n var node = root[dir];\n\n if (isRed(node)) {\n\n var sibling = root[otherDir];\n if (isRed(sibling)) {\n /* Case 1 */\n root.red = true;\n node.red = false;\n sibling.red = false;\n } else {\n\n if (isRed(node[dir])) {\n\n root = rotateSingle(root, otherDir);\n } else if (isRed(node[otherDir])) {\n\n root = rotateDouble(root, otherDir);\n }\n }\n\n }\n }\n }\n return root;\n };\n\n var rotateSingle = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n var save = root[otherDir];\n root[otherDir] = save[dir];\n save[dir] = root;\n root.red = true;\n save.red = false;\n return save;\n };\n\n var rotateDouble = function (root, dir) {\n var otherDir = dir === \"left\" ? \"right\" : \"left\";\n root[otherDir] = rotateSingle(root[otherDir], otherDir);\n return rotateSingle(root, dir);\n };\n\n\n var remove = function (root, data, done, compare) {\n if (!root) {\n done.done = true;\n } else {\n var dir;\n if (compare(data, root.data) === 0) {\n if (!root.left || !root.right) {\n var save = root[!root.left ? \"right\" : \"left\"];\n /* Case 0 */\n if (isRed(root)) {\n done.done = true;\n } else if (isRed(save)) {\n save.red = false;\n done.done = true;\n }\n return save;\n }\n else {\n var heir = root.right, p;\n while (heir.left !== null) {\n p = heir;\n heir = heir.left;\n }\n if (p) {\n p.left = null;\n }\n root.data = heir.data;\n data = heir.data;\n }\n }\n dir = compare(data, root.data) === -1 ? \"left\" : \"right\";\n root[dir] = remove(root[dir], data, done, compare);\n if (!done.done) {\n root = removeBalance(root, dir, done);\n }\n }\n return root;\n };\n\n var removeBalance = function (root, dir, done) {\n var notDir = dir === \"left\" ? \"right\" : \"left\";\n var p = root, s = p[notDir];\n if (isRed(s)) {\n root = rotateSingle(root, dir);\n s = p[notDir];\n }\n if (s !== null) {\n if (!isRed(s.left) && !isRed(s.right)) {\n if (isRed(p)) {\n done.done = true;\n }\n p.red = 0;\n s.red = 1;\n } else {\n var save = p.red, newRoot = ( root === p );\n p = (isRed(s[notDir]) ? rotateSingle : rotateDouble)(p, dir);\n p.red = save;\n p.left.red = p.right.red = 0;\n if (newRoot) {\n root = p;\n } else {\n root[dir] = p;\n }\n done.done = true;\n }\n }\n return root;\n };\n\n return Tree.extend({\n instance: {\n insert: function (data) {\n this.__root = insert(this.__root, data, this.compare);\n this.__root.red = false;\n },\n\n remove: function (data) {\n var done = {done: false};\n var root = remove(this.__root, data, done, this.compare);\n if (root !== null) {\n root.red = 0;\n }\n this.__root = root;\n return data;\n },\n\n\n __printNode: function (node, level) {\n var str = [];\n if (!node) {\n str.push(multiply('\\t', level));\n str.push(\"~\");\n console.log(str.join(\"\"));\n } else {\n this.__printNode(node.right, level + 1);\n str.push(multiply('\\t', level));\n str.push((node.red ? RED : BLACK) + \":\" + node.data + \"\\n\");\n console.log(str.join(\"\"));\n this.__printNode(node.left, level + 1);\n }\n }\n\n }\n });\n\n }());\n\n\n return {\n Tree: Tree,\n AVLTree: AVLTree,\n AnderssonTree: AnderssonTree,\n BinaryTree: BinaryTree,\n RedBlackTree: RedBlackTree,\n IN_ORDER: Tree.IN_ORDER,\n PRE_ORDER: Tree.PRE_ORDER,\n POST_ORDER: Tree.POST_ORDER,\n REVERSE_ORDER: Tree.REVERSE_ORDER\n\n };\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineLeafy(require(\"extended\")()\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"is-extended\"))\n .register(require(\"array-extended\"))\n .register(require(\"string-extended\"))\n );\n\n }\n } else if (\"function\" === typeof define) {\n define([\"extended\", \"declare.js\", \"is-extended\", \"array-extended\", \"string-extended\"], function (extended, declare, is, array, string) {\n return defineLeafy(extended()\n .register(\"declare\", declare)\n .register(is)\n .register(array)\n .register(string)\n );\n });\n } else {\n this.leafy = defineLeafy(this.extended()\n .register(\"declare\", this.declare)\n .register(this.isExtended)\n .register(this.arrayExtended)\n .register(this.stringExtended));\n }\n\n}).call(this);\n\n\n\n\n\n\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","const _ = require('underscore');\n\nconst NO_LMP_DATE_MODIFIER = 4;\n\nmodule.exports = function(settings) {\n const taskSchedules = settings && settings.tasks && settings.tasks.schedules;\n const lib = {\n /**\n * @function\n * In legacy versions, partner code is required to only emit tasks which are ready to be displayed to the user. Utils.isTimely is the mechanism used for this.\n * With the rules-engine improvements in webapp 3.8, this responsibility shifts. Partner code should emit all tasks and the webapp's rules-engine decides what to display.\n * To this end - Utils.isTimely becomes a pass-through in nootils@4.x\n * @returns True\n */\n isTimely: () => true,\n\n addDate: function(date, days) {\n let result;\n if (date) {\n result = new Date(date.getTime());\n } else {\n result = lib.now();\n }\n result.setDate(result.getDate() + days);\n result.setHours(0, 0, 0, 0);\n return result;\n },\n\n getLmpDate: function(doc) {\n const weeks = doc.fields.last_menstrual_period || NO_LMP_DATE_MODIFIER;\n return lib.addDate(new Date(doc.reported_date), weeks * -7);\n },\n\n // TODO getSchedule() can be removed when tasks.json support is dropped\n getSchedule: function(name) {\n return _.findWhere(taskSchedules, { name: name });\n },\n\n getMostRecentTimestamp: function(reports, form, fields) {\n const report = lib.getMostRecentReport(reports, form, fields);\n return report && report.reported_date;\n },\n\n getMostRecentReport: function(reports, form, fields) {\n let result = null;\n reports.forEach(function(report) {\n if (report.form === form &&\n !report.deleted &&\n (!result || (report.reported_date > result.reported_date)) &&\n (!fields || (report.fields && lib.fieldsMatch(report, fields)))) {\n result = report;\n }\n });\n return result;\n },\n\n isFormSubmittedInWindow: function(reports, form, start, end, count) {\n let result = false;\n reports.forEach(function(report) {\n if (!result && report.form === form) {\n if (report.reported_date >= start && report.reported_date <= end) {\n if (!count ||\n (count && report.fields && report.fields.follow_up_count > count)) {\n result = true;\n }\n }\n }\n });\n return result;\n },\n\n isFirstReportNewer: function(firstReport, secondReport) {\n if (firstReport && firstReport.reported_date) {\n if (secondReport && secondReport.reported_date) {\n return firstReport.reported_date > secondReport.reported_date;\n }\n return true;\n }\n return null;\n },\n\n isDateValid: function(date) {\n return !isNaN(date.getTime());\n },\n\n /**\n * @function\n * @name getField\n *\n * Gets the value of specified field path.\n * @param {Object} report - The report object.\n * @param {string} field - Period separated json path assuming report.fields as\n * the root node e.g 'dob' (equivalent to report.fields.dob)\n * or 'screening.test_result' equivalent to report.fields.screening.test_result\n */\n getField: function(report, field) {\n return _.propertyOf(report.fields)(field.split('.'));\n },\n\n fieldsMatch: function(report, fieldValues) {\n return Object.keys(fieldValues).every(function(field) {\n return lib.getField(report, field) === fieldValues[field];\n });\n },\n\n MS_IN_DAY: 24*60*60*1000, // 1 day in ms\n\n now: function() { return new Date(); },\n };\n\n return lib;\n};\n","module.exports = exports = require(\"./lib\");","\"use strict\";\nvar extd = require(\"./extended\"),\n declare = extd.declare,\n AVLTree = extd.AVLTree,\n LinkedList = extd.LinkedList,\n isPromise = extd.isPromiseLike,\n EventEmitter = require(\"events\").EventEmitter;\n\n\nvar FactHash = declare({\n instance: {\n constructor: function () {\n this.memory = {};\n this.memoryValues = new LinkedList();\n },\n\n clear: function () {\n this.memoryValues.clear();\n this.memory = {};\n },\n\n\n remove: function (v) {\n var hashCode = v.hashCode,\n memory = this.memory,\n ret = memory[hashCode];\n if (ret) {\n this.memoryValues.remove(ret);\n delete memory[hashCode];\n }\n return ret;\n },\n\n insert: function (insert) {\n var hashCode = insert.hashCode;\n if (hashCode in this.memory) {\n throw new Error(\"Activation already in agenda \" + insert.rule.name + \" agenda\");\n }\n this.memoryValues.push((this.memory[hashCode] = insert));\n }\n }\n});\n\n\nvar DEFAULT_AGENDA_GROUP = \"main\";\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n constructor: function (flow, conflictResolution) {\n this.agendaGroups = {};\n this.agendaGroupStack = [DEFAULT_AGENDA_GROUP];\n this.rules = {};\n this.flow = flow;\n this.comparator = conflictResolution;\n this.setFocus(DEFAULT_AGENDA_GROUP).addAgendaGroup(DEFAULT_AGENDA_GROUP);\n },\n\n addAgendaGroup: function (groupName) {\n if (!extd.has(this.agendaGroups, groupName)) {\n this.agendaGroups[groupName] = new AVLTree({compare: this.comparator});\n }\n },\n\n getAgendaGroup: function (groupName) {\n return this.agendaGroups[groupName || DEFAULT_AGENDA_GROUP];\n },\n\n setFocus: function (agendaGroup) {\n if (agendaGroup !== this.getFocused() && this.agendaGroups[agendaGroup]) {\n this.agendaGroupStack.push(agendaGroup);\n this.emit(\"focused\", agendaGroup);\n }\n return this;\n },\n\n getFocused: function () {\n var ags = this.agendaGroupStack;\n return ags[ags.length - 1];\n },\n\n getFocusedAgenda: function () {\n return this.agendaGroups[this.getFocused()];\n },\n\n register: function (node) {\n var agendaGroup = node.rule.agendaGroup;\n this.rules[node.name] = {tree: new AVLTree({compare: this.comparator}), factTable: new FactHash()};\n if (agendaGroup) {\n this.addAgendaGroup(agendaGroup);\n }\n },\n\n isEmpty: function () {\n var agendaGroupStack = this.agendaGroupStack, changed = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n changed = true;\n }\n if (changed) {\n this.emit(\"focused\", this.getFocused());\n }\n return this.getFocusedAgenda().isEmpty();\n },\n\n fireNext: function () {\n var agendaGroupStack = this.agendaGroupStack, ret = false;\n while (this.getFocusedAgenda().isEmpty() && this.getFocused() !== DEFAULT_AGENDA_GROUP) {\n agendaGroupStack.pop();\n }\n if (!this.getFocusedAgenda().isEmpty()) {\n var activation = this.pop();\n this.emit(\"fire\", activation.rule.name, activation.match.factHash);\n var fired = activation.rule.fire(this.flow, activation.match);\n if (isPromise(fired)) {\n ret = fired.then(function () {\n //return true if an activation fired\n return true;\n });\n } else {\n ret = true;\n }\n }\n //return false if activation not fired\n return ret;\n },\n\n pop: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n var v = root.data;\n tree.remove(v);\n var rule = this.rules[v.name];\n rule.tree.remove(v);\n rule.factTable.remove(v);\n return v;\n },\n\n peek: function () {\n var tree = this.getFocusedAgenda(), root = tree.__root;\n while (root.right) {\n root = root.right;\n }\n return root.data;\n },\n\n modify: function (node, context) {\n this.retract(node, context);\n this.insert(node, context);\n },\n\n retract: function (node, retract) {\n var rule = this.rules[node.name];\n retract.rule = node;\n var activation = rule.factTable.remove(retract);\n if (activation) {\n this.getAgendaGroup(node.rule.agendaGroup).remove(activation);\n rule.tree.remove(activation);\n }\n },\n\n insert: function (node, insert) {\n var rule = this.rules[node.name], nodeRule = node.rule, agendaGroup = nodeRule.agendaGroup;\n rule.tree.insert(insert);\n this.getAgendaGroup(agendaGroup).insert(insert);\n if (nodeRule.autoFocus) {\n this.setFocus(agendaGroup);\n }\n\n rule.factTable.insert(insert);\n },\n\n dispose: function () {\n for (var i in this.agendaGroups) {\n this.agendaGroups[i].clear();\n }\n var rules = this.rules;\n for (i in rules) {\n if (i in rules) {\n rules[i].tree.clear();\n rules[i].factTable.clear();\n\n }\n }\n this.rules = {};\n }\n }\n\n});","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n isString = extd.isString;\n\nexports.modifiers = [\"assert\", \"modify\", \"retract\", \"emit\", \"halt\", \"focus\", \"getFacts\"];\n\nvar createFunction = function (body, defined, scope, scopeNames, definedNames) {\n var declares = [];\n forEach(definedNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n forEach(scopeNames, function (i) {\n if (body.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n body = [\"((function(){\", declares.join(\"\"), \"\\n\\treturn \", body, \"\\n})())\"].join(\"\");\n try {\n return eval(body);\n } catch (e) {\n throw new Error(\"Invalid action : \" + body + \"\\n\" + e.message);\n }\n};\n\nvar createDefined = (function () {\n\n var _createDefined = function (action, defined, scope) {\n if (isString(action)) {\n var declares = [];\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= function(){var prop = scope.\" + i + \"; return __objToStr__.call(prop) === '[object Function]' ? prop.apply(void 0, arguments) : prop;};\");\n }\n });\n if (declares.length) {\n declares.unshift(\"var __objToStr__ = Object.prototype.toString;\");\n }\n action = [declares.join(\"\"), \"return \", action, \";\"].join(\"\");\n action = new Function(\"defined\", \"scope\", action)(defined, scope);\n }\n var ret = action.hasOwnProperty(\"constructor\") && \"function\" === typeof action.constructor ? action.constructor : function (opts) {\n opts = opts || {};\n for (var i in opts) {\n if (i in action) {\n this[i] = opts[i];\n }\n }\n };\n var proto = ret.prototype;\n for (var i in action) {\n proto[i] = action[i];\n }\n return ret;\n\n };\n\n return function (options, defined, scope) {\n return _createDefined(options.properties, defined, scope);\n };\n})();\n\nexports.createFunction = createFunction;\nexports.createDefined = createDefined;","/*jshint evil:true*/\n\"use strict\";\nvar extd = require(\"../extended\"),\n parser = require(\"../parser\"),\n constraintMatcher = require(\"../constraintMatcher.js\"),\n indexOf = extd.indexOf,\n forEach = extd.forEach,\n removeDuplicates = extd.removeDuplicates,\n map = extd.map,\n obj = extd.hash,\n keys = obj.keys,\n merge = extd.merge,\n rules = require(\"../rule\"),\n common = require(\"./common\"),\n modifiers = common.modifiers,\n createDefined = common.createDefined,\n createFunction = common.createFunction;\n\n\n/**\n * @private\n * Parses an action from a rule definition\n * @param {String} action the body of the action to execute\n * @param {Array} identifiers array of identifiers collected\n * @param {Object} defined an object of defined\n * @param scope\n * @return {Object}\n */\nvar parseAction = function (action, identifiers, defined, scope) {\n var declares = [];\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1) {\n declares.push(\"if(!\" + i + \"){ var \" + i + \"= flow.\" + i + \";}\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return new Function(\"defined, scope\", \"return \" + new Function(params.join(\",\"), action).toString())(defined, scope);\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n};\n\nvar createRuleFromObject = (function () {\n var __resolveRule = function (rule, identifiers, conditions, defined, name) {\n var condition = [], definedClass = rule[0], alias = rule[1], constraint = rule[2], refs = rule[3];\n if (extd.isHash(constraint)) {\n refs = constraint;\n constraint = null;\n }\n if (definedClass && !!(definedClass = defined[definedClass])) {\n condition.push(definedClass);\n } else {\n throw new Error(\"Invalid class \" + rule[0] + \" for rule \" + name);\n }\n condition.push(alias, constraint, refs);\n conditions.push(condition);\n identifiers.push(alias);\n if (constraint) {\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(constraint)), function (i) {\n identifiers.push(i);\n });\n }\n if (extd.isObject(refs)) {\n for (var j in refs) {\n var ident = refs[j];\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n }\n }\n };\n\n function parseRule(rule, conditions, identifiers, defined, name) {\n if (rule.length) {\n var r0 = rule[0];\n if (r0 === \"not\" || r0 === \"exists\") {\n var temp = [];\n rule.shift();\n __resolveRule(rule, identifiers, temp, defined, name);\n var cond = temp[0];\n cond.unshift(r0);\n conditions.push(cond);\n } else if (r0 === \"or\") {\n var conds = [r0];\n rule.shift();\n forEach(rule, function (cond) {\n parseRule(cond, conds, identifiers, defined, name);\n });\n conditions.push(conds);\n } else {\n __resolveRule(rule, identifiers, conditions, defined, name);\n identifiers = removeDuplicates(identifiers);\n }\n }\n\n }\n\n return function (obj, defined, scope) {\n var name = obj.name;\n if (extd.isEmpty(obj)) {\n throw new Error(\"Rule is empty\");\n }\n var options = obj.options || {};\n options.scope = scope;\n var constraints = obj.constraints || [], l = constraints.length;\n if (!l) {\n constraints = [\"true\"];\n }\n var action = obj.action;\n if (extd.isUndefined(action)) {\n throw new Error(\"No action was defined for rule \" + name);\n }\n var conditions = [], identifiers = [];\n forEach(constraints, function (rule) {\n parseRule(rule, conditions, identifiers, defined, name);\n });\n return rules.createRule(name, options, conditions, parseAction(action, identifiers, defined, scope));\n };\n})();\n\nexports.parse = function (src, file) {\n //parse flow from file\n return parser.parseRuleSet(src, file);\n\n};\nexports.compile = function (flowObj, options, cb, Container) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n var name = flowObj.name || options.name;\n //if !name throw an error\n if (!name) {\n throw new Error(\"Name must be present in JSON or options\");\n }\n var flow = new Container(name);\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n //add the anything added to the scope as a property\n forEach(flowObj.scope, function (s) {\n scope[s.name] = true;\n });\n //add any defined classes in the parsed flowObj to defined\n forEach(flowObj.define, function (d) {\n defined[d.name] = createDefined(d, defined, scope);\n });\n\n //expose any defined classes to the flow.\n extd(defined).forEach(function (cls, name) {\n flow.addDefined(name, cls);\n });\n\n var scopeNames = extd(flowObj.scope).pluck(\"name\").union(extd(scope).keys().value()).value();\n var definedNames = map(keys(defined), function (s) {\n return s;\n });\n forEach(flowObj.scope, function (s) {\n scope[s.name] = createFunction(s.body, defined, scope, scopeNames, definedNames);\n });\n var rules = flowObj.rules;\n if (rules.length) {\n forEach(rules, function (rule) {\n flow.__rules = flow.__rules.concat(createRuleFromObject(rule, defined, scope));\n });\n }\n if (cb) {\n cb.call(flow, flow);\n }\n return flow;\n};\n\nexports.transpile = require(\"./transpile\").transpile;\n\n\n\n","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n merge = extd.merge,\n isString = extd.isString,\n modifiers = require(\"./common\").modifiers,\n constraintMatcher = require(\"../constraintMatcher\"),\n parser = require(\"../parser\");\n\nfunction definedToJs(options) {\n /*jshint evil:true*/\n options = isString(options) ? new Function(\"return \" + options + \";\")() : options;\n var ret = [\"(function(){\"], value;\n\n if (options.hasOwnProperty(\"constructor\") && \"function\" === typeof options.constructor) {\n ret.push(\"var Defined = \" + options.constructor.toString() + \";\");\n } else {\n ret.push(\"var Defined = function(opts){ for(var i in opts){if(opts.hasOwnProperty(i)){this[i] = opts[i];}}};\");\n }\n ret.push(\"var proto = Defined.prototype;\");\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n value = options[key];\n ret.push(\"proto.\" + key + \" = \" + (extd.isFunction(value) ? value.toString() : extd.format(\"%j\", value)) + \";\");\n }\n }\n ret.push(\"return Defined;\");\n ret.push(\"}())\");\n return ret.join(\"\");\n\n}\n\nfunction actionToJs(action, identifiers, defined, scope) {\n var declares = [], usedVars = {};\n forEach(identifiers, function (i) {\n if (action.indexOf(i) !== -1) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= facts.\" + i + \";\");\n }\n });\n extd(defined).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= defined.\" + i + \";\");\n }\n });\n\n extd(scope).keys().forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n usedVars[i] = true;\n declares.push(\"var \" + i + \"= scope.\" + i + \";\");\n }\n });\n extd(modifiers).forEach(function (i) {\n if (action.indexOf(i) !== -1 && !usedVars[i]) {\n declares.push(\"var \" + i + \"= flow.\" + i + \";\");\n }\n });\n var params = [\"facts\", 'flow'];\n if (/next\\(.*\\)/.test(action)) {\n params.push(\"next\");\n }\n action = declares.join(\"\") + action;\n try {\n return [\"function(\", params.join(\",\"), \"){\", action, \"}\"].join(\"\");\n } catch (e) {\n throw new Error(\"Invalid action : \" + action + \"\\n\" + e.message);\n }\n}\n\nfunction parseConstraintModifier(constraint, ret) {\n if (constraint.length && extd.isString(constraint[0])) {\n var modifier = constraint[0].match(\" *(from)\");\n if (modifier) {\n modifier = modifier[0];\n switch (modifier) {\n case \"from\":\n ret.push(', \"', constraint.shift(), '\"');\n break;\n default:\n throw new Error(\"Unrecognized modifier \" + modifier);\n }\n }\n }\n}\n\nfunction parseConstraintHash(constraint, ret, identifiers) {\n if (constraint.length && extd.isHash(constraint[0])) {\n //ret of options\n var refs = constraint.shift();\n extd(refs).values().forEach(function (ident) {\n if (indexOf(identifiers, ident) === -1) {\n identifiers.push(ident);\n }\n });\n ret.push(',' + extd.format('%j', [refs]));\n }\n}\n\nfunction constraintsToJs(constraint, identifiers) {\n constraint = constraint.slice(0);\n var ret = [];\n if (constraint[0] === \"or\") {\n ret.push('[\"' + constraint.shift() + '\"');\n ret.push(extd.map(constraint,function (c) {\n return constraintsToJs(c, identifiers);\n }).join(\",\") + \"]\");\n return ret;\n } else if (constraint[0] === \"not\" || constraint[0] === \"exists\") {\n ret.push('\"', constraint.shift(), '\", ');\n }\n identifiers.push(constraint[1]);\n ret.push(constraint[0], ', \"' + constraint[1].replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + '\"');\n constraint.splice(0, 2);\n if (constraint.length) {\n //constraint\n var c = constraint.shift();\n if (extd.isString(c) && c) {\n ret.push(',\"' + c.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\"), '\"');\n forEach(constraintMatcher.getIdentifiers(parser.parseConstraint(c)), function (i) {\n identifiers.push(i);\n });\n } else {\n ret.push(',\"true\"');\n constraint.unshift(c);\n }\n }\n parseConstraintModifier(constraint, ret);\n parseConstraintHash(constraint, ret, identifiers);\n return '[' + ret.join(\"\") + ']';\n}\n\nexports.transpile = function (flowObj, options) {\n options = options || {};\n var ret = [];\n ret.push(\"(function(){\");\n ret.push(\"return function(options){\");\n ret.push(\"options = options || {};\");\n ret.push(\"var bind = function(scope, fn){return function(){return fn.apply(scope, arguments);};}, defined = {Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, scope = options.scope || {};\");\n ret.push(\"var optDefined = options.defined || {}; for(var i in optDefined){defined[i] = optDefined[i];}\");\n var defined = merge({Array: Array, String: String, Number: Number, Boolean: Boolean, RegExp: RegExp, Date: Date, Object: Object}, options.define || {});\n if (typeof Buffer !== \"undefined\") {\n defined.Buffer = Buffer;\n }\n var scope = merge({console: console}, options.scope);\n ret.push([\"return nools.flow('\", options.name, \"', function(){\"].join(\"\"));\n //add any defined classes in the parsed flowObj to defined\n ret.push(extd(flowObj.define || []).map(function (defined) {\n var name = defined.name;\n defined[name] = {};\n return [\"var\", name, \"= defined.\" + name, \"= this.addDefined('\" + name + \"',\", definedToJs(defined.properties) + \");\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(extd(flowObj.scope || []).map(function (s) {\n var name = s.name;\n scope[name] = {};\n return [\"var\", name, \"= scope.\" + name, \"= \", s.body, \";\"].join(\" \");\n }).value().join(\"\\n\"));\n ret.push(\"scope.console = console;\\n\");\n\n\n ret.push(extd(flowObj.rules || []).map(function (rule) {\n var identifiers = [], ret = [\"this.rule('\", rule.name.replace(/'/g, \"\\\\'\"), \"'\"], options = extd.merge(rule.options || {}, {scope: \"scope\"});\n ret.push(\",\", extd.format(\"%j\", [options]).replace(/(:\"scope\")/, \":scope\"));\n if (rule.constraints && !extd.isEmpty(rule.constraints)) {\n ret.push(\", [\");\n ret.push(extd(rule.constraints).map(function (c) {\n return constraintsToJs(c, identifiers);\n }).value().join(\",\"));\n ret.push(\"]\");\n }\n ret.push(\",\", actionToJs(rule.action, identifiers, defined, scope));\n ret.push(\");\");\n return ret.join(\"\");\n }).value().join(\"\"));\n ret.push(\"});\");\n ret.push(\"};\");\n ret.push(\"}());\");\n return ret.join(\"\");\n};\n\n\n","var map = require(\"./extended\").map;\n\nfunction salience(a, b) {\n return a.rule.priority - b.rule.priority;\n}\n\nfunction bucketCounter(a, b) {\n return a.counter - b.counter;\n}\n\nfunction factRecency(a, b) {\n /*jshint noempty: false*/\n\n var i = 0;\n var aMatchRecency = a.match.recency,\n bMatchRecency = b.match.recency, aLength = aMatchRecency.length - 1, bLength = bMatchRecency.length - 1;\n while (aMatchRecency[i] === bMatchRecency[i] && i < aLength && i < bLength && i++) {\n }\n var ret = aMatchRecency[i] - bMatchRecency[i];\n if (!ret) {\n ret = aLength - bLength;\n }\n return ret;\n}\n\nfunction activationRecency(a, b) {\n return a.recency - b.recency;\n}\n\nvar strategies = {\n salience: salience,\n bucketCounter: bucketCounter,\n factRecency: factRecency,\n activationRecency: activationRecency\n};\n\nexports.strategies = strategies;\nexports.strategy = function (strats) {\n strats = map(strats, function (s) {\n return strategies[s];\n });\n var stratsLength = strats.length;\n\n return function (a, b) {\n var i = -1, ret = 0;\n var equal = (a === b) || (a.name === b.name && a.hashCode === b.hashCode);\n if (!equal) {\n while (++i < stratsLength && !ret) {\n ret = strats[i](a, b);\n }\n ret = ret > 0 ? 1 : -1;\n }\n return ret;\n };\n};","\"use strict\";\n\nvar extd = require(\"./extended\"),\n deepEqual = extd.deepEqual,\n merge = extd.merge,\n instanceOf = extd.instanceOf,\n filter = extd.filter,\n declare = extd.declare,\n constraintMatcher;\n\nvar id = 0;\nvar Constraint = declare({\n\n type: null,\n\n instance: {\n constructor: function (constraint) {\n if (!constraintMatcher) {\n constraintMatcher = require(\"./constraintMatcher\");\n }\n this.id = id++;\n this.constraint = constraint;\n extd.bindAll(this, [\"assert\"]);\n },\n \"assert\": function () {\n throw new Error(\"not implemented\");\n },\n\n getIndexableProperties: function () {\n return [];\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n getters: {\n variables: function () {\n return [this.get(\"alias\")];\n }\n }\n\n\n }\n});\n\nConstraint.extend({\n instance: {\n\n type: \"object\",\n\n constructor: function (type) {\n this._super([type]);\n },\n\n \"assert\": function (param) {\n return param instanceof this.constraint || param.constructor === this.constraint;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.constraint === constraint.constraint;\n }\n }\n}).as(exports, \"ObjectConstraint\");\n\nvar EqualityConstraint = Constraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function (constraint, options) {\n this._super([constraint]);\n options = options || {};\n this.pattern = options.pattern;\n this._matcher = constraintMatcher.getMatcher(constraint, options, true);\n },\n\n \"assert\": function (values) {\n return this._matcher(values);\n }\n }\n}).as(exports, \"EqualityConstraint\");\n\nEqualityConstraint.extend({instance: {type: \"inequality\"}}).as(exports, \"InequalityConstraint\");\nEqualityConstraint.extend({instance: {type: \"comparison\"}}).as(exports, \"ComparisonConstraint\");\n\nConstraint.extend({\n\n instance: {\n\n type: \"equality\",\n\n constructor: function () {\n this._super([\n [true]\n ]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\");\n },\n\n\n \"assert\": function () {\n return true;\n }\n }\n}).as(exports, \"TrueConstraint\");\n\nvar ReferenceConstraint = Constraint.extend({\n\n instance: {\n\n type: \"reference\",\n\n constructor: function (constraint, options) {\n this.cache = {};\n this._super([constraint]);\n options = options || {};\n this.values = [];\n this.pattern = options.pattern;\n this._options = options;\n this._matcher = constraintMatcher.getMatcher(constraint, options, false);\n },\n\n \"assert\": function (fact, fh) {\n try {\n return this._matcher(fact, fh);\n } catch (e) {\n throw new Error(\"Error with evaluating pattern \" + this.pattern + \" \" + e.message);\n }\n\n },\n\n merge: function (that) {\n var ret = this;\n if (that instanceof ReferenceConstraint) {\n ret = new this._static([this.constraint, that.constraint, \"and\"], merge({}, this._options, this._options));\n ret._alias = this._alias || that._alias;\n ret.vars = this.vars.concat(that.vars);\n }\n return ret;\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n\n getters: {\n variables: function () {\n return this.vars;\n },\n\n alias: function () {\n return this._alias;\n }\n },\n\n setters: {\n alias: function (alias) {\n this._alias = alias;\n this.vars = filter(constraintMatcher.getIdentifiers(this.constraint), function (v) {\n return v !== alias;\n });\n }\n }\n }\n\n}).as(exports, \"ReferenceConstraint\");\n\n\nReferenceConstraint.extend({\n instance: {\n type: \"reference_equality\",\n op: \"eq\",\n getIndexableProperties: function () {\n return constraintMatcher.getIndexableProperties(this.constraint);\n }\n }\n}).as(exports, \"ReferenceEqualityConstraint\")\n .extend({instance: {type: \"reference_inequality\", op: \"neq\"}}).as(exports, \"ReferenceInequalityConstraint\")\n .extend({instance: {type: \"reference_gt\", op: \"gt\"}}).as(exports, \"ReferenceGTConstraint\")\n .extend({instance: {type: \"reference_gte\", op: \"gte\"}}).as(exports, \"ReferenceGTEConstraint\")\n .extend({instance: {type: \"reference_lt\", op: \"lt\"}}).as(exports, \"ReferenceLTConstraint\")\n .extend({instance: {type: \"reference_lte\", op: \"lte\"}}).as(exports, \"ReferenceLTEConstraint\");\n\n\nConstraint.extend({\n instance: {\n\n type: \"hash\",\n\n constructor: function (hash) {\n this._super([hash]);\n },\n\n equal: function (constraint) {\n return extd.instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && extd.deepEqual(this.constraint, constraint.constraint);\n },\n\n \"assert\": function () {\n return true;\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"HashConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (constraints, options) {\n this.type = \"from\";\n this.constraints = constraintMatcher.getSourceMatcher(constraints, (options || {}), true);\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.get(\"alias\") === constraint.get(\"alias\") && deepEqual(this.constraints, constraint.constraints);\n },\n\n \"assert\": function (fact, fh) {\n return this.constraints(fact, fh);\n },\n\n getters: {\n variables: function () {\n return this.constraint;\n }\n }\n\n }\n}).as(exports, \"FromConstraint\");\n\nConstraint.extend({\n instance: {\n constructor: function (func, options) {\n this.type = \"custom\";\n this.fn = func;\n this.options = options;\n extd.bindAll(this, [\"assert\"]);\n },\n\n equal: function (constraint) {\n return instanceOf(constraint, this._static) && this.fn === constraint.constraint;\n },\n\n \"assert\": function (fact, fh) {\n return this.fn(fact, fh);\n }\n }\n}).as(exports, \"CustomConstraint\");\n\n\n","\"use strict\";\n\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n forEach = extd.forEach,\n some = extd.some,\n indexOf = extd.indexOf,\n isNumber = extd.isNumber,\n removeDups = extd.removeDuplicates,\n atoms = require(\"./constraint\");\n\nfunction getProps(val) {\n return extd(val).map(function mapper(val) {\n return isArray(val) ? isArray(val[0]) ? getProps(val).value() : val.reverse().join(\".\") : val;\n }).flatten().filter(function (v) {\n return !!v;\n });\n}\n\nvar definedFuncs = {\n indexOf: extd.indexOf,\n now: function () {\n return new Date();\n },\n\n Date: function (y, m, d, h, min, s, ms) {\n var date = new Date();\n if (isNumber(y)) {\n date.setYear(y);\n }\n if (isNumber(m)) {\n date.setMonth(m);\n }\n if (isNumber(d)) {\n date.setDate(d);\n }\n if (isNumber(h)) {\n date.setHours(h);\n }\n if (isNumber(min)) {\n date.setMinutes(min);\n }\n if (isNumber(s)) {\n date.setSeconds(s);\n }\n if (isNumber(ms)) {\n date.setMilliseconds(ms);\n }\n return date;\n },\n\n lengthOf: function (arr, length) {\n return arr.length === length;\n },\n\n isTrue: function (val) {\n return val === true;\n },\n\n isFalse: function (val) {\n return val === false;\n },\n\n isNotNull: function (actual) {\n return actual !== null;\n },\n\n dateCmp: function (dt1, dt2) {\n return extd.compare(dt1, dt2);\n }\n\n};\n\nforEach([\"years\", \"days\", \"months\", \"hours\", \"minutes\", \"seconds\"], function (k) {\n definedFuncs[k + \"FromNow\"] = extd[k + \"FromNow\"];\n definedFuncs[k + \"Ago\"] = extd[k + \"Ago\"];\n});\n\n\nforEach([\"isArray\", \"isNumber\", \"isHash\", \"isObject\", \"isDate\", \"isBoolean\", \"isString\", \"isRegExp\", \"isNull\", \"isEmpty\",\n \"isUndefined\", \"isDefined\", \"isUndefinedOrNull\", \"isPromiseLike\", \"isFunction\", \"deepEqual\"], function (k) {\n var m = extd[k];\n definedFuncs[k] = function () {\n return m.apply(extd, arguments);\n };\n});\n\n\nvar lang = {\n\n equal: function (c1, c2) {\n var ret = false;\n if (c1 === c2) {\n ret = true;\n } else {\n if (c1[2] === c2[2]) {\n if (indexOf([\"string\", \"number\", \"boolean\", \"regexp\", \"identifier\", \"null\"], c1[2]) !== -1) {\n ret = c1[0] === c2[0];\n } else if (c1[2] === \"unary\" || c1[2] === \"logicalNot\") {\n ret = this.equal(c1[0], c2[0]);\n } else {\n ret = this.equal(c1[0], c2[0]) && this.equal(c1[1], c2[1]);\n }\n }\n }\n return ret;\n },\n\n __getProperties: function (rule) {\n var ret = [];\n if (rule) {\n var rule2 = rule[2];\n if (!rule2) {\n return ret;\n }\n if (rule2 !== \"prop\" &&\n rule2 !== \"identifier\" &&\n rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n ret[0] = this.__getProperties(rule[0]);\n ret[1] = this.__getProperties(rule[1]);\n } else if (rule2 === \"identifier\") {\n //at the bottom\n ret = [rule[0]];\n } else {\n ret = lang.__getProperties(rule[1]).concat(lang.__getProperties(rule[0]));\n }\n }\n return ret;\n },\n\n getIndexableProperties: function (rule) {\n if (rule[2] === \"composite\") {\n return this.getIndexableProperties(rule[0]);\n } else if (/^(\\w+(\\['[^']*'])*) *([!=]==?|[<>]=?) (\\w+(\\['[^']*'])*)$/.test(this.parse(rule))) {\n return getProps(this.__getProperties(rule)).flatten().value();\n } else {\n return [];\n }\n },\n\n getIdentifiers: function (rule) {\n var ret = [];\n var rule2 = rule[2];\n\n if (rule2 === \"identifier\") {\n //its an identifier so stop\n return [rule[0]];\n } else if (rule2 === \"function\") {\n ret = ret.concat(this.getIdentifiers(rule[0])).concat(this.getIdentifiers(rule[1]));\n } else if (rule2 !== \"string\" &&\n rule2 !== \"number\" &&\n rule2 !== \"boolean\" &&\n rule2 !== \"regexp\" &&\n rule2 !== \"unary\" &&\n rule2 !== \"unary\") {\n //its an expression so keep going\n if (rule2 === \"prop\") {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n if (rule[1]) {\n var propChain = rule[1];\n //go through the member variables and collect any identifiers that may be in functions\n while (isArray(propChain)) {\n if (propChain[2] === \"function\") {\n ret = ret.concat(this.getIdentifiers(propChain[1]));\n break;\n } else {\n propChain = propChain[1];\n }\n }\n }\n\n } else {\n if (rule[0]) {\n ret = ret.concat(this.getIdentifiers(rule[0]));\n }\n if (rule[1]) {\n ret = ret.concat(this.getIdentifiers(rule[1]));\n }\n }\n }\n //remove dups and return\n return removeDups(ret);\n },\n\n toConstraints: function (rule, options) {\n var ret = [],\n alias = options.alias,\n scope = options.scope || {};\n\n var rule2 = rule[2];\n\n\n if (rule2 === \"and\") {\n ret = ret.concat(this.toConstraints(rule[0], options)).concat(this.toConstraints(rule[1], options));\n } else if (\n rule2 === \"composite\" ||\n rule2 === \"or\" ||\n rule2 === \"lt\" ||\n rule2 === \"gt\" ||\n rule2 === \"lte\" ||\n rule2 === \"gte\" ||\n rule2 === \"like\" ||\n rule2 === \"notLike\" ||\n rule2 === \"eq\" ||\n rule2 === \"neq\" ||\n rule2 === \"seq\" ||\n rule2 === \"sneq\" ||\n rule2 === \"in\" ||\n rule2 === \"notIn\" ||\n rule2 === \"prop\" ||\n rule2 === \"propLookup\" ||\n rule2 === \"function\" ||\n rule2 === \"logicalNot\") {\n var isReference = some(this.getIdentifiers(rule), function (i) {\n return i !== alias && !(i in definedFuncs) && !(i in scope);\n });\n switch (rule2) {\n case \"eq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"seq\":\n ret.push(new atoms[isReference ? \"ReferenceEqualityConstraint\" : \"EqualityConstraint\"](rule, options));\n break;\n case \"neq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"sneq\":\n ret.push(new atoms[isReference ? \"ReferenceInequalityConstraint\" : \"InequalityConstraint\"](rule, options));\n break;\n case \"gt\":\n ret.push(new atoms[isReference ? \"ReferenceGTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"gte\":\n ret.push(new atoms[isReference ? \"ReferenceGTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lt\":\n ret.push(new atoms[isReference ? \"ReferenceLTConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n case \"lte\":\n ret.push(new atoms[isReference ? \"ReferenceLTEConstraint\" : \"ComparisonConstraint\"](rule, options));\n break;\n default:\n ret.push(new atoms[isReference ? \"ReferenceConstraint\" : \"ComparisonConstraint\"](rule, options));\n }\n\n }\n return ret;\n },\n\n\n parse: function (rule) {\n return this[rule[2]](rule[0], rule[1]);\n },\n\n composite: function (lhs) {\n return this.parse(lhs);\n },\n\n and: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"&&\", this.parse(rhs), \")\"].join(\" \");\n },\n\n or: function (lhs, rhs) {\n return [\"(\", this.parse(lhs), \"||\", this.parse(rhs), \")\"].join(\" \");\n },\n\n prop: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"['\", this.parse(prop), \"']\"].join(\"\");\n }\n },\n\n propLookup: function (name, prop) {\n if (prop[2] === \"function\") {\n return [this.parse(name), this.parse(prop)].join(\".\");\n } else {\n return [this.parse(name), \"[\", this.parse(prop), \"]\"].join(\"\");\n }\n },\n\n unary: function (lhs) {\n return -1 * this.parse(lhs);\n },\n\n plus: function (lhs, rhs) {\n return [this.parse(lhs), \"+\", this.parse(rhs)].join(\" \");\n },\n minus: function (lhs, rhs) {\n return [this.parse(lhs), \"-\", this.parse(rhs)].join(\" \");\n },\n\n mult: function (lhs, rhs) {\n return [this.parse(lhs), \"*\", this.parse(rhs)].join(\" \");\n },\n\n div: function (lhs, rhs) {\n return [this.parse(lhs), \"/\", this.parse(rhs)].join(\" \");\n },\n\n mod: function (lhs, rhs) {\n return [this.parse(lhs), \"%\", this.parse(rhs)].join(\" \");\n },\n\n lt: function (lhs, rhs) {\n return [this.parse(lhs), \"<\", this.parse(rhs)].join(\" \");\n },\n gt: function (lhs, rhs) {\n return [this.parse(lhs), \">\", this.parse(rhs)].join(\" \");\n },\n lte: function (lhs, rhs) {\n return [this.parse(lhs), \"<=\", this.parse(rhs)].join(\" \");\n },\n gte: function (lhs, rhs) {\n return [this.parse(lhs), \">=\", this.parse(rhs)].join(\" \");\n },\n like: function (lhs, rhs) {\n return [this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n notLike: function (lhs, rhs) {\n return [\"!\", this.parse(rhs), \".test(\", this.parse(lhs), \")\"].join(\"\");\n },\n eq: function (lhs, rhs) {\n return [this.parse(lhs), \"==\", this.parse(rhs)].join(\" \");\n },\n\n seq: function (lhs, rhs) {\n return [this.parse(lhs), \"===\", this.parse(rhs)].join(\" \");\n },\n\n neq: function (lhs, rhs) {\n return [this.parse(lhs), \"!=\", this.parse(rhs)].join(\" \");\n },\n\n sneq: function (lhs, rhs) {\n return [this.parse(lhs), \"!==\", this.parse(rhs)].join(\" \");\n },\n\n \"in\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) != -1\"].join(\"\");\n },\n\n \"notIn\": function (lhs, rhs) {\n return [\"(indexOf(\", this.parse(rhs), \",\", this.parse(lhs), \")) == -1\"].join(\"\");\n },\n\n \"arguments\": function (lhs, rhs) {\n var ret = [];\n if (lhs) {\n ret.push(this.parse(lhs));\n }\n if (rhs) {\n ret.push(this.parse(rhs));\n }\n return ret.join(\",\");\n },\n\n \"array\": function (lhs) {\n var args = [];\n if (lhs) {\n args = this.parse(lhs);\n if (isArray(args)) {\n return args;\n } else {\n return [\"[\", args, \"]\"].join(\"\");\n }\n }\n return [\"[\", args.join(\",\"), \"]\"].join(\"\");\n },\n\n \"function\": function (lhs, rhs) {\n var args = this.parse(rhs);\n return [this.parse(lhs), \"(\", args, \")\"].join(\"\");\n },\n\n \"string\": function (lhs) {\n return \"'\" + lhs + \"'\";\n },\n\n \"number\": function (lhs) {\n return lhs;\n },\n\n \"boolean\": function (lhs) {\n return lhs;\n },\n\n regexp: function (lhs) {\n return lhs;\n },\n\n identifier: function (lhs) {\n return lhs;\n },\n\n \"null\": function () {\n return \"null\";\n },\n\n logicalNot: function (lhs) {\n return [\"!(\", this.parse(lhs), \")\"].join(\"\");\n }\n};\n\nvar matcherCount = 0;\nvar toJs = exports.toJs = function (rule, scope, alias, equality, wrap) {\n /*jshint evil:true*/\n var js = lang.parse(rule);\n scope = scope || {};\n var vars = lang.getIdentifiers(rule);\n var closureVars = [\"var indexOf = definedFuncs.indexOf; var hasOwnProperty = Object.prototype.hasOwnProperty;\"], funcVars = [];\n extd(vars).filter(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (definedFuncs.hasOwnProperty(v)) {\n ret.push(\"definedFuncs['\", v, \"']\");\n } else if (scope.hasOwnProperty(v)) {\n ret.push(\"scope['\", v, \"']\");\n } else {\n return true;\n }\n ret.push(\";\");\n closureVars.push(ret.join(\"\"));\n return false;\n }).forEach(function (v) {\n var ret = [\"var \", v, \" = \"];\n if (equality || v !== alias) {\n ret.push(\"fact.\" + v);\n } else if (v === alias) {\n ret.push(\"hash.\", v, \"\");\n }\n ret.push(\";\");\n funcVars.push(ret.join(\"\"));\n });\n var closureBody = closureVars.join(\"\") + \"return function matcher\" + (matcherCount++) + (!equality ? \"(fact, hash){\" : \"(fact){\") + funcVars.join(\"\") + \" return \" + (wrap ? wrap(js) : js) + \";}\";\n var f = new Function(\"definedFuncs, scope\", closureBody)(definedFuncs, scope);\n //console.log(f.toString());\n return f;\n};\n\nexports.getMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return \"!!(\" + src + \")\";\n });\n};\n\nexports.getSourceMatcher = function (rule, options, equality) {\n options = options || {};\n return toJs(rule, options.scope, options.alias, equality, function (src) {\n return src;\n });\n};\n\nexports.toConstraints = function (constraint, options) {\n if (typeof constraint === 'function') {\n return [new atoms.CustomConstraint(constraint, options)];\n }\n //constraint.split(\"&&\")\n return lang.toConstraints(constraint, options);\n};\n\nexports.equal = function (c1, c2) {\n return lang.equal(c1, c2);\n};\n\nexports.getIdentifiers = function (constraint) {\n return lang.getIdentifiers(constraint);\n};\n\nexports.getIndexableProperties = function (constraint) {\n return lang.getIndexableProperties(constraint);\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isBoolean = extd.isBoolean,\n declare = extd.declare,\n indexOf = extd.indexOf,\n pPush = Array.prototype.push;\n\nfunction createContextHash(paths, hashCode) {\n var ret = \"\",\n i = -1,\n l = paths.length;\n while (++i < l) {\n ret += paths[i].id + \":\";\n }\n ret += hashCode;\n return ret;\n}\n\nfunction merge(h1, h2, aliases) {\n var i = -1, l = aliases.length, alias;\n while (++i < l) {\n alias = aliases[i];\n h1[alias] = h2[alias];\n }\n}\n\nfunction unionRecency(arr, arr1, arr2) {\n pPush.apply(arr, arr1);\n var i = -1, l = arr2.length, val, j = arr.length;\n while (++i < l) {\n val = arr2[i];\n if (indexOf(arr, val) === -1) {\n arr[j++] = val;\n }\n }\n}\n\nvar Match = declare({\n instance: {\n\n isMatch: true,\n hashCode: \"\",\n facts: null,\n factIds: null,\n factHash: null,\n recency: null,\n aliases: null,\n\n constructor: function () {\n this.facts = [];\n this.factIds = [];\n this.factHash = {};\n this.recency = [];\n this.aliases = [];\n },\n\n addFact: function (assertable) {\n pPush.call(this.facts, assertable);\n pPush.call(this.recency, assertable.recency);\n pPush.call(this.factIds, assertable.id);\n this.hashCode = this.factIds.join(\":\");\n return this;\n },\n\n merge: function (mr) {\n var ret = new Match();\n ret.isMatch = mr.isMatch;\n pPush.apply(ret.facts, this.facts);\n pPush.apply(ret.facts, mr.facts);\n pPush.apply(ret.aliases, this.aliases);\n pPush.apply(ret.aliases, mr.aliases);\n ret.hashCode = this.hashCode + \":\" + mr.hashCode;\n merge(ret.factHash, this.factHash, this.aliases);\n merge(ret.factHash, mr.factHash, mr.aliases);\n unionRecency(ret.recency, this.recency, mr.recency);\n return ret;\n }\n }\n});\n\nvar Context = declare({\n instance: {\n match: null,\n factHash: null,\n aliases: null,\n fact: null,\n hashCode: null,\n paths: null,\n pathsHash: null,\n\n constructor: function (fact, paths, mr) {\n this.fact = fact;\n if (mr) {\n this.match = mr;\n } else {\n this.match = new Match().addFact(fact);\n }\n this.factHash = this.match.factHash;\n this.aliases = this.match.aliases;\n this.hashCode = this.match.hashCode;\n if (paths) {\n this.paths = paths;\n this.pathsHash = createContextHash(paths, this.hashCode);\n } else {\n this.pathsHash = this.hashCode;\n }\n },\n\n \"set\": function (key, value) {\n this.factHash[key] = value;\n this.aliases.push(key);\n return this;\n },\n\n isMatch: function (isMatch) {\n if (isBoolean(isMatch)) {\n this.match.isMatch = isMatch;\n } else {\n return this.match.isMatch;\n }\n return this;\n },\n\n mergeMatch: function (merge) {\n var match = this.match = this.match.merge(merge);\n this.factHash = match.factHash;\n this.hashCode = match.hashCode;\n this.aliases = match.aliases;\n return this;\n },\n\n clone: function (fact, paths, match) {\n return new Context(fact || this.fact, paths || this.path, match || this.match);\n }\n }\n}).as(module);\n\n\n","var extd = require(\"./extended\"),\n Promise = extd.Promise,\n nextTick = require(\"./nextTick\"),\n isPromiseLike = extd.isPromiseLike;\n\nPromise.extend({\n instance: {\n\n looping: false,\n\n constructor: function (flow, matchUntilHalt) {\n this._super([]);\n this.flow = flow;\n this.agenda = flow.agenda;\n this.rootNode = flow.rootNode;\n this.matchUntilHalt = !!(matchUntilHalt);\n extd.bindAll(this, [\"onAlter\", \"callNext\"]);\n },\n\n halt: function () {\n this.__halted = true;\n if (!this.looping) {\n this.callback();\n }\n },\n\n onAlter: function () {\n this.flowAltered = true;\n if (!this.looping && this.matchUntilHalt && !this.__halted) {\n this.callNext();\n }\n },\n\n setup: function () {\n var flow = this.flow;\n this.rootNode.resetCounter();\n flow.on(\"assert\", this.onAlter);\n flow.on(\"modify\", this.onAlter);\n flow.on(\"retract\", this.onAlter);\n },\n\n tearDown: function () {\n var flow = this.flow;\n flow.removeListener(\"assert\", this.onAlter);\n flow.removeListener(\"modify\", this.onAlter);\n flow.removeListener(\"retract\", this.onAlter);\n },\n\n __handleAsyncNext: function (next) {\n var self = this, agenda = self.agenda;\n return next.then(function () {\n self.looping = false;\n if (!agenda.isEmpty()) {\n if (self.flowAltered) {\n self.rootNode.incrementCounter();\n self.flowAltered = false;\n }\n if (!self.__halted) {\n self.callNext();\n } else {\n self.callback();\n }\n } else if (!self.matchUntilHalt || self.__halted) {\n self.callback();\n }\n self = null;\n }, this.errback);\n },\n\n __handleSyncNext: function (next) {\n this.looping = false;\n if (!this.agenda.isEmpty()) {\n if (this.flowAltered) {\n this.rootNode.incrementCounter();\n this.flowAltered = false;\n }\n }\n if (next && !this.__halted) {\n nextTick(this.callNext);\n } else if (!this.matchUntilHalt || this.__halted) {\n this.callback();\n }\n return next;\n },\n\n callback: function () {\n this.tearDown();\n this._super(arguments);\n },\n\n\n callNext: function () {\n this.looping = true;\n var next = this.agenda.fireNext();\n return isPromiseLike(next) ? this.__handleAsyncNext(next) : this.__handleSyncNext(next);\n },\n\n execute: function () {\n this.setup();\n this.callNext();\n return this;\n }\n }\n}).as(module);","var arr = require(\"array-extended\"),\n unique = arr.unique,\n indexOf = arr.indexOf,\n map = arr.map,\n pSlice = Array.prototype.slice,\n pSplice = Array.prototype.splice;\n\nfunction plucked(prop) {\n var exec = prop.match(/(\\w+)\\(\\)$/);\n if (exec) {\n prop = exec[1];\n return function (item) {\n return item[prop]();\n };\n } else {\n return function (item) {\n return item[prop];\n };\n }\n}\n\nfunction plucker(prop) {\n prop = prop.split(\".\");\n if (prop.length === 1) {\n return plucked(prop[0]);\n } else {\n var pluckers = map(prop, function (prop) {\n return plucked(prop);\n });\n var l = pluckers.length;\n return function (item) {\n var i = -1, res = item;\n while (++i < l) {\n res = pluckers[i](res);\n }\n return res;\n };\n }\n}\n\nfunction intersection(a, b) {\n a = pSlice.call(a);\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceIntersection(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) === -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction inPlaceDifference(a, b) {\n var aOne, i = -1, l;\n l = a.length;\n while (++i < l) {\n aOne = a[i];\n if (indexOf(b, aOne) !== -1) {\n pSplice.call(a, i--, 1);\n l--;\n }\n }\n return a;\n}\n\nfunction diffArr(arr1, arr2) {\n var ret = [], i = -1, j, l2 = arr2.length, l1 = arr1.length, a, found;\n if (l2 > l1) {\n ret = arr1.slice();\n while (++i < l2) {\n a = arr2[i];\n j = -1;\n l1 = ret.length;\n while (++j < l1) {\n if (ret[j] === a) {\n ret.splice(j, 1);\n break;\n }\n }\n }\n } else {\n while (++i < l1) {\n a = arr1[i];\n j = -1;\n found = false;\n while (++j < l2) {\n if (arr2[j] === a) {\n found = true;\n break;\n }\n }\n if (!found) {\n ret.push(a);\n }\n }\n }\n return ret;\n}\n\nfunction diffHash(h1, h2) {\n var ret = {};\n for (var i in h1) {\n if (!hasOwnProperty.call(h2, i)) {\n ret[i] = h1[i];\n }\n }\n return ret;\n}\n\n\nfunction union(arr1, arr2) {\n return unique(arr1.concat(arr2));\n}\n\nmodule.exports = require(\"extended\")()\n .register(require(\"date-extended\"))\n .register(arr)\n .register(require(\"object-extended\"))\n .register(require(\"string-extended\"))\n .register(require(\"promise-extended\"))\n .register(require(\"function-extended\"))\n .register(require(\"is-extended\"))\n .register(\"intersection\", intersection)\n .register(\"inPlaceIntersection\", inPlaceIntersection)\n .register(\"inPlaceDifference\", inPlaceDifference)\n .register(\"diffArr\", diffArr)\n .register(\"diffHash\", diffHash)\n .register(\"unionArr\", union)\n .register(\"plucker\", plucker)\n .register(\"HashTable\", require(\"ht\"))\n .register(\"declare\", require(\"declare.js\"))\n .register(require(\"leafy\"))\n .register(\"LinkedList\", require(\"./linkedList\"));\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n bind = extd.bind,\n declare = extd.declare,\n nodes = require(\"./nodes\"),\n EventEmitter = require(\"events\").EventEmitter,\n wm = require(\"./workingMemory\"),\n WorkingMemory = wm.WorkingMemory,\n ExecutionStragegy = require(\"./executionStrategy\"),\n AgendaTree = require(\"./agenda\");\n\nmodule.exports = declare(EventEmitter, {\n\n instance: {\n\n name: null,\n\n executionStrategy: null,\n\n constructor: function (name, conflictResolutionStrategy) {\n this.env = null;\n this.name = name;\n this.__rules = {};\n this.conflictResolutionStrategy = conflictResolutionStrategy;\n this.workingMemory = new WorkingMemory();\n this.agenda = new AgendaTree(this, conflictResolutionStrategy);\n this.agenda.on(\"fire\", bind(this, \"emit\", \"fire\"));\n this.agenda.on(\"focused\", bind(this, \"emit\", \"focused\"));\n this.rootNode = new nodes.RootNode(this.workingMemory, this.agenda);\n extd.bindAll(this, \"halt\", \"assert\", \"retract\", \"modify\", \"focus\",\n \"emit\", \"getFacts\", \"getFact\");\n },\n\n getFacts: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret;\n },\n\n getFact: function (Type) {\n var ret;\n if (Type) {\n ret = this.workingMemory.getFactsByType(Type);\n } else {\n ret = this.workingMemory.getFacts();\n }\n return ret && ret[0];\n },\n\n focus: function (focused) {\n this.agenda.setFocus(focused);\n return this;\n },\n\n halt: function () {\n this.executionStrategy.halt();\n return this;\n },\n\n dispose: function () {\n this.workingMemory.dispose();\n this.agenda.dispose();\n this.rootNode.dispose();\n },\n\n assert: function (fact) {\n this.rootNode.assertFact(this.workingMemory.assertFact(fact));\n this.emit(\"assert\", fact);\n return fact;\n },\n\n // This method is called to remove an existing fact from working memory\n retract: function (fact) {\n //fact = this.workingMemory.getFact(fact);\n this.rootNode.retractFact(this.workingMemory.retractFact(fact));\n this.emit(\"retract\", fact);\n return fact;\n },\n\n // This method is called to alter an existing fact. It is essentially a\n // retract followed by an assert.\n modify: function (fact, cb) {\n //fact = this.workingMemory.getFact(fact);\n if (\"function\" === typeof cb) {\n cb.call(fact, fact);\n }\n this.rootNode.modifyFact(this.workingMemory.modifyFact(fact));\n this.emit(\"modify\", fact);\n return fact;\n },\n\n print: function () {\n this.rootNode.print();\n },\n\n containsRule: function (name) {\n return this.rootNode.containsRule(name);\n },\n\n rule: function (rule) {\n this.rootNode.assertRule(rule);\n },\n\n matchUntilHalt: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this, true)).execute().classic(cb).promise();\n },\n\n match: function (cb) {\n return (this.executionStrategy = new ExecutionStragegy(this)).execute().classic(cb).promise();\n }\n\n }\n});","\"use strict\";\nvar extd = require(\"./extended\"),\n instanceOf = extd.instanceOf,\n forEach = extd.forEach,\n declare = extd.declare,\n InitialFact = require(\"./pattern\").InitialFact,\n conflictStrategies = require(\"./conflict\"),\n conflictResolution = conflictStrategies.strategy([\"salience\", \"activationRecency\"]),\n rule = require(\"./rule\"),\n Flow = require(\"./flow\");\n\nvar flows = {};\nvar FlowContainer = declare({\n\n instance: {\n\n constructor: function (name, cb) {\n this.name = name;\n this.cb = cb;\n this.__rules = [];\n this.__defined = {};\n this.conflictResolutionStrategy = conflictResolution;\n if (cb) {\n cb.call(this, this);\n }\n if (!flows.hasOwnProperty(name)) {\n flows[name] = this;\n } else {\n throw new Error(\"Flow with \" + name + \" already defined\");\n }\n },\n\n conflictResolution: function (strategies) {\n this.conflictResolutionStrategy = conflictStrategies.strategy(strategies);\n return this;\n },\n\n getDefined: function (name) {\n var ret = this.__defined[name.toLowerCase()];\n if (!ret) {\n throw new Error(name + \" flow class is not defined\");\n }\n return ret;\n },\n\n addDefined: function (name, cls) {\n //normalize\n this.__defined[name.toLowerCase()] = cls;\n return cls;\n },\n\n rule: function () {\n this.__rules = this.__rules.concat(rule.createRule.apply(rule, arguments));\n return this;\n },\n\n getSession: function () {\n var flow = new Flow(this.name, this.conflictResolutionStrategy);\n forEach(this.__rules, function (rule) {\n flow.rule(rule);\n });\n flow.assert(new InitialFact());\n for (var i = 0, l = arguments.length; i < l; i++) {\n flow.assert(arguments[i]);\n }\n return flow;\n },\n\n containsRule: function (name) {\n return extd.some(this.__rules, function (rule) {\n return rule.name === name;\n });\n }\n\n },\n\n \"static\": {\n getFlow: function (name) {\n return flows[name];\n },\n\n hasFlow: function (name) {\n return extd.has(flows, name);\n },\n\n deleteFlow: function (name) {\n if (instanceOf(name, FlowContainer)) {\n name = name.name;\n }\n delete flows[name];\n return FlowContainer;\n },\n\n deleteFlows: function () {\n for (var name in flows) {\n if (name in flows) {\n delete flows[name];\n }\n }\n return FlowContainer;\n },\n\n create: function (name, cb) {\n return new FlowContainer(name, cb);\n }\n }\n\n}).as(module);","/**\n *\n * @projectName nools\n * @github https://github.com/C2FO/nools\n * @includeDoc [Examples] ../docs-md/examples.md\n * @includeDoc [Change Log] ../history.md\n * @header [../readme.md]\n */\n\n\"use strict\";\nvar extd = require(\"./extended\"),\n fs = require(\"fs\"),\n path = require(\"path\"),\n compile = require(\"./compile\"),\n FlowContainer = require(\"./flowContainer\");\n\nfunction isNoolsFile(file) {\n return (/\\.nools$/).test(file);\n}\n\nfunction parse(source) {\n var ret;\n if (isNoolsFile(source)) {\n ret = compile.parse(fs.readFileSync(source, \"utf8\"), source);\n } else {\n ret = compile.parse(source);\n }\n return ret;\n}\n\nexports.Flow = FlowContainer;\n\nexports.getFlow = FlowContainer.getFlow;\nexports.hasFlow = FlowContainer.hasFlow;\n\nexports.deleteFlow = function (name) {\n FlowContainer.deleteFlow(name);\n return this;\n};\n\nexports.deleteFlows = function () {\n FlowContainer.deleteFlows();\n return this;\n};\n\nexports.flow = FlowContainer.create;\n\nexports.compile = function (file, options, cb) {\n if (extd.isFunction(options)) {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n if (!options.name) {\n throw new Error(\"Name required when compiling nools source\");\n }\n return compile.compile(file, options, cb, FlowContainer);\n};\n\nexports.transpile = function (file, options) {\n options = options || {};\n if (extd.isString(file)) {\n options.name = options.name || (isNoolsFile(file) ? path.basename(file, path.extname(file)) : null);\n file = parse(file);\n }\n return compile.transpile(file, options);\n};\n\nexports.parse = parse;","var declare = require(\"declare.js\");\ndeclare({\n\n instance: {\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.length = null;\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n //node.data = node.prev = node.next = null;\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n var head = {next: this.head}, ret = [];\n while ((head = head.next)) {\n ret.push(head);\n }\n return ret;\n },\n\n removeByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n this.remove(head);\n break;\n }\n }\n },\n\n getByData: function (data) {\n var head = {next: this.head};\n while ((head = head.next)) {\n if (head.data === data) {\n return head;\n }\n }\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n }\n\n}).as(module);\n","/*global setImmediate, window, MessageChannel*/\nvar extd = require(\"./extended\");\nvar nextTick;\nif (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = extd.bind(window, setImmediate);\n } else {\n nextTick = setImmediate;\n }\n} else if (typeof process !== \"undefined\") {\n // node\n nextTick = process.nextTick;\n} else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n} else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n}\n\nmodule.exports = nextTick;","var Node = require(\"./node\"),\n intersection = require(\"../extended\").intersection;\n\nNode.extend({\n instance: {\n\n __propagatePaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](context.clone(null, continuingPaths, null));\n }\n }\n },\n\n __propagateNoPaths: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length;\n while (--i > -1) {\n entrySet[i].key[method](context);\n }\n },\n\n __propagate: function (method, context) {\n if (context.paths) {\n this.__propagatePaths(method, context);\n } else {\n this.__propagateNoPaths(method, context);\n }\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n },\n\n toString: function () {\n return \"AliasNode\" + this.__count;\n },\n\n assert: function (context) {\n return this.__propagate(\"assert\", context.set(this.alias, context.fact.object));\n },\n\n modify: function (context) {\n return this.__propagate(\"modify\", context.set(this.alias, context.fact.object));\n },\n\n retract: function (context) {\n return this.__propagate(\"retract\", context.set(this.alias, context.fact.object));\n },\n\n equal: function (other) {\n return other instanceof this._static && this.alias === other.alias;\n }\n }\n}).as(module);","\"use strict\";\nvar Node = require(\"./node\");\n\nNode.extend({\n instance: {\n constructor: function (constraint) {\n this._super([]);\n this.constraint = constraint;\n this.constraintAssert = this.constraint.assert;\n },\n\n toString: function () {\n return \"AlphaNode \" + this.__count;\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n keys = extd.hash.keys,\n Node = require(\"./node\"),\n LeftMemory = require(\"./misc/leftMemory\"), RightMemory = require(\"./misc/rightMemory\");\n\nNode.extend({\n\n instance: {\n\n nodeType: \"BetaNode\",\n\n constructor: function () {\n this._super([]);\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples = new LeftMemory();\n this.rightTuples = new RightMemory();\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n outNode[method](context);\n }\n },\n\n dispose: function () {\n this.leftMemory = {};\n this.rightMemory = {};\n this.leftTuples.clear();\n this.rightTuples.clear();\n },\n\n disposeLeft: function (fact) {\n this.leftMemory = {};\n this.leftTuples.clear();\n this.propagateDispose(fact);\n },\n\n disposeRight: function (fact) {\n this.rightMemory = {};\n this.rightTuples.clear();\n this.propagateDispose(fact);\n },\n\n hashCode: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n toString: function () {\n return this.nodeType + \" \" + this.__count;\n },\n\n retractLeft: function (context) {\n context = this.removeFromLeftMemory(context).data;\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n retractRight: function (context) {\n context = this.removeFromRightMemory(context).data;\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n i = -1,\n l = hashCodes.length;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), i = -1, l = rm.length;\n while (++i < l) {\n this.propagateFromLeft(context, rm[i].data);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context), i = -1, l = lm.length;\n while (++i < l) {\n this.propagateFromRight(context, lm[i].data);\n }\n },\n\n modifyLeft: function (context) {\n var previousContext = this.removeFromLeftMemory(context).data;\n this.__addToLeftMemory(context);\n var rm = this.rightTuples.getRightMemory(context), l = rm.length, i = -1, rightMatches;\n if (!l) {\n this.propagateRetractModifyFromLeft(previousContext);\n } else {\n rightMatches = previousContext.rightMatches;\n while (++i < l) {\n this.propagateAssertModifyFromLeft(context, rightMatches, rm[i].data);\n }\n\n }\n },\n\n modifyRight: function (context) {\n var previousContext = this.removeFromRightMemory(context).data;\n this.__addToRightMemory(context);\n var lm = this.leftTuples.getLeftMemory(context);\n if (!lm.length) {\n this.propagateRetractModifyFromRight(previousContext);\n } else {\n var leftMatches = previousContext.leftMatches, i = -1, l = lm.length;\n while (++i < l) {\n this.propagateAssertModifyFromRight(context, leftMatches, lm[i].data);\n }\n }\n },\n\n propagateFromLeft: function (context, rc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rc, context, context.clone(null, null, context.match.merge(rc.match))));\n },\n\n propagateFromRight: function (context, lc) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lc, lc.clone(null, null, lc.match.merge(context.match))));\n },\n\n propagateRetractModifyFromLeft: function (context) {\n var rightMatches = context.rightMatches,\n hashCodes = keys(rightMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", rightMatches[hashCodes[i]].clone());\n }\n },\n\n propagateRetractModifyFromRight: function (context) {\n var leftMatches = context.leftMatches,\n hashCodes = keys(leftMatches),\n l = hashCodes.length,\n i = -1;\n while (++i < l) {\n this.__propagate(\"retract\", leftMatches[hashCodes[i]].clone());\n }\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, context.match.merge(rm.match))));\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode;\n if (factId in leftMatches) {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, lm.match.merge(context.match))));\n } else {\n this.propagateFromRight(context, lm);\n }\n },\n\n removeFromRightMemory: function (context) {\n var hashCode = context.hashCode, ret;\n context = this.rightMemory[hashCode] || null;\n var tuples = this.rightTuples;\n if (context) {\n var leftMemory = this.leftMemory;\n ret = context.data;\n var leftMatches = ret.leftMatches;\n tuples.remove(context);\n var hashCodes = keys(leftMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete leftMemory[hashCodes[i]].data.rightMatches[hashCode];\n }\n delete this.rightMemory[hashCode];\n }\n return context;\n },\n\n removeFromLeftMemory: function (context) {\n var hashCode = context.hashCode;\n context = this.leftMemory[hashCode] || null;\n if (context) {\n var rightMemory = this.rightMemory;\n var rightMatches = context.data.rightMatches;\n this.leftTuples.remove(context);\n var hashCodes = keys(rightMatches), i = -1, l = hashCodes.length;\n while (++i < l) {\n delete rightMemory[hashCodes[i]].data.leftMatches[hashCode];\n }\n delete this.leftMemory[hashCode];\n }\n return context;\n },\n\n getRightMemoryMatches: function (context) {\n var lm = this.leftMemory[context.hashCode], ret = {};\n if (lm) {\n ret = lm.rightMatches;\n }\n return ret;\n },\n\n __addToMemoryMatches: function (rightContext, leftContext, createdContext) {\n var rightFactId = rightContext.hashCode,\n rm = this.rightMemory[rightFactId],\n lm, leftFactId = leftContext.hashCode;\n if (rm) {\n rm = rm.data;\n if (leftFactId in rm.leftMatches) {\n throw new Error(\"Duplicate left fact entry\");\n }\n rm.leftMatches[leftFactId] = createdContext;\n }\n lm = this.leftMemory[leftFactId];\n if (lm) {\n lm = lm.data;\n if (rightFactId in lm.rightMatches) {\n throw new Error(\"Duplicate right fact entry\");\n }\n lm.rightMatches[rightFactId] = createdContext;\n }\n return createdContext;\n },\n\n __addToRightMemory: function (context) {\n var hashCode = context.hashCode, rm = this.rightMemory;\n if (hashCode in rm) {\n return false;\n }\n rm[hashCode] = this.rightTuples.push(context);\n context.leftMatches = {};\n return true;\n },\n\n\n __addToLeftMemory: function (context) {\n var hashCode = context.hashCode, lm = this.leftMemory;\n if (hashCode in lm) {\n return false;\n }\n lm[hashCode] = this.leftTuples.push(context);\n context.rightMatches = {};\n return true;\n }\n }\n\n}).as(module);","var AlphaNode = require(\"./alphaNode\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this.memory = {};\n this._super(arguments);\n this.constraintAssert = this.constraint.assert;\n },\n\n assert: function (context) {\n if ((this.memory[context.pathsHash] = this.constraintAssert(context.factHash))) {\n this.__propagate(\"assert\", context);\n }\n },\n\n modify: function (context) {\n var memory = this.memory,\n hashCode = context.pathsHash,\n wasMatch = memory[hashCode];\n if ((memory[hashCode] = this.constraintAssert(context.factHash))) {\n this.__propagate(wasMatch ? \"modify\" : \"assert\", context);\n } else if (wasMatch) {\n this.__propagate(\"retract\", context);\n }\n },\n\n retract: function (context) {\n var hashCode = context.pathsHash,\n memory = this.memory;\n if (memory[hashCode]) {\n this.__propagate(\"retract\", context);\n }\n delete memory[hashCode];\n },\n\n toString: function () {\n return \"EqualityNode\" + this.__count;\n }\n }\n}).as(module);","var FromNotNode = require(\"./fromNotNode\"),\n extd = require(\"../extended\"),\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isArray = extd.isArray;\n\nFromNotNode.extend({\n instance: {\n\n nodeType: \"ExistsFromNode\",\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"modify\", context.clone());\n } else {\n this.__propagate(\"assert\", context.clone());\n }\n } else if (leftContextBlocked) {\n this.__propagate(\"retract\", context.clone());\n }\n\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n return;\n }\n }\n } else if (isDefined(o) && (this.__isMatch(context, o, true))) {\n context.blocked = true;\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n }\n\n }\n}).as(module);","var NotNode = require(\"./notNode\"),\n LinkedList = require(\"../linkedList\");\n\n\nNotNode.extend({\n instance: {\n\n nodeType: \"ExistsNode\",\n\n blockedContext: function (leftContext, rightContext) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx;\n if (!this.removeFromLeftMemory(context)) {\n if ((ctx = this.removeFromLeftBlockedMemory(context))) {\n this.__propagate(\"retract\", this.__cloneContext(ctx.data));\n } else {\n throw new Error();\n }\n }\n },\n \n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples,\n l = rightTuples.length,\n isBlocked = false,\n node, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //propogate as a modify or assert\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n if (context) {\n node = {next: blocker.next};\n }\n } else {\n node = {next: rightTuples.head};\n }\n if (context && l) {\n node = {next: rightTuples.head};\n //we were propagated before\n while ((node = node.next)) {\n if (thisConstraint.isMatch(context, rc = node.data)) {\n //we cant be proagated so retract previous\n\n //we were asserted before so retract\n this.__propagate(!isBlocked ? \"assert\" : \"modify\", this.__cloneContext(leftContext));\n\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (isBlocked) {\n //we were blocked so retract\n this.__propagate(\"retract\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples,\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n if (leftTuplesLength || blocking.length) {\n if (blocking.length) {\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n }\n }\n }\n }\n\n if (leftTuplesLength) {\n //check currently left tuples in memory\n node = {next: leftTuples.head};\n while ((node = node.next)) {\n leftContext = node.data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n\n\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n isEmpty = extd.isEmpty,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nvar DEFAULT_MATCH = {\n isMatch: function () {\n return false;\n }\n};\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNode\",\n\n constructor: function (pattern, wm) {\n this._super(arguments);\n this.workingMemory = wm;\n this.fromMemory = {};\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n },\n\n __createMatches: function (context) {\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n this.__checkMatch(context, o[i], true);\n }\n } else if (isDefined(o)) {\n this.__checkMatch(context, o, true);\n }\n },\n\n __checkMatch: function (context, o, propogate) {\n var newContext;\n if ((newContext = this.__createMatch(context, o)).isMatch() && propogate) {\n this.__propagate(\"assert\", newContext.clone());\n }\n return newContext;\n },\n\n __createMatch: function (lc, o) {\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o, true),\n createdContext,\n rc = new Context(createdFact, null, null)\n .set(this.alias, o),\n createdFactId = createdFact.id;\n var fh = rc.factHash, lcFh = lc.factHash;\n for (var key in lcFh) {\n fh[key] = lcFh[key];\n }\n var eqConstraints = this.__equalityConstraints, vars = this.__variables, i = -1, l = eqConstraints.length;\n while (++i < l) {\n if (!eqConstraints[i](fh, fh)) {\n createdContext = DEFAULT_MATCH;\n break;\n }\n }\n var fm = this.fromMemory[createdFactId];\n if (!fm) {\n fm = this.fromMemory[createdFactId] = {};\n }\n if (!createdContext) {\n var prop;\n i = -1;\n l = vars.length;\n while (++i < l) {\n prop = vars[i];\n fh[prop] = o[prop];\n }\n lc.fromMatches[createdFact.id] = createdContext = rc.clone(createdFact, null, lc.match.merge(rc.match));\n }\n fm[lc.hashCode] = [lc, createdContext];\n return createdContext;\n }\n return DEFAULT_MATCH;\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n removeFromFromMemory: function (context) {\n var factId = context.fact.id;\n var fm = this.fromMemory[factId];\n if (fm) {\n var entry;\n for (var i in fm) {\n entry = fm[i];\n if (entry[1] === context) {\n delete fm[i];\n if (isEmpty(fm)) {\n delete this.fromMemory[factId];\n }\n break;\n }\n }\n }\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n var fromMatches = ctx.fromMatches;\n for (var i in fromMatches) {\n this.removeFromFromMemory(fromMatches[i]);\n this.__propagate(\"retract\", fromMatches[i].clone());\n }\n }\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context), newContext, i, l, factId, fact;\n if (ctx) {\n this.__addToLeftMemory(context);\n\n var leftContext = ctx.data,\n fromMatches = (context.fromMatches = {}),\n rightMatches = leftContext.fromMatches,\n o = this.from(context.factHash);\n\n if (isArray(o)) {\n for (i = 0, l = o.length; i < l; i++) {\n newContext = this.__checkMatch(context, o[i], false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n } else if (isDefined(o)) {\n newContext = this.__checkMatch(context, o, false);\n if (newContext.isMatch()) {\n factId = newContext.fact.id;\n if (factId in rightMatches) {\n this.__propagate(\"modify\", newContext.clone());\n } else {\n this.__propagate(\"assert\", newContext.clone());\n }\n }\n }\n for (i in rightMatches) {\n if (!(i in fromMatches)) {\n this.removeFromFromMemory(rightMatches[i]);\n this.__propagate(\"retract\", rightMatches[i].clone());\n }\n }\n } else {\n this.assertLeft(context);\n }\n fact = context.fact;\n factId = fact.id;\n var fm = this.fromMemory[factId];\n this.fromMemory[factId] = {};\n if (fm) {\n var lc, entry, cc, createdIsMatch, factObject = fact.object;\n for (i in fm) {\n entry = fm[i];\n lc = entry[0];\n cc = entry[1];\n createdIsMatch = cc.isMatch();\n if (lc.hashCode !== context.hashCode) {\n newContext = this.__createMatch(lc, factObject, false);\n if (createdIsMatch) {\n this.__propagate(\"retract\", cc.clone());\n }\n if (newContext.isMatch()) {\n this.__propagate(createdIsMatch ? \"modify\" : \"assert\", newContext.clone());\n }\n\n }\n }\n }\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n context.fromMatches = {};\n this.__createMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","var JoinNode = require(\"./joinNode\"),\n extd = require(\"../extended\"),\n constraint = require(\"../constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n HashConstraint = constraint.HashConstraint,\n ReferenceConstraint = constraint.ReferenceConstraint,\n Context = require(\"../context\"),\n isDefined = extd.isDefined,\n forEach = extd.forEach,\n isArray = extd.isArray;\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"FromNotNode\",\n\n constructor: function (pattern, workingMemory) {\n this._super(arguments);\n this.workingMemory = workingMemory;\n this.pattern = pattern;\n this.type = pattern.get(\"constraints\")[0].assert;\n this.alias = pattern.get(\"alias\");\n this.from = pattern.from.assert;\n this.fromMemory = {};\n var eqConstraints = this.__equalityConstraints = [];\n var vars = [];\n forEach(this.constraints = this.pattern.get(\"constraints\").slice(1), function (c) {\n if (c instanceof EqualityConstraint || c instanceof ReferenceConstraint) {\n eqConstraints.push(c.assert);\n } else if (c instanceof HashConstraint) {\n vars = vars.concat(c.get(\"variables\"));\n }\n });\n this.__variables = vars;\n\n },\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n if (!ctx.blocked) {\n this.__propagate(\"retract\", ctx.clone());\n }\n }\n },\n\n __modify: function (context, leftContext) {\n var leftContextBlocked = leftContext.blocked;\n var fh = context.factHash, o = this.from(fh);\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n break;\n }\n }\n } else if (isDefined(o)) {\n context.blocked = this.__isMatch(context, o, true);\n }\n var newContextBlocked = context.blocked;\n if (!newContextBlocked) {\n if (leftContextBlocked) {\n this.__propagate(\"assert\", context.clone());\n } else {\n this.__propagate(\"modify\", context.clone());\n }\n } else if (!leftContextBlocked) {\n this.__propagate(\"retract\", leftContext.clone());\n }\n\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n this.__addToLeftMemory(context);\n this.__modify(context, ctx.data);\n } else {\n throw new Error();\n }\n var fm = this.fromMemory[context.fact.id];\n this.fromMemory[context.fact.id] = {};\n if (fm) {\n for (var i in fm) {\n // update any contexts associated with this fact\n if (i !== context.hashCode) {\n var lc = fm[i];\n ctx = this.removeFromLeftMemory(lc);\n if (ctx) {\n lc = lc.clone();\n lc.blocked = false;\n this.__addToLeftMemory(lc);\n this.__modify(lc, ctx.data);\n }\n }\n }\n }\n },\n\n __findMatches: function (context) {\n var fh = context.factHash, o = this.from(fh), isMatch = false;\n if (isArray(o)) {\n for (var i = 0, l = o.length; i < l; i++) {\n if (this.__isMatch(context, o[i], true)) {\n context.blocked = true;\n return;\n }\n }\n this.__propagate(\"assert\", context.clone());\n } else if (isDefined(o) && !(context.blocked = this.__isMatch(context, o, true))) {\n this.__propagate(\"assert\", context.clone());\n }\n return isMatch;\n },\n\n __isMatch: function (oc, o, add) {\n var ret = false;\n if (this.type(o)) {\n var createdFact = this.workingMemory.getFactHandle(o);\n var context = new Context(createdFact, null)\n .mergeMatch(oc.match)\n .set(this.alias, o);\n if (add) {\n var fm = this.fromMemory[createdFact.id];\n if (!fm) {\n fm = this.fromMemory[createdFact.id] = {};\n }\n fm[oc.hashCode] = oc;\n }\n var fh = context.factHash;\n var eqConstraints = this.__equalityConstraints;\n for (var i = 0, l = eqConstraints.length; i < l; i++) {\n if (eqConstraints[i](fh, fh)) {\n ret = true;\n } else {\n ret = false;\n break;\n }\n }\n }\n return ret;\n },\n\n assertLeft: function (context) {\n this.__addToLeftMemory(context);\n this.__findMatches(context);\n },\n\n assertRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n },\n\n retractRight: function () {\n throw new Error(\"Shouldnt have gotten here\");\n }\n\n }\n}).as(module);","\"use strict\";\nvar extd = require(\"../extended\"),\n forEach = extd.forEach,\n some = extd.some,\n declare = extd.declare,\n pattern = require(\"../pattern.js\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n FromNotPattern = pattern.FromNotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n NotPattern = pattern.NotPattern,\n CompositePattern = pattern.CompositePattern,\n InitialFactPattern = pattern.InitialFactPattern,\n constraints = require(\"../constraint\"),\n HashConstraint = constraints.HashConstraint,\n ReferenceConstraint = constraints.ReferenceConstraint,\n AliasNode = require(\"./aliasNode\"),\n EqualityNode = require(\"./equalityNode\"),\n JoinNode = require(\"./joinNode\"),\n BetaNode = require(\"./betaNode\"),\n NotNode = require(\"./notNode\"),\n FromNode = require(\"./fromNode\"),\n FromNotNode = require(\"./fromNotNode\"),\n ExistsNode = require(\"./existsNode\"),\n ExistsFromNode = require(\"./existsFromNode\"),\n LeftAdapterNode = require(\"./leftAdapterNode\"),\n RightAdapterNode = require(\"./rightAdapterNode\"),\n TypeNode = require(\"./typeNode\"),\n TerminalNode = require(\"./terminalNode\"),\n PropertyNode = require(\"./propertyNode\");\n\nfunction hasRefernceConstraints(pattern) {\n return some(pattern.constraints || [], function (c) {\n return c instanceof ReferenceConstraint;\n });\n}\n\ndeclare({\n instance: {\n constructor: function (wm, agendaTree) {\n this.terminalNodes = [];\n this.joinNodes = [];\n this.nodes = [];\n this.constraints = [];\n this.typeNodes = [];\n this.__ruleCount = 0;\n this.bucket = {\n counter: 0,\n recency: 0\n };\n this.agendaTree = agendaTree;\n this.workingMemory = wm;\n },\n\n assertRule: function (rule) {\n var terminalNode = new TerminalNode(this.bucket, this.__ruleCount++, rule, this.agendaTree);\n this.__addToNetwork(rule, rule.pattern, terminalNode);\n this.__mergeJoinNodes();\n this.terminalNodes.push(terminalNode);\n },\n\n resetCounter: function () {\n this.bucket.counter = 0;\n },\n\n incrementCounter: function () {\n this.bucket.counter++;\n },\n\n assertFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].assert(fact);\n }\n },\n\n retractFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].retract(fact);\n }\n },\n\n modifyFact: function (fact) {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].modify(fact);\n }\n },\n\n\n containsRule: function (name) {\n return some(this.terminalNodes, function (n) {\n return n.rule.name === name;\n });\n },\n\n dispose: function () {\n var typeNodes = this.typeNodes, i = typeNodes.length - 1;\n for (; i >= 0; i--) {\n typeNodes[i].dispose();\n }\n },\n\n __mergeJoinNodes: function () {\n var joinNodes = this.joinNodes;\n for (var i = 0; i < joinNodes.length; i++) {\n var j1 = joinNodes[i], j2 = joinNodes[i + 1];\n if (j1 && j2 && (j1.constraint && j2.constraint && j1.constraint.equal(j2.constraint))) {\n j1.merge(j2);\n joinNodes.splice(i + 1, 1);\n }\n }\n },\n\n __checkEqual: function (node) {\n var constraints = this.constraints, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (node.equal(n)) {\n return n;\n }\n }\n constraints.push(node);\n return node;\n },\n\n __createTypeNode: function (rule, pattern) {\n var ret = new TypeNode(pattern.get(\"constraints\")[0]);\n var constraints = this.typeNodes, i = constraints.length - 1;\n for (; i >= 0; i--) {\n var n = constraints[i];\n if (ret.equal(n)) {\n return n;\n }\n }\n constraints.push(ret);\n return ret;\n },\n\n __createEqualityNode: function (rule, constraint) {\n return this.__checkEqual(new EqualityNode(constraint)).addRule(rule);\n },\n\n __createPropertyNode: function (rule, constraint) {\n return this.__checkEqual(new PropertyNode(constraint)).addRule(rule);\n },\n\n __createAliasNode: function (rule, pattern) {\n return this.__checkEqual(new AliasNode(pattern)).addRule(rule);\n },\n\n __createAdapterNode: function (rule, side) {\n return (side === \"left\" ? new LeftAdapterNode() : new RightAdapterNode()).addRule(rule);\n },\n\n __createJoinNode: function (rule, pattern, outNode, side) {\n var joinNode;\n if (pattern.rightPattern instanceof NotPattern) {\n joinNode = new NotNode();\n } else if (pattern.rightPattern instanceof FromExistsPattern) {\n joinNode = new ExistsFromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof ExistsPattern) {\n joinNode = new ExistsNode();\n } else if (pattern.rightPattern instanceof FromNotPattern) {\n joinNode = new FromNotNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern.rightPattern instanceof FromPattern) {\n joinNode = new FromNode(pattern.rightPattern, this.workingMemory);\n } else if (pattern instanceof CompositePattern && !hasRefernceConstraints(pattern.leftPattern) && !hasRefernceConstraints(pattern.rightPattern)) {\n joinNode = new BetaNode();\n this.joinNodes.push(joinNode);\n } else {\n joinNode = new JoinNode();\n this.joinNodes.push(joinNode);\n }\n joinNode[\"__rule__\"] = rule;\n var parentNode = joinNode;\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n parentNode.addOutNode(outNode, pattern);\n return joinNode.addRule(rule);\n },\n\n __addToNetwork: function (rule, pattern, outNode, side) {\n if (pattern instanceof ObjectPattern) {\n if (!(pattern instanceof InitialFactPattern) && (!side || side === \"left\")) {\n this.__createBetaNode(rule, new CompositePattern(new InitialFactPattern(), pattern), outNode, side);\n } else {\n this.__createAlphaNode(rule, pattern, outNode, side);\n }\n } else if (pattern instanceof CompositePattern) {\n this.__createBetaNode(rule, pattern, outNode, side);\n }\n },\n\n __createBetaNode: function (rule, pattern, outNode, side) {\n var joinNode = this.__createJoinNode(rule, pattern, outNode, side);\n this.__addToNetwork(rule, pattern.rightPattern, joinNode, \"right\");\n this.__addToNetwork(rule, pattern.leftPattern, joinNode, \"left\");\n outNode.addParentNode(joinNode);\n return joinNode;\n },\n\n\n __createAlphaNode: function (rule, pattern, outNode, side) {\n var typeNode, parentNode;\n if (!(pattern instanceof FromPattern)) {\n\n var constraints = pattern.get(\"constraints\");\n typeNode = this.__createTypeNode(rule, pattern);\n var aliasNode = this.__createAliasNode(rule, pattern);\n typeNode.addOutNode(aliasNode, pattern);\n aliasNode.addParentNode(typeNode);\n parentNode = aliasNode;\n var i = constraints.length - 1;\n for (; i > 0; i--) {\n var constraint = constraints[i], node;\n if (constraint instanceof HashConstraint) {\n node = this.__createPropertyNode(rule, constraint);\n } else if (constraint instanceof ReferenceConstraint) {\n outNode.constraint.addConstraint(constraint);\n continue;\n } else {\n node = this.__createEqualityNode(rule, constraint);\n }\n parentNode.addOutNode(node, pattern);\n node.addParentNode(parentNode);\n parentNode = node;\n }\n\n if (outNode instanceof BetaNode) {\n var adapterNode = this.__createAdapterNode(rule, side);\n adapterNode.addParentNode(parentNode);\n parentNode.addOutNode(adapterNode, pattern);\n parentNode = adapterNode;\n }\n outNode.addParentNode(parentNode);\n parentNode.addOutNode(outNode, pattern);\n return typeNode;\n }\n },\n\n print: function () {\n forEach(this.terminalNodes, function (t) {\n t.print(\" \");\n });\n }\n }\n}).as(exports, \"RootNode\");\n\n\n\n\n\n","var BetaNode = require(\"./betaNode\"),\n JoinReferenceNode = require(\"./joinReferenceNode\");\n\nBetaNode.extend({\n\n instance: {\n constructor: function () {\n this._super(arguments);\n this.constraint = new JoinReferenceNode(this.leftTuples, this.rightTuples);\n },\n\n nodeType: \"JoinNode\",\n\n propagateFromLeft: function (context, rm) {\n var mr;\n if ((mr = this.constraint.match(context, rm)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateFromRight: function (context, lm) {\n var mr;\n if ((mr = this.constraint.match(lm, context)).isMatch) {\n this.__propagate(\"assert\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n return this;\n },\n\n propagateAssertModifyFromLeft: function (context, rightMatches, rm) {\n var factId = rm.hashCode, mr;\n if (factId in rightMatches) {\n mr = this.constraint.match(context, rm);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", rightMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(rm, context, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromLeft(context, rm);\n }\n },\n\n propagateAssertModifyFromRight: function (context, leftMatches, lm) {\n var factId = lm.hashCode, mr;\n if (factId in leftMatches) {\n mr = this.constraint.match(lm, context);\n var mrIsMatch = mr.isMatch;\n if (!mrIsMatch) {\n this.__propagate(\"retract\", leftMatches[factId].clone());\n } else {\n this.__propagate(\"modify\", this.__addToMemoryMatches(context, lm, context.clone(null, null, mr)));\n }\n } else {\n this.propagateFromRight(context, lm);\n }\n }\n }\n\n}).as(module);","var Node = require(\"./node\"),\n constraints = require(\"../constraint\"),\n ReferenceEqualityConstraint = constraints.ReferenceEqualityConstraint;\n\nvar DEFUALT_CONSTRAINT = {\n isDefault: true,\n assert: function () {\n return true;\n },\n\n equal: function () {\n return false;\n }\n};\n\nvar inversions = {\n \"gt\": \"lte\",\n \"gte\": \"lte\",\n \"lt\": \"gte\",\n \"lte\": \"gte\",\n \"eq\": \"eq\",\n \"neq\": \"neq\"\n};\n\nfunction normalizeRightIndexConstraint(rightIndex, indexes, op) {\n if (rightIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nfunction normalizeLeftIndexConstraint(leftIndex, indexes, op) {\n if (leftIndex === indexes[1]) {\n op = inversions[op];\n }\n return op;\n}\n\nNode.extend({\n\n instance: {\n\n constraint: DEFUALT_CONSTRAINT,\n\n constructor: function (leftMemory, rightMemory) {\n this._super(arguments);\n this.constraint = DEFUALT_CONSTRAINT;\n this.constraintAssert = DEFUALT_CONSTRAINT.assert;\n this.rightIndexes = [];\n this.leftIndexes = [];\n this.constraintLength = 0;\n this.leftMemory = leftMemory;\n this.rightMemory = rightMemory;\n },\n\n addConstraint: function (constraint) {\n if (constraint instanceof ReferenceEqualityConstraint) {\n var identifiers = constraint.getIndexableProperties();\n var alias = constraint.get(\"alias\");\n if (identifiers.length === 2 && alias) {\n var leftIndex, rightIndex, i = -1, indexes = [];\n while (++i < 2) {\n var index = identifiers[i];\n if (index.match(new RegExp(\"^\" + alias + \"(\\\\.?)\")) === null) {\n indexes.push(index);\n leftIndex = index;\n } else {\n indexes.push(index);\n rightIndex = index;\n }\n }\n if (leftIndex && rightIndex) {\n var leftOp = normalizeLeftIndexConstraint(leftIndex, indexes, constraint.op),\n rightOp = normalizeRightIndexConstraint(rightIndex, indexes, constraint.op);\n this.rightMemory.addIndex(rightIndex, leftIndex, rightOp);\n this.leftMemory.addIndex(leftIndex, rightIndex, leftOp);\n }\n }\n }\n if (this.constraint.isDefault) {\n this.constraint = constraint;\n this.isDefault = false;\n } else {\n this.constraint = this.constraint.merge(constraint);\n }\n this.constraintAssert = this.constraint.assert;\n\n },\n\n equal: function (constraint) {\n return this.constraint.equal(constraint.constraint);\n },\n\n isMatch: function (lc, rc) {\n return this.constraintAssert(lc.factHash, rc.factHash);\n },\n\n match: function (lc, rc) {\n var ret = {isMatch: false};\n if (this.constraintAssert(lc.factHash, rc.factHash)) {\n ret = lc.match.merge(rc.match);\n }\n return ret;\n }\n\n }\n\n}).as(module);","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n propagateAssert: function (context) {\n this.__propagate(\"assertLeft\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractLeft\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyLeft\", context);\n },\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n toString: function () {\n return \"LeftAdapterNode \" + this.__count;\n }\n }\n\n}).as(module);","exports.getMemory = (function () {\n\n var pPush = Array.prototype.push, NPL = 0, EMPTY_ARRAY = [], NOT_POSSIBLES_HASH = {}, POSSIBLES_HASH = {}, PL = 0;\n\n function mergePossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (PL < l) {\n while (PL && ++i < l) {\n if (POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n PL--;\n }\n }\n } else {\n pPush.apply(ret, a);\n }\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n\n function mergeNotPossibleTuples(ret, a, l) {\n var val, j = 0, i = -1;\n if (NPL < l) {\n while (++i < l) {\n if (!NPL) {\n ret[j++] = a[i];\n } else if (!NOT_POSSIBLES_HASH[(val = a[i]).hashCode]) {\n ret[j++] = val;\n } else {\n NPL--;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n }\n\n function mergeBothTuples(ret, a, l) {\n if (PL === l) {\n mergeNotPossibles(ret, a, l);\n } else if (NPL < l) {\n var val, j = 0, i = -1, hashCode;\n while (++i < l) {\n if (!NOT_POSSIBLES_HASH[(hashCode = (val = a[i]).hashCode)] && POSSIBLES_HASH[hashCode]) {\n ret[j++] = val;\n }\n }\n }\n NPL = 0;\n NOT_POSSIBLES_HASH = {};\n PL = 0;\n POSSIBLES_HASH = {};\n }\n\n function mergePossiblesAndNotPossibles(a, l) {\n var ret = EMPTY_ARRAY;\n if (l) {\n if (NPL || PL) {\n ret = [];\n if (!NPL) {\n mergePossibleTuples(ret, a, l);\n } else if (!PL) {\n mergeNotPossibleTuples(ret, a, l);\n } else {\n mergeBothTuples(ret, a, l);\n }\n } else {\n ret = a;\n }\n }\n return ret;\n }\n\n function getRangeTuples(op, currEntry, val) {\n var ret;\n if (op === \"gt\") {\n ret = currEntry.findGT(val);\n } else if (op === \"gte\") {\n ret = currEntry.findGTE(val);\n } else if (op === \"lt\") {\n ret = currEntry.findLT(val);\n } else if (op === \"lte\") {\n ret = currEntry.findLTE(val);\n }\n return ret;\n }\n\n function mergeNotPossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!NOT_POSSIBLES_HASH[hashCode]) {\n NOT_POSSIBLES_HASH[hashCode] = true;\n NPL++;\n }\n }\n }\n }\n\n function mergePossibles(tuples, tl) {\n if (tl) {\n var j = -1, hashCode;\n while (++j < tl) {\n hashCode = tuples[j].hashCode;\n if (!POSSIBLES_HASH[hashCode]) {\n POSSIBLES_HASH[hashCode] = true;\n PL++;\n }\n }\n }\n }\n\n return function _getMemory(entry, factHash, indexes) {\n var i = -1, l = indexes.length,\n ret = entry.tuples,\n rl = ret.length,\n intersected = false,\n tables = entry.tables,\n index, val, op, nextEntry, currEntry, tuples, tl;\n while (++i < l && rl) {\n index = indexes[i];\n val = index[3](factHash);\n op = index[4];\n currEntry = tables[index[0]];\n if (op === \"eq\" || op === \"seq\") {\n if ((nextEntry = currEntry.get(val))) {\n rl = (ret = (entry = nextEntry).tuples).length;\n tables = nextEntry.tables;\n } else {\n rl = (ret = EMPTY_ARRAY).length;\n }\n } else if (op === \"neq\" || op === \"sneq\") {\n if ((nextEntry = currEntry.get(val))) {\n tl = (tuples = nextEntry.tuples).length;\n mergeNotPossibles(tuples, tl);\n }\n } else if (!intersected) {\n rl = (ret = getRangeTuples(op, currEntry, val)).length;\n intersected = true;\n } else if ((tl = (tuples = getRangeTuples(op, currEntry, val)).length)) {\n mergePossibles(tuples, tl);\n } else {\n ret = tuples;\n rl = tl;\n }\n }\n return mergePossiblesAndNotPossibles(ret, rl);\n };\n}());","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getLeftMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n plucker = extd.plucker,\n declare = extd.declare,\n getMemory = require(\"./helpers\").getMemory,\n Table = require(\"./table\"),\n TupleEntry = require(\"./tupleEntry\");\n\n\nvar id = 0;\ndeclare({\n\n instance: {\n length: 0,\n\n constructor: function () {\n this.head = null;\n this.tail = null;\n this.indexes = [];\n this.tables = new TupleEntry(null, new Table(), false);\n },\n\n push: function (data) {\n var tail = this.tail, head = this.head, node = {data: data, tuples: [], hashCode: id++, prev: tail, next: null};\n if (tail) {\n this.tail.next = node;\n }\n this.tail = node;\n if (!head) {\n this.head = node;\n }\n this.length++;\n this.__index(node);\n this.tables.addNode(node);\n return node;\n },\n\n remove: function (node) {\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.tables.removeNode(node);\n this.__removeFromIndex(node);\n this.length--;\n },\n\n forEach: function (cb) {\n var head = {next: this.head};\n while ((head = head.next)) {\n cb(head.data);\n }\n },\n\n toArray: function () {\n return this.tables.tuples.slice();\n },\n\n clear: function () {\n this.head = this.tail = null;\n this.length = 0;\n this.clearIndexes();\n },\n\n clearIndexes: function () {\n this.tables = {};\n this.indexes.length = 0;\n },\n\n __index: function (node) {\n var data = node.data,\n factHash = data.factHash,\n indexes = this.indexes,\n entry = this.tables,\n i = -1, l = indexes.length,\n tuples, index, val, path, tables, currEntry, prevLookup;\n while (++i < l) {\n index = indexes[i];\n val = index[2](factHash);\n path = index[0];\n tables = entry.tables;\n if (!(tuples = (currEntry = tables[path] || (tables[path] = new Table())).get(val))) {\n tuples = new TupleEntry(val, currEntry, true);\n currEntry.set(val, tuples);\n }\n if (currEntry !== prevLookup) {\n node.tuples.push(tuples.addNode(node));\n }\n prevLookup = currEntry;\n if (index[4] === \"eq\") {\n entry = tuples;\n }\n }\n },\n\n __removeFromIndex: function (node) {\n var tuples = node.tuples, i = tuples.length;\n while (--i >= 0) {\n tuples[i].removeNode(node);\n }\n node.tuples.length = 0;\n },\n\n getMemory: function (tuple) {\n var ret;\n if (!this.length) {\n ret = [];\n } else {\n ret = getMemory(this.tables, tuple.factHash, this.indexes);\n }\n return ret;\n },\n\n __createIndexTree: function () {\n var table = this.tables.tables = {};\n var indexes = this.indexes;\n table[indexes[0][0]] = new Table();\n },\n\n\n addIndex: function (primary, lookup, op) {\n this.indexes.push([primary, lookup, plucker(primary), plucker(lookup), op || \"eq\"]);\n this.indexes.sort(function (a, b) {\n var aOp = a[4], bOp = b[4];\n return aOp === bOp ? 0 : aOp > bOp ? 1 : aOp === bOp ? 0 : -1;\n });\n this.__createIndexTree();\n\n }\n\n }\n\n}).as(module);","var Memory = require(\"./memory\");\n\nMemory.extend({\n\n instance: {\n\n getRightMemory: function (tuple) {\n return this.getMemory(tuple);\n }\n }\n\n}).as(module);","var extd = require(\"../../extended\"),\n pPush = Array.prototype.push,\n HashTable = extd.HashTable,\n AVLTree = extd.AVLTree;\n\nfunction compare(a, b) {\n /*jshint eqeqeq: false*/\n a = a.key;\n b = b.key;\n var ret;\n if (a == b) {\n ret = 0;\n } else if (a > b) {\n ret = 1;\n } else if (a < b) {\n ret = -1;\n } else {\n ret = 1;\n }\n return ret;\n}\n\nfunction compareGT(v1, v2) {\n return compare(v1, v2) === 1;\n}\nfunction compareGTE(v1, v2) {\n return compare(v1, v2) !== -1;\n}\n\nfunction compareLT(v1, v2) {\n return compare(v1, v2) === -1;\n}\nfunction compareLTE(v1, v2) {\n return compare(v1, v2) !== 1;\n}\n\nvar STACK = [],\n VALUE = {key: null};\nfunction traverseInOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).left;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.right;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nfunction traverseReverseOrder(tree, key, comparator) {\n VALUE.key = key;\n var ret = [];\n var i = 0, current = tree.__root, v;\n while (true) {\n if (current) {\n current = (STACK[i++] = current).right;\n } else {\n if (i > 0) {\n v = (current = STACK[--i]).data;\n if (comparator(v, VALUE)) {\n pPush.apply(ret, v.value.tuples);\n current = current.left;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n STACK.length = 0;\n return ret;\n}\n\nAVLTree.extend({\n instance: {\n\n constructor: function () {\n this._super([\n {\n compare: compare\n }\n ]);\n this.gtCache = new HashTable();\n this.gteCache = new HashTable();\n this.ltCache = new HashTable();\n this.lteCache = new HashTable();\n this.hasGTCache = false;\n this.hasGTECache = false;\n this.hasLTCache = false;\n this.hasLTECache = false;\n },\n\n clearCache: function () {\n this.hasGTCache && this.gtCache.clear() && (this.hasGTCache = false);\n this.hasGTECache && this.gteCache.clear() && (this.hasGTECache = false);\n this.hasLTCache && this.ltCache.clear() && (this.hasLTCache = false);\n this.hasLTECache && this.lteCache.clear() && (this.hasLTECache = false);\n },\n\n contains: function (key) {\n return this._super([\n {key: key}\n ]);\n },\n\n \"set\": function (key, value) {\n this.insert({key: key, value: value});\n this.clearCache();\n },\n\n \"get\": function (key) {\n var ret = this.find({key: key});\n return ret && ret.value;\n },\n\n \"remove\": function (key) {\n this.clearCache();\n return this._super([\n {key: key}\n ]);\n },\n\n findGT: function (key) {\n var ret = this.gtCache.get(key);\n if (!ret) {\n this.hasGTCache = true;\n this.gtCache.put(key, (ret = traverseReverseOrder(this, key, compareGT)));\n }\n return ret;\n },\n\n findGTE: function (key) {\n var ret = this.gteCache.get(key);\n if (!ret) {\n this.hasGTECache = true;\n this.gteCache.put(key, (ret = traverseReverseOrder(this, key, compareGTE)));\n }\n return ret;\n },\n\n findLT: function (key) {\n var ret = this.ltCache.get(key);\n if (!ret) {\n this.hasLTCache = true;\n this.ltCache.put(key, (ret = traverseInOrder(this, key, compareLT)));\n }\n return ret;\n },\n\n findLTE: function (key) {\n var ret = this.lteCache.get(key);\n if (!ret) {\n this.hasLTECache = true;\n this.lteCache.put(key, (ret = traverseInOrder(this, key, compareLTE)));\n }\n return ret;\n }\n\n }\n}).as(module);","var extd = require(\"../../extended\"),\n indexOf = extd.indexOf;\n// HashSet = require(\"./hashSet\");\n\n\nvar TUPLE_ID = 0;\nextd.declare({\n\n instance: {\n tuples: null,\n tupleMap: null,\n hashCode: null,\n tables: null,\n entry: null,\n constructor: function (val, entry, canRemove) {\n this.val = val;\n this.canRemove = canRemove;\n this.tuples = [];\n this.tupleMap = {};\n this.hashCode = TUPLE_ID++;\n this.tables = {};\n this.length = 0;\n this.entry = entry;\n },\n\n addNode: function (node) {\n this.tuples[this.length++] = node;\n if (this.length > 1) {\n this.entry.clearCache();\n }\n return this;\n },\n\n removeNode: function (node) {\n var tuples = this.tuples, index = indexOf(tuples, node);\n if (index !== -1) {\n tuples.splice(index, 1);\n this.length--;\n this.entry.clearCache();\n }\n if (this.canRemove && !this.length) {\n this.entry.remove(this.val);\n }\n }\n }\n}).as(module);","var extd = require(\"../extended\"),\n forEach = extd.forEach,\n indexOf = extd.indexOf,\n intersection = extd.intersection,\n declare = extd.declare,\n HashTable = extd.HashTable,\n Context = require(\"../context\");\n\nvar count = 0;\ndeclare({\n instance: {\n constructor: function () {\n this.nodes = new HashTable();\n this.rules = [];\n this.parentNodes = [];\n this.__count = count++;\n this.__entrySet = [];\n },\n\n addRule: function (rule) {\n if (indexOf(this.rules, rule) === -1) {\n this.rules.push(rule);\n }\n return this;\n },\n\n merge: function (that) {\n that.nodes.forEach(function (entry) {\n var patterns = entry.value, node = entry.key;\n for (var i = 0, l = patterns.length; i < l; i++) {\n this.addOutNode(node, patterns[i]);\n }\n that.nodes.remove(node);\n }, this);\n var thatParentNodes = that.parentNodes;\n for (var i = 0, l = that.parentNodes.l; i < l; i++) {\n var parentNode = thatParentNodes[i];\n this.addParentNode(parentNode);\n parentNode.nodes.remove(that);\n }\n return this;\n },\n\n resolve: function (mr1, mr2) {\n return mr1.hashCode === mr2.hashCode;\n },\n\n print: function (tab) {\n console.log(tab + this.toString());\n forEach(this.parentNodes, function (n) {\n n.print(\" \" + tab);\n });\n },\n\n addOutNode: function (outNode, pattern) {\n if (!this.nodes.contains(outNode)) {\n this.nodes.put(outNode, []);\n }\n this.nodes.get(outNode).push(pattern);\n this.__entrySet = this.nodes.entrySet();\n },\n\n addParentNode: function (n) {\n if (indexOf(this.parentNodes, n) === -1) {\n this.parentNodes.push(n);\n }\n },\n\n shareable: function () {\n return false;\n },\n\n __propagate: function (method, context) {\n var entrySet = this.__entrySet, i = entrySet.length, entry, outNode, paths, continuingPaths;\n while (--i > -1) {\n entry = entrySet[i];\n outNode = entry.key;\n paths = entry.value;\n\n if ((continuingPaths = intersection(paths, context.paths)).length) {\n outNode[method](new Context(context.fact, continuingPaths, context.match));\n }\n\n }\n },\n\n dispose: function (assertable) {\n this.propagateDispose(assertable);\n },\n\n retract: function (assertable) {\n this.propagateRetract(assertable);\n },\n\n propagateDispose: function (assertable, outNodes) {\n outNodes = outNodes || this.nodes;\n var entrySet = this.__entrySet, i = entrySet.length - 1;\n for (; i >= 0; i--) {\n var entry = entrySet[i], outNode = entry.key;\n outNode.dispose(assertable);\n }\n },\n\n propagateAssert: function (assertable) {\n this.__propagate(\"assert\", assertable);\n },\n\n propagateRetract: function (assertable) {\n this.__propagate(\"retract\", assertable);\n },\n\n assert: function (assertable) {\n this.propagateAssert(assertable);\n },\n\n modify: function (assertable) {\n this.propagateModify(assertable);\n },\n\n propagateModify: function (assertable) {\n this.__propagate(\"modify\", assertable);\n }\n }\n\n}).as(module);\n","var JoinNode = require(\"./joinNode\"),\n LinkedList = require(\"../linkedList\"),\n Context = require(\"../context\"),\n InitialFact = require(\"../pattern\").InitialFact;\n\n\nJoinNode.extend({\n instance: {\n\n nodeType: \"NotNode\",\n\n constructor: function () {\n this._super(arguments);\n this.leftTupleMemory = {};\n //use this ensure a unique match for and propagated context.\n this.notMatch = new Context(new InitialFact()).match;\n },\n\n __cloneContext: function (context) {\n return context.clone(null, null, context.match.merge(this.notMatch));\n },\n\n\n retractRight: function (context) {\n var ctx = this.removeFromRightMemory(context),\n rightContext = ctx.data,\n blocking = rightContext.blocking;\n if (blocking.length) {\n //if we are blocking left contexts\n var leftContext, thisConstraint = this.constraint, blockingNode = {next: blocking.head}, rc;\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n this.removeFromLeftBlockedMemory(leftContext);\n var rm = this.rightTuples.getRightMemory(leftContext), l = rm.length, i;\n i = -1;\n while (++i < l) {\n if (thisConstraint.isMatch(leftContext, rc = rm[i].data)) {\n this.blockedContext(leftContext, rc);\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.notBlockedContext(leftContext, true);\n }\n }\n blocking.clear();\n }\n\n },\n\n blockedContext: function (leftContext, rightContext, propagate) {\n leftContext.blocker = rightContext;\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(rightContext.blocking.push(leftContext));\n propagate && this.__propagate(\"retract\", this.__cloneContext(leftContext));\n },\n\n notBlockedContext: function (leftContext, propagate) {\n this.__addToLeftMemory(leftContext);\n propagate && this.__propagate(\"assert\", this.__cloneContext(leftContext));\n },\n\n propagateFromLeft: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n propagateFromRight: function (leftContext) {\n this.notBlockedContext(leftContext, true);\n },\n\n blockFromAssertRight: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, true);\n },\n\n blockFromAssertLeft: function (leftContext, rightContext) {\n this.blockedContext(leftContext, rightContext, false);\n },\n\n\n retractLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context);\n if (ctx) {\n ctx = ctx.data;\n this.__propagate(\"retract\", this.__cloneContext(ctx));\n } else {\n if (!this.removeFromLeftBlockedMemory(context)) {\n throw new Error();\n }\n }\n },\n\n assertLeft: function (context) {\n var values = this.rightTuples.getRightMemory(context),\n thisConstraint = this.constraint, rc, i = -1, l = values.length;\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = values[i].data)) {\n this.blockFromAssertLeft(context, rc);\n context = null;\n i = l;\n }\n }\n if (context) {\n this.propagateFromLeft(context);\n }\n },\n\n assertRight: function (context) {\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n var fl = this.leftTuples.getLeftMemory(context).slice(),\n i = -1, l = fl.length,\n leftContext, thisConstraint = this.constraint;\n while (++i < l) {\n leftContext = fl[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.blockFromAssertRight(leftContext, context);\n }\n }\n },\n\n addToLeftBlockedMemory: function (context) {\n var data = context.data, hashCode = data.hashCode;\n var ctx = this.leftMemory[hashCode];\n this.leftTupleMemory[hashCode] = context;\n if (ctx) {\n this.leftTuples.remove(ctx);\n }\n return this;\n },\n\n removeFromLeftBlockedMemory: function (context) {\n var ret = this.leftTupleMemory[context.hashCode] || null;\n if (ret) {\n delete this.leftTupleMemory[context.hashCode];\n ret.data.blocker.blocking.remove(ret);\n }\n return ret;\n },\n\n modifyLeft: function (context) {\n var ctx = this.removeFromLeftMemory(context),\n leftContext,\n thisConstraint = this.constraint,\n rightTuples = this.rightTuples.getRightMemory(context),\n l = rightTuples.length,\n isBlocked = false,\n i, rc, blocker;\n if (!ctx) {\n //blocked before\n ctx = this.removeFromLeftBlockedMemory(context);\n isBlocked = true;\n }\n if (ctx) {\n leftContext = ctx.data;\n\n if (leftContext && leftContext.blocker) {\n //we were blocked before so only check nodes previous to our blocker\n blocker = this.rightMemory[leftContext.blocker.hashCode];\n leftContext.blocker = null;\n }\n if (blocker) {\n if (thisConstraint.isMatch(context, rc = blocker.data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n context.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context = null;\n }\n }\n if (context && l) {\n i = -1;\n //we were propogated before\n while (++i < l) {\n if (thisConstraint.isMatch(context, rc = rightTuples[i].data)) {\n //we cant be proagated so retract previous\n if (!isBlocked) {\n //we were asserted before so retract\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n }\n this.addToLeftBlockedMemory(rc.blocking.push(context));\n context.blocker = rc;\n context = null;\n break;\n }\n }\n }\n if (context) {\n //we can still be propogated\n this.__addToLeftMemory(context);\n if (!isBlocked) {\n //we weren't blocked before so modify\n this.__propagate(\"modify\", this.__cloneContext(context));\n } else {\n //we were blocked before but aren't now\n this.__propagate(\"assert\", this.__cloneContext(context));\n }\n\n }\n } else {\n throw new Error();\n }\n\n },\n\n modifyRight: function (context) {\n var ctx = this.removeFromRightMemory(context);\n if (ctx) {\n var rightContext = ctx.data,\n leftTuples = this.leftTuples.getLeftMemory(context).slice(),\n leftTuplesLength = leftTuples.length,\n leftContext,\n thisConstraint = this.constraint,\n i, node,\n blocking = rightContext.blocking;\n this.__addToRightMemory(context);\n context.blocking = new LinkedList();\n\n var rc;\n //check old blocked contexts\n //check if the same contexts blocked before are still blocked\n var blockingNode = {next: blocking.head};\n while ((blockingNode = blockingNode.next)) {\n leftContext = blockingNode.data;\n leftContext.blocker = null;\n if (thisConstraint.isMatch(leftContext, context)) {\n leftContext.blocker = context;\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext = null;\n } else {\n //we arent blocked anymore\n leftContext.blocker = null;\n node = ctx;\n while ((node = node.next)) {\n if (thisConstraint.isMatch(leftContext, rc = node.data)) {\n leftContext.blocker = rc;\n this.addToLeftBlockedMemory(rc.blocking.push(leftContext));\n leftContext = null;\n break;\n }\n }\n if (leftContext) {\n this.__addToLeftMemory(leftContext);\n this.__propagate(\"assert\", this.__cloneContext(leftContext));\n }\n }\n }\n if (leftTuplesLength) {\n //check currently left tuples in memory\n i = -1;\n while (++i < leftTuplesLength) {\n leftContext = leftTuples[i].data;\n if (thisConstraint.isMatch(leftContext, context)) {\n this.__propagate(\"retract\", this.__cloneContext(leftContext));\n this.removeFromLeftMemory(leftContext);\n this.addToLeftBlockedMemory(context.blocking.push(leftContext));\n leftContext.blocker = context;\n }\n }\n }\n } else {\n throw new Error();\n }\n\n\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\"),\n extd = require(\"../extended\");\n\nAlphaNode.extend({\n instance: {\n\n constructor: function () {\n this._super(arguments);\n this.alias = this.constraint.get(\"alias\");\n this.varLength = (this.variables = extd(this.constraint.get(\"variables\")).toArray().value()).length;\n },\n\n assert: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n\n this.__propagate(\"assert\", c);\n\n },\n\n retract: function (context) {\n this.__propagate(\"retract\", new Context(context.fact, context.paths));\n },\n\n modify: function (context) {\n var c = new Context(context.fact, context.paths);\n var variables = this.variables, o = context.fact.object, item;\n c.set(this.alias, o);\n for (var i = 0, l = this.varLength; i < l; i++) {\n item = variables[i];\n c.set(item[1], o[item[0]]);\n }\n this.__propagate(\"modify\", c);\n },\n\n\n toString: function () {\n return \"PropertyNode\" + this.__count;\n }\n }\n}).as(module);\n\n\n","var Node = require(\"./adapterNode\");\n\nNode.extend({\n instance: {\n\n retractResolve: function (match) {\n this.__propagate(\"retractResolve\", match);\n },\n\n dispose: function (context) {\n this.propagateDispose(context);\n },\n\n propagateAssert: function (context) {\n this.__propagate(\"assertRight\", context);\n },\n\n propagateRetract: function (context) {\n this.__propagate(\"retractRight\", context);\n },\n\n propagateResolve: function (context) {\n this.__propagate(\"retractResolve\", context);\n },\n\n propagateModify: function (context) {\n this.__propagate(\"modifyRight\", context);\n },\n\n toString: function () {\n return \"RightAdapterNode \" + this.__count;\n }\n }\n}).as(module);","var Node = require(\"./node\"),\n extd = require(\"../extended\"),\n bind = extd.bind;\n\nNode.extend({\n instance: {\n constructor: function (bucket, index, rule, agenda) {\n this._super([]);\n this.resolve = bind(this, this.resolve);\n this.rule = rule;\n this.index = index;\n this.name = this.rule.name;\n this.agenda = agenda;\n this.bucket = bucket;\n agenda.register(this);\n },\n\n __assertModify: function (context) {\n var match = context.match;\n if (match.isMatch) {\n var rule = this.rule, bucket = this.bucket;\n this.agenda.insert(this, {\n rule: rule,\n hashCode: context.hashCode,\n index: this.index,\n name: rule.name,\n recency: bucket.recency++,\n match: match,\n counter: bucket.counter\n });\n }\n },\n\n assert: function (context) {\n this.__assertModify(context);\n },\n\n modify: function (context) {\n this.agenda.retract(this, context);\n this.__assertModify(context);\n },\n\n retract: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractRight: function (context) {\n this.agenda.retract(this, context);\n },\n\n retractLeft: function (context) {\n this.agenda.retract(this, context);\n },\n\n assertLeft: function (context) {\n this.__assertModify(context);\n },\n\n assertRight: function (context) {\n this.__assertModify(context);\n },\n\n toString: function () {\n return \"TerminalNode \" + this.rule.name;\n }\n }\n}).as(module);","var AlphaNode = require(\"./alphaNode\"),\n Context = require(\"../context\");\n\nAlphaNode.extend({\n instance: {\n\n assert: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"assert\", fact);\n }\n },\n\n modify: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"modify\", fact);\n }\n },\n\n retract: function (fact) {\n if (this.constraintAssert(fact.object)) {\n this.__propagate(\"retract\", fact);\n }\n },\n\n toString: function () {\n return \"TypeNode\" + this.__count;\n },\n\n dispose: function () {\n var es = this.__entrySet, i = es.length - 1;\n for (; i >= 0; i--) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode.dispose({paths: paths});\n }\n },\n\n __propagate: function (method, fact) {\n var es = this.__entrySet, i = -1, l = es.length;\n while (++i < l) {\n var e = es[i], outNode = e.key, paths = e.value;\n outNode[method](new Context(fact, paths));\n }\n }\n }\n}).as(module);\n\n","/* parser generated by jison 0.4.17 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,29],$V1=[1,30],$V2=[1,26],$V3=[1,24],$V4=[1,16],$V5=[1,18],$V6=[1,19],$V7=[1,20],$V8=[1,21],$V9=[1,22],$Va=[5,38,49],$Vb=[1,33],$Vc=[5,36,38,49],$Vd=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Ve=[2,2],$Vf=[5,24,25,26,27,28,29,36,38,49],$Vg=[1,42],$Vh=[1,43],$Vi=[1,44],$Vj=[1,45],$Vk=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,46,49],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[5,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vp=[1,50],$Vq=[5,8,11,12,13,15,17,19,20,21,22,24,25,26,27,28,29,31,33,36,38,40,43,44,46,48,49],$Vr=[5,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vs=[1,55],$Vt=[1,54],$Vu=[5,8,15,17,19,20,21,22,24,25,26,27,28,29,36,38,49],$Vv=[1,56],$Vw=[1,57],$Vx=[1,58],$Vy=[1,87],$Vz=[40,46,49];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"expressions\":3,\"EXPRESSION\":4,\"EOF\":5,\"UNARY_EXPRESSION\":6,\"LITERAL_EXPRESSION\":7,\"-\":8,\"!\":9,\"MULTIPLICATIVE_EXPRESSION\":10,\"*\":11,\"/\":12,\"%\":13,\"ADDITIVE_EXPRESSION\":14,\"+\":15,\"EXPONENT_EXPRESSION\":16,\"^\":17,\"RELATIONAL_EXPRESSION\":18,\"<\":19,\">\":20,\"<=\":21,\">=\":22,\"EQUALITY_EXPRESSION\":23,\"==\":24,\"===\":25,\"!=\":26,\"!==\":27,\"=~\":28,\"!=~\":29,\"IN_EXPRESSION\":30,\"in\":31,\"ARRAY_EXPRESSION\":32,\"notIn\":33,\"OBJECT_EXPRESSION\":34,\"AND_EXPRESSION\":35,\"&&\":36,\"OR_EXPRESSION\":37,\"||\":38,\"ARGUMENT_LIST\":39,\",\":40,\"IDENTIFIER_EXPRESSION\":41,\"IDENTIFIER\":42,\".\":43,\"[\":44,\"STRING_EXPRESSION\":45,\"]\":46,\"NUMBER_EXPRESSION\":47,\"(\":48,\")\":49,\"STRING\":50,\"NUMBER\":51,\"REGEXP_EXPRESSION\":52,\"REGEXP\":53,\"BOOLEAN_EXPRESSION\":54,\"BOOLEAN\":55,\"NULL_EXPRESSION\":56,\"NULL\":57,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",8:\"-\",9:\"!\",11:\"*\",12:\"/\",13:\"%\",15:\"+\",17:\"^\",19:\"<\",20:\">\",21:\"<=\",22:\">=\",24:\"==\",25:\"===\",26:\"!=\",27:\"!==\",28:\"=~\",29:\"!=~\",31:\"in\",33:\"notIn\",36:\"&&\",38:\"||\",40:\",\",42:\"IDENTIFIER\",43:\".\",44:\"[\",46:\"]\",48:\"(\",49:\")\",50:\"STRING\",51:\"NUMBER\",53:\"REGEXP\",55:\"BOOLEAN\",57:\"NULL\"},\nproductions_: [0,[3,2],[6,1],[6,2],[6,2],[10,1],[10,3],[10,3],[10,3],[14,1],[14,3],[14,3],[16,1],[16,3],[18,1],[18,3],[18,3],[18,3],[18,3],[23,1],[23,3],[23,3],[23,3],[23,3],[23,3],[23,3],[30,1],[30,3],[30,3],[30,3],[30,3],[35,1],[35,3],[37,1],[37,3],[39,1],[39,3],[41,1],[34,1],[34,3],[34,4],[34,4],[34,4],[34,3],[34,4],[45,1],[47,1],[52,1],[54,1],[56,1],[32,2],[32,3],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,3],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn $$[$0-1];\nbreak;\ncase 3:\nthis.$ = [$$[$0], null, 'unary'];\nbreak;\ncase 4:\nthis.$ = [$$[$0], null, 'logicalNot'];\nbreak;\ncase 6:\nthis.$ = [$$[$0-2], $$[$0], 'mult'];\nbreak;\ncase 7:\nthis.$ = [$$[$0-2], $$[$0], 'div'];\nbreak;\ncase 8:\nthis.$ = [$$[$0-2], $$[$0], 'mod'];\nbreak;\ncase 10:\nthis.$ = [$$[$0-2], $$[$0], 'plus'];\nbreak;\ncase 11:\nthis.$ = [$$[$0-2], $$[$0], 'minus'];\nbreak;\ncase 13:\nthis.$ = [$$[$0-2], $$[$0], 'pow'];\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0], 'lt'];\nbreak;\ncase 16:\nthis.$ = [$$[$0-2], $$[$0], 'gt'];\nbreak;\ncase 17:\nthis.$ = [$$[$0-2], $$[$0], 'lte'];\nbreak;\ncase 18:\nthis.$ = [$$[$0-2], $$[$0], 'gte'];\nbreak;\ncase 20:\nthis.$ = [$$[$0-2], $$[$0], 'eq'];\nbreak;\ncase 21:\nthis.$ = [$$[$0-2], $$[$0], 'seq'];\nbreak;\ncase 22:\nthis.$ = [$$[$0-2], $$[$0], 'neq'];\nbreak;\ncase 23:\nthis.$ = [$$[$0-2], $$[$0], 'sneq'];\nbreak;\ncase 24:\nthis.$ = [$$[$0-2], $$[$0], 'like'];\nbreak;\ncase 25:\nthis.$ = [$$[$0-2], $$[$0], 'notLike'];\nbreak;\ncase 27: case 29:\nthis.$ = [$$[$0-2], $$[$0], 'in'];\nbreak;\ncase 28: case 30:\nthis.$ = [$$[$0-2], $$[$0], 'notIn'];\nbreak;\ncase 32:\nthis.$ = [$$[$0-2], $$[$0], 'and'];\nbreak;\ncase 34:\nthis.$ = [$$[$0-2], $$[$0], 'or'];\nbreak;\ncase 36:\nthis.$ = [$$[$0-2], $$[$0], 'arguments']\nbreak;\ncase 37:\nthis.$ = [String(yytext), null, 'identifier'];\nbreak;\ncase 39:\nthis.$ = [$$[$0-2],$$[$0], 'prop'];\nbreak;\ncase 40: case 41: case 42:\nthis.$ = [$$[$0-3],$$[$0-1], 'propLookup'];\nbreak;\ncase 43:\nthis.$ = [$$[$0-2], [null, null, 'arguments'], 'function']\nbreak;\ncase 44:\nthis.$ = [$$[$0-3], $$[$0-1], 'function']\nbreak;\ncase 45:\nthis.$ = [String(yytext.replace(/^['|\"]|['|\"]$/g, '')), null, 'string'];\nbreak;\ncase 46:\nthis.$ = [Number(yytext), null, 'number'];\nbreak;\ncase 47:\nthis.$ = [yytext, null, 'regexp'];\nbreak;\ncase 48:\nthis.$ = [yytext.replace(/^\\s+/, '') == 'true', null, 'boolean'];\nbreak;\ncase 49:\nthis.$ = [null, null, 'null'];\nbreak;\ncase 50:\nthis.$ = [null, null, 'array'];\nbreak;\ncase 51:\nthis.$ = [$$[$0-1], null, 'array'];\nbreak;\ncase 59:\nthis.$ = [$$[$0-1], null, 'composite']\nbreak;\n}\n},\ntable: [{3:1,4:2,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[3]},{5:[1,31]},o([5,49],[2,60],{38:[1,32]}),o($Va,[2,33],{36:$Vb}),o($Vc,[2,31]),o($Vc,[2,26],{24:[1,34],25:[1,35],26:[1,36],27:[1,37],28:[1,38],29:[1,39]}),o($Vd,$Ve,{31:[1,40],33:[1,41]}),o($Vf,[2,19],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vk,[2,52]),o($Vk,[2,53]),o($Vk,[2,54]),o($Vk,[2,55]),o($Vk,[2,56]),o($Vk,[2,57],{43:$Vl,44:$Vm,48:$Vn}),o($Vk,[2,58]),{4:49,6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:4,37:3,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vo,[2,14],{17:$Vp}),o($Vk,[2,45]),o($Vk,[2,46]),o($Vk,[2,47]),o($Vk,[2,48]),o($Vk,[2,49]),o($Vq,[2,38]),{7:53,32:15,34:14,39:52,41:23,42:$V2,44:$V3,45:9,46:[1,51],47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vr,[2,12],{8:$Vs,15:$Vt}),o($Vq,[2,37]),o($Vu,[2,9],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,5]),{6:59,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:61,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{1:[2,1]},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:5,32:15,34:14,35:62,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:7,8:$V0,9:$V1,10:27,14:25,16:17,18:8,23:6,30:63,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:64,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:65,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:66,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:67,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:68,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:17,18:69,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{32:70,34:71,41:23,42:$V2,44:$V3},{32:72,34:73,41:23,42:$V2,44:$V3},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:74,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:75,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:76,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:27,14:25,16:77,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{41:78,42:$V2},{34:81,41:23,42:$V2,45:79,47:80,50:$V5,51:$V6},{7:53,32:15,34:14,39:83,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,49:[1,82],50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{49:[1,84]},{6:28,7:60,8:$V0,9:$V1,10:27,14:85,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vk,[2,50]),{40:$Vy,46:[1,86]},o($Vz,[2,35]),{6:28,7:60,8:$V0,9:$V1,10:88,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:28,7:60,8:$V0,9:$V1,10:89,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:90,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:91,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},{6:92,7:60,8:$V0,9:$V1,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vd,[2,3]),o($Vd,$Ve),o($Vd,[2,4]),o($Va,[2,34],{36:$Vb}),o($Vc,[2,32]),o($Vf,[2,20],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,21],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,22],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,23],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,24],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vf,[2,25],{19:$Vg,20:$Vh,21:$Vi,22:$Vj}),o($Vc,[2,27]),o($Vc,[2,29],{43:$Vl,44:$Vm,48:$Vn}),o($Vc,[2,28]),o($Vc,[2,30],{43:$Vl,44:$Vm,48:$Vn}),o($Vo,[2,15],{17:$Vp}),o($Vo,[2,16],{17:$Vp}),o($Vo,[2,17],{17:$Vp}),o($Vo,[2,18],{17:$Vp}),o($Vq,[2,39]),{46:[1,93]},{46:[1,94]},{43:$Vl,44:$Vm,46:[1,95],48:$Vn},o($Vq,[2,43]),{40:$Vy,49:[1,96]},o($Vk,[2,59]),o($Vr,[2,13],{8:$Vs,15:$Vt}),o($Vk,[2,51]),{7:97,32:15,34:14,41:23,42:$V2,44:$V3,45:9,47:10,48:$V4,50:$V5,51:$V6,52:11,53:$V7,54:12,55:$V8,56:13,57:$V9},o($Vu,[2,10],{11:$Vv,12:$Vw,13:$Vx}),o($Vu,[2,11],{11:$Vv,12:$Vw,13:$Vx}),o($Vd,[2,6]),o($Vd,[2,7]),o($Vd,[2,8]),o($Vq,[2,40]),o($Vq,[2,41]),o($Vq,[2,42]),o($Vq,[2,44]),o($Vz,[2,36])],\ndefaultActions: {31:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n function _parseError (msg, hash) {\n this.message = msg;\n this.hash = hash;\n }\n _parseError.prototype = Error;\n\n throw new _parseError(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 31;\nbreak;\ncase 1:return 33;\nbreak;\ncase 2:return 'from';\nbreak;\ncase 3:return 24;\nbreak;\ncase 4:return 25;\nbreak;\ncase 5:return 26;\nbreak;\ncase 6:return 27;\nbreak;\ncase 7:return 21;\nbreak;\ncase 8:return 19;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 20;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 29;\nbreak;\ncase 13:return 36;\nbreak;\ncase 14:return 38;\nbreak;\ncase 15:return 57;\nbreak;\ncase 16:return 55;\nbreak;\ncase 17:/* skip whitespace */\nbreak;\ncase 18:return 51;\nbreak;\ncase 19:return 50;\nbreak;\ncase 20:return 50;\nbreak;\ncase 21:return 42;\nbreak;\ncase 22:return 53;\nbreak;\ncase 23:return 43;\nbreak;\ncase 24:return 11;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 40;\nbreak;\ncase 28:return 8;\nbreak;\ncase 29:return 28;\nbreak;\ncase 30:return 29;\nbreak;\ncase 31:return 25;\nbreak;\ncase 32:return 24;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 26;\nbreak;\ncase 35:return 21;\nbreak;\ncase 36:return 22;\nbreak;\ncase 37:return 20;\nbreak;\ncase 38:return 19;\nbreak;\ncase 39:return 36;\nbreak;\ncase 40:return 38;\nbreak;\ncase 41:return 15;\nbreak;\ncase 42:return 17;\nbreak;\ncase 43:return 48;\nbreak;\ncase 44:return 46;\nbreak;\ncase 45:return 44;\nbreak;\ncase 46:return 49;\nbreak;\ncase 47:return 9;\nbreak;\ncase 48:return 5;\nbreak;\n}\n},\nrules: [/^(?:\\s+in\\b)/,/^(?:\\s+notIn\\b)/,/^(?:\\s+from\\b)/,/^(?:\\s+(eq|EQ)\\b)/,/^(?:\\s+(seq|SEQ)\\b)/,/^(?:\\s+(neq|NEQ)\\b)/,/^(?:\\s+(sneq|SNEQ)\\b)/,/^(?:\\s+(lte|LTE)\\b)/,/^(?:\\s+(lt|LT)\\b)/,/^(?:\\s+(gte|GTE)\\b)/,/^(?:\\s+(gt|GT)\\b)/,/^(?:\\s+(like|LIKE)\\b)/,/^(?:\\s+(notLike|NOT_LIKE)\\b)/,/^(?:\\s+(and|AND)\\b)/,/^(?:\\s+(or|OR)\\b)/,/^(?:\\s*(null)\\b)/,/^(?:\\s*(true|false)\\b)/,/^(?:\\s+)/,/^(?:-?[0-9]+(?:\\.[0-9]+)?\\b)/,/^(?:'[^']*')/,/^(?:\"[^\"]*\")/,/^(?:([a-zA-Z_$][0-9a-zA-Z_$]*))/,/^(?:^\\/((?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/[imgy]{0,4})(?!\\w))/,/^(?:\\.)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:\\%)/,/^(?:,)/,/^(?:-)/,/^(?:=~)/,/^(?:!=~)/,/^(?:===)/,/^(?:==)/,/^(?:!==)/,/^(?:!=)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:\\+)/,/^(?:\\^)/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:\\))/,/^(?:!)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","(function () {\n \"use strict\";\n var constraintParser = require(\"./constraint/parser\"),\n noolParser = require(\"./nools/nool.parser\");\n\n exports.parseConstraint = function (expression) {\n try {\n return constraintParser.parse(expression);\n } catch (e) {\n throw new Error(\"Invalid expression '\" + expression + \"'\");\n }\n };\n\n exports.parseRuleSet = function (source, file) {\n return noolParser.parse(source, file);\n };\n})();","\"use strict\";\n\nvar tokens = require(\"./tokens.js\"),\n extd = require(\"../../extended\"),\n keys = extd.hash.keys,\n utils = require(\"./util.js\");\n\nvar parse = function (src, keywords, context) {\n var orig = src;\n src = src.replace(/\\/\\/(.*)/g, \"\").replace(/\\r\\n|\\r|\\n/g, \" \");\n\n var blockTypes = new RegExp(\"^(\" + keys(keywords).join(\"|\") + \")\"), index;\n while (src && (index = utils.findNextTokenIndex(src)) !== -1) {\n src = src.substr(index);\n var blockType = src.match(blockTypes);\n if (blockType !== null) {\n blockType = blockType[1];\n if (blockType in keywords) {\n try {\n src = keywords[blockType](src, context, parse).replace(/^\\s*|\\s*$/g, \"\");\n } catch (e) {\n throw new Error(\"Invalid \" + blockType + \" definition \\n\" + e.message + \"; \\nstarting at : \" + orig);\n }\n } else {\n throw new Error(\"Unknown token\" + blockType);\n }\n } else {\n throw new Error(\"Error parsing \" + src);\n }\n }\n};\n\nexports.parse = function (src, file) {\n var context = {define: [], rules: [], scope: [], loaded: [], file: file};\n parse(src, tokens, context);\n return context;\n};\n\n","\"use strict\";\n\nvar utils = require(\"./util.js\"),\n fs = require(\"fs\"),\n extd = require(\"../../extended\"),\n filter = extd.filter,\n indexOf = extd.indexOf,\n predicates = [\"not\", \"or\", \"exists\"],\n predicateRegExp = new RegExp(\"^(\" + predicates.join(\"|\") + \") *\\\\((.*)\\\\)$\", \"m\"),\n predicateBeginExp = new RegExp(\" *(\" + predicates.join(\"|\") + \") *\\\\(\", \"g\");\n\nvar isWhiteSpace = function (str) {\n return str.replace(/[\\s|\\n|\\r|\\t]/g, \"\").length === 0;\n};\n\nvar joinFunc = function (m, str) {\n return \"; \" + str;\n};\n\nvar splitRuleLineByPredicateExpressions = function (ruleLine) {\n var str = ruleLine.replace(/,\\s*(\\$?\\w+\\s*:)/g, joinFunc);\n var parts = filter(str.split(predicateBeginExp), function (str) {\n return str !== \"\";\n }),\n l = parts.length, ret = [];\n\n if (l) {\n for (var i = 0; i < l; i++) {\n if (indexOf(predicates, parts[i]) !== -1) {\n ret.push([parts[i], \"(\", parts[++i].replace(/, *$/, \"\")].join(\"\"));\n } else {\n ret.push(parts[i].replace(/, *$/, \"\"));\n }\n }\n } else {\n return str;\n }\n return ret.join(\";\");\n};\n\nvar ruleTokens = {\n\n salience: (function () {\n var salienceRegexp = /^(salience|priority)\\s*:\\s*(-?\\d+)\\s*[,;]?/;\n return function (src, context) {\n if (salienceRegexp.test(src)) {\n var parts = src.match(salienceRegexp),\n priority = parseInt(parts[2], 10);\n if (!isNaN(priority)) {\n context.options.priority = priority;\n } else {\n throw new Error(\"Invalid salience/priority \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n agendaGroup: (function () {\n var agendaGroupRegexp = /^(agenda-group|agendaGroup)\\s*:\\s*([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')\\s*[,;]?/;\n return function (src, context) {\n if (agendaGroupRegexp.test(src)) {\n var parts = src.match(agendaGroupRegexp),\n agendaGroup = parts[2];\n if (agendaGroup) {\n context.options.agendaGroup = agendaGroup.replace(/^[\"']|[\"']$/g, \"\");\n } else {\n throw new Error(\"Invalid agenda-group \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n autoFocus: (function () {\n var autoFocusRegexp = /^(auto-focus|autoFocus)\\s*:\\s*(true|false)\\s*[,;]?/;\n return function (src, context) {\n if (autoFocusRegexp.test(src)) {\n var parts = src.match(autoFocusRegexp),\n autoFocus = parts[2];\n if (autoFocus) {\n context.options.autoFocus = autoFocus === \"true\" ? true : false;\n } else {\n throw new Error(\"Invalid auto-focus \" + parts[2]);\n }\n return src.replace(parts[0], \"\");\n } else {\n throw new Error(\"invalid format\");\n }\n };\n })(),\n\n \"agenda-group\": function () {\n return this.agendaGroup.apply(this, arguments);\n },\n\n \"auto-focus\": function () {\n return this.autoFocus.apply(this, arguments);\n },\n\n priority: function () {\n return this.salience.apply(this, arguments);\n },\n\n when: (function () {\n /*jshint evil:true*/\n\n var ruleRegExp = /^(\\$?\\w+) *: *(\\w+)(.*)/;\n\n var constraintRegExp = /(\\{ *(?:[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']? *(?:, *[\"']?\\$?\\w+[\"']?\\s*:\\s*[\"']?\\$?\\w+[\"']?)*)+ *\\})/;\n var fromRegExp = /(\\bfrom\\s+.*)/;\n var parseRules = function (str) {\n var rules = [];\n var ruleLines = str.split(\";\"), l = ruleLines.length, ruleLine;\n for (var i = 0; i < l && (ruleLine = ruleLines[i].replace(/^\\s*|\\s*$/g, \"\").replace(/\\n/g, \"\")); i++) {\n if (!isWhiteSpace(ruleLine)) {\n var rule = [];\n if (predicateRegExp.test(ruleLine)) {\n var m = ruleLine.match(predicateRegExp);\n var pred = m[1].replace(/^\\s*|\\s*$/g, \"\");\n rule.push(pred);\n ruleLine = m[2].replace(/^\\s*|\\s*$/g, \"\");\n if (pred === \"or\") {\n rule = rule.concat(parseRules(splitRuleLineByPredicateExpressions(ruleLine)));\n rules.push(rule);\n continue;\n }\n\n }\n var parts = ruleLine.match(ruleRegExp);\n if (parts && parts.length) {\n rule.push(parts[2], parts[1]);\n var constraints = parts[3].replace(/^\\s*|\\s*$/g, \"\");\n var hashParts = constraints.match(constraintRegExp), from = null, fromMatch;\n if (hashParts) {\n var hash = hashParts[1], constraint = constraints.replace(hash, \"\");\n if (fromRegExp.test(constraint)) {\n fromMatch = constraint.match(fromRegExp);\n from = fromMatch[0];\n constraint = constraint.replace(fromMatch[0], \"\");\n }\n if (constraint) {\n rule.push(constraint.replace(/^\\s*|\\s*$/g, \"\"));\n }\n if (hash) {\n rule.push(eval(\"(\" + hash.replace(/(\\$?\\w+)\\s*:\\s*(\\$?\\w+)/g, '\"$1\" : \"$2\"') + \")\"));\n }\n } else if (constraints && !isWhiteSpace(constraints)) {\n if (fromRegExp.test(constraints)) {\n fromMatch = constraints.match(fromRegExp);\n from = fromMatch[0];\n constraints = constraints.replace(fromMatch[0], \"\");\n }\n rule.push(constraints);\n }\n if (from) {\n rule.push(from);\n }\n rules.push(rule);\n } else {\n throw new Error(\"Invalid constraint \" + ruleLine);\n }\n }\n }\n return rules;\n };\n\n return function (orig, context) {\n var src = orig.replace(/^when\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n context.constraints = parseRules(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"));\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n };\n })(),\n\n then: (function () {\n return function (orig, context) {\n if (!context.action) {\n var src = orig.replace(/^then\\s*/, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n if (!context.action) {\n context.action = body.replace(/^\\{\\s*|\\}\\s*$/g, \"\");\n }\n if (!isWhiteSpace(src)) {\n throw new Error(\"Error parsing then block \" + orig);\n }\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"action already defined for rule\" + context.name);\n }\n\n };\n })()\n};\n\nvar topLevelTokens = {\n \"/\": function (orig) {\n if (orig.match(/^\\/\\*/)) {\n // Block Comment parse\n return orig.replace(/\\/\\*.*?\\*\\//, \"\");\n } else {\n return orig;\n }\n },\n\n \"define\": function (orig, context) {\n var src = orig.replace(/^define\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1];\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.define.push({name: name, properties: \"(\" + body + \")\"});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"import\": function (orig, context, parse) {\n if (typeof window !== 'undefined') {\n throw new Error(\"import cannot be used in a browser\");\n }\n var src = orig.replace(/^import\\s*/, \"\");\n if (utils.findNextToken(src) === \"(\") {\n var file = utils.getParamList(src);\n src = src.replace(file, \"\").replace(/^\\s*|\\s*$/g, \"\");\n utils.findNextToken(src) === \";\" && (src = src.replace(/\\s*;/, \"\"));\n file = file.replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n file = utils.resolve(context.file || process.cwd(), file[0].replace(/[\"|']/g, \"\"));\n if (indexOf(context.loaded, file) === -1) {\n var origFile = context.file;\n context.file = file;\n parse(fs.readFileSync(file, \"utf8\"), topLevelTokens, context);\n context.loaded.push(file);\n context.file = origFile;\n }\n return src;\n } else {\n throw new Error(\"import accepts a single file\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n\n },\n\n //define a global\n \"global\": function (orig, context) {\n var src = orig.replace(/^global\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*\\s*)/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"=\") {\n name = name[1].replace(/^\\s+|\\s+$/g, '');\n var fullbody = utils.getTokensBetween(src, \"=\", \";\", true).join(\"\");\n var body = fullbody.substring(1, fullbody.length - 1);\n body = body.replace(/^\\s+|\\s+$/g, '');\n if (/^require\\(/.test(body)) {\n var file = utils.getParamList(body.replace(\"require\")).replace(/[\\(|\\)]/g, \"\").split(\",\");\n if (file.length === 1) {\n //handle relative require calls\n file = file[0].replace(/[\"|']/g, \"\");\n body = [\"require('\", utils.resolve(context.file || process.cwd(), file) , \"')\"].join(\"\");\n }\n }\n context.scope.push({name: name, body: body});\n src = src.replace(fullbody, \"\");\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '=' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n //define a function\n \"function\": function (orig, context) {\n var src = orig.replace(/^function\\s*/, \"\");\n //parse the function name\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*)\\s*/);\n if (name) {\n src = src.replace(name[0], \"\");\n if (utils.findNextToken(src) === \"(\") {\n name = name[1];\n var params = utils.getParamList(src);\n src = src.replace(params, \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n //should\n context.scope.push({name: name, body: \"function\" + params + body});\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"unexpected token : expected : '(' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n },\n\n \"rule\": function (orig, context, parse) {\n var src = orig.replace(/^rule\\s*/, \"\");\n var name = src.match(/^([a-zA-Z_$][0-9a-zA-Z_$]*|\"[^\"]*\"|'[^']*')/);\n if (name) {\n src = src.replace(name[0], \"\").replace(/^\\s*|\\s*$/g, \"\");\n if (utils.findNextToken(src) === \"{\") {\n name = name[1].replace(/^[\"']|[\"']$/g, \"\");\n var rule = {name: name, options: {}, constraints: null, action: null};\n var body = utils.getTokensBetween(src, \"{\", \"}\", true).join(\"\");\n src = src.replace(body, \"\");\n parse(body.replace(/^\\{\\s*|\\}\\s*$/g, \"\"), ruleTokens, rule);\n context.rules.push(rule);\n return src;\n } else {\n throw new Error(\"unexpected token : expected : '{' found : '\" + utils.findNextToken(src) + \"'\");\n }\n } else {\n throw new Error(\"missing name\");\n }\n\n }\n};\nmodule.exports = topLevelTokens;\n\n","\"use strict\";\n\nvar path = require(\"path\");\nvar WHITE_SPACE_REG = /[\\s|\\n|\\r|\\t]/,\n pathSep = path.sep || ( process.platform === 'win32' ? '\\\\' : '/' );\n\nvar TOKEN_INVERTS = {\n \"{\": \"}\",\n \"}\": \"{\",\n \"(\": \")\",\n \")\": \"(\",\n \"[\": \"]\"\n};\n\nvar getTokensBetween = exports.getTokensBetween = function (str, start, stop, includeStartEnd) {\n var depth = 0, ret = [];\n if (!start) {\n start = TOKEN_INVERTS[stop];\n depth = 1;\n }\n if (!stop) {\n stop = TOKEN_INVERTS[start];\n }\n str = Object(str);\n var startPushing = false, token, cursor = 0, found = false;\n while ((token = str.charAt(cursor++))) {\n if (token === start) {\n depth++;\n if (!startPushing) {\n startPushing = true;\n if (includeStartEnd) {\n ret.push(token);\n }\n } else {\n ret.push(token);\n }\n } else if (token === stop && cursor) {\n depth--;\n if (depth === 0) {\n if (includeStartEnd) {\n ret.push(token);\n }\n found = true;\n break;\n }\n ret.push(token);\n } else if (startPushing) {\n ret.push(token);\n }\n }\n if (!found) {\n throw new Error(\"Unable to match \" + start + \" in \" + str);\n }\n return ret;\n};\n\nexports.getParamList = function (str) {\n return getTokensBetween(str, \"(\", \")\", true).join(\"\");\n};\n\nexports.resolve = function (from, to) {\n if (process.platform === 'win32') {\n to = to.replace(/\\//g, '\\\\');\n }\n if (path.extname(from) !== '') {\n from = path.dirname(from);\n }\n if (to.split(pathSep).length === 1) {\n return to;\n }\n return path.resolve(from, to).replace(/\\\\/g, '/');\n\n};\n\nvar findNextTokenIndex = exports.findNextTokenIndex = function (str, startIndex, endIndex) {\n startIndex = startIndex || 0;\n endIndex = endIndex || str.length;\n var ret = -1, l = str.length;\n if (!endIndex || endIndex > l) {\n endIndex = l;\n }\n for (; startIndex < endIndex; startIndex++) {\n var c = str.charAt(startIndex);\n if (!WHITE_SPACE_REG.test(c)) {\n ret = startIndex;\n break;\n }\n }\n return ret;\n};\n\nexports.findNextToken = function (str, startIndex, endIndex) {\n return str.charAt(findNextTokenIndex(str, startIndex, endIndex));\n};","\"use strict\";\nvar extd = require(\"./extended\"),\n isEmpty = extd.isEmpty,\n merge = extd.merge,\n forEach = extd.forEach,\n declare = extd.declare,\n constraintMatcher = require(\"./constraintMatcher\"),\n constraint = require(\"./constraint\"),\n EqualityConstraint = constraint.EqualityConstraint,\n FromConstraint = constraint.FromConstraint;\n\nvar id = 0;\nvar Pattern = declare({});\n\nvar ObjectPattern = Pattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, options) {\n options = options || {};\n this.id = id++;\n this.type = type;\n this.alias = alias;\n this.conditions = conditions;\n this.pattern = options.pattern;\n var constraints = [new constraint.ObjectConstraint(type)];\n var constrnts = constraintMatcher.toConstraints(conditions, merge({alias: alias}, options));\n if (constrnts.length) {\n constraints = constraints.concat(constrnts);\n } else {\n var cnstrnt = new constraint.TrueConstraint();\n constraints.push(cnstrnt);\n }\n if (store && !isEmpty(store)) {\n var atm = new constraint.HashConstraint(store);\n constraints.push(atm);\n }\n\n forEach(constraints, function (constraint) {\n constraint.set(\"alias\", alias);\n });\n this.constraints = constraints;\n },\n\n getSpecificity: function () {\n var constraints = this.constraints, specificity = 0;\n for (var i = 0, l = constraints.length; i < l; i++) {\n if (constraints[i] instanceof EqualityConstraint) {\n specificity++;\n }\n }\n return specificity;\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions)].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j\", this.constraints);\n }\n }\n}).as(exports, \"ObjectPattern\");\n\nvar FromPattern = ObjectPattern.extend({\n instance: {\n constructor: function (type, alias, conditions, store, from, options) {\n this._super([type, alias, conditions, store, options]);\n this.from = new FromConstraint(from, options);\n },\n\n hasConstraint: function (type) {\n return extd.some(this.constraints, function (c) {\n return c instanceof type;\n });\n },\n\n getSpecificity: function () {\n return this._super(arguments) + 1;\n },\n\n hashCode: function () {\n return [this.type, this.alias, extd.format(\"%j\", this.conditions), this.from.from].join(\":\");\n },\n\n toString: function () {\n return extd.format(\"%j from %s\", this.constraints, this.from.from);\n }\n }\n}).as(exports, \"FromPattern\");\n\n\nFromPattern.extend().as(exports, \"FromNotPattern\");\nObjectPattern.extend().as(exports, \"NotPattern\");\nObjectPattern.extend().as(exports, \"ExistsPattern\");\nFromPattern.extend().as(exports, \"FromExistsPattern\");\n\nPattern.extend({\n\n instance: {\n constructor: function (left, right) {\n this.id = id++;\n this.leftPattern = left;\n this.rightPattern = right;\n },\n\n hashCode: function () {\n return [this.leftPattern.hashCode(), this.rightPattern.hashCode()].join(\":\");\n },\n\n getSpecificity: function () {\n return this.rightPattern.getSpecificity() + this.leftPattern.getSpecificity();\n },\n\n getters: {\n constraints: function () {\n return this.leftPattern.constraints.concat(this.rightPattern.constraints);\n }\n }\n }\n\n}).as(exports, \"CompositePattern\");\n\n\nvar InitialFact = declare({\n instance: {\n constructor: function () {\n this.id = id++;\n this.recency = 0;\n }\n }\n}).as(exports, \"InitialFact\");\n\nObjectPattern.extend({\n instance: {\n constructor: function () {\n this._super([InitialFact, \"__i__\", [], {}]);\n },\n\n assert: function () {\n return true;\n }\n }\n}).as(exports, \"InitialFactPattern\");\n\n\n\n","\"use strict\";\nvar extd = require(\"./extended\"),\n isArray = extd.isArray,\n Promise = extd.Promise,\n declare = extd.declare,\n isHash = extd.isHash,\n isString = extd.isString,\n format = extd.format,\n parser = require(\"./parser\"),\n pattern = require(\"./pattern\"),\n ObjectPattern = pattern.ObjectPattern,\n FromPattern = pattern.FromPattern,\n NotPattern = pattern.NotPattern,\n ExistsPattern = pattern.ExistsPattern,\n FromNotPattern = pattern.FromNotPattern,\n FromExistsPattern = pattern.FromExistsPattern,\n CompositePattern = pattern.CompositePattern;\n\nvar parseConstraint = function (constraint) {\n if (typeof constraint === 'function') {\n // No parsing is needed for constraint functions\n return constraint;\n }\n return parser.parseConstraint(constraint);\n};\n\nvar parseExtra = extd\n .switcher()\n .isUndefinedOrNull(function () {\n return null;\n })\n .isLike(/^from +/, function (s) {\n return {from: s.replace(/^from +/, \"\").replace(/^\\s*|\\s*$/g, \"\")};\n })\n .def(function (o) {\n throw new Error(\"invalid rule constraint option \" + o);\n })\n .switcher();\n\nvar normailizeConstraint = extd\n .switcher()\n .isLength(1, function (c) {\n throw new Error(\"invalid rule constraint \" + format(\"%j\", [c]));\n })\n .isLength(2, function (c) {\n c.push(\"true\");\n return c;\n })\n //handle case where c[2] is a hash rather than a constraint string\n .isLength(3, function (c) {\n if (isString(c[2]) && /^from +/.test(c[2])) {\n var extra = c[2];\n c.splice(2, 0, \"true\");\n c[3] = null;\n c[4] = parseExtra(extra);\n } else if (isHash(c[2])) {\n c.splice(2, 0, \"true\");\n }\n return c;\n })\n //handle case where c[3] is a from clause rather than a hash for references\n .isLength(4, function (c) {\n if (isString(c[3])) {\n c.splice(3, 0, null);\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .def(function (c) {\n if (c.length === 5) {\n c[4] = parseExtra(c[4]);\n }\n return c;\n })\n .switcher();\n\nvar getParamType = function getParamType(type, scope) {\n scope = scope || {};\n var getParamTypeSwitch = extd\n .switcher()\n .isEq(\"string\", function () {\n return String;\n })\n .isEq(\"date\", function () {\n return Date;\n })\n .isEq(\"array\", function () {\n return Array;\n })\n .isEq(\"boolean\", function () {\n return Boolean;\n })\n .isEq(\"regexp\", function () {\n return RegExp;\n })\n .isEq(\"number\", function () {\n return Number;\n })\n .isEq(\"object\", function () {\n return Object;\n })\n .isEq(\"hash\", function () {\n return Object;\n })\n .def(function (param) {\n throw new TypeError(\"invalid param type \" + param);\n })\n .switcher();\n\n var _getParamType = extd\n .switcher()\n .isString(function (param) {\n var t = scope[param];\n if (!t) {\n return getParamTypeSwitch(param.toLowerCase());\n } else {\n return t;\n }\n })\n .isFunction(function (func) {\n return func;\n })\n .deepEqual([], function () {\n return Array;\n })\n .def(function (param) {\n throw new Error(\"invalid param type \" + param);\n })\n .switcher();\n\n return _getParamType(type);\n};\n\nvar parsePattern = extd\n .switcher()\n .containsAt(\"or\", 0, function (condition) {\n condition.shift();\n return extd(condition).map(function (cond) {\n cond.scope = condition.scope;\n return parsePattern(cond);\n }).flatten().value();\n })\n .containsAt(\"not\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromNotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new NotPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .containsAt(\"exists\", 0, function (condition) {\n condition.shift();\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ExistsPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n })\n .def(function (condition) {\n if (typeof condition === 'function') {\n return [condition];\n }\n condition = normailizeConstraint(condition);\n if (condition[4] && condition[4].from) {\n return [\n new FromPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n parseConstraint(condition[4].from),\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n } else {\n return [\n new ObjectPattern(\n getParamType(condition[0], condition.scope),\n condition[1] || \"m\",\n parseConstraint(condition[2] || \"true\"),\n condition[3] || {},\n {scope: condition.scope, pattern: condition[2]}\n )\n ];\n }\n }).switcher();\n\nvar Rule = declare({\n instance: {\n constructor: function (name, options, pattern, cb) {\n this.name = name;\n this.pattern = pattern;\n this.cb = cb;\n if (options.agendaGroup) {\n this.agendaGroup = options.agendaGroup;\n this.autoFocus = extd.isBoolean(options.autoFocus) ? options.autoFocus : false;\n }\n this.priority = options.priority || options.salience || 0;\n },\n\n fire: function (flow, match) {\n var ret = new Promise(), cb = this.cb;\n try {\n if (cb.length === 3) {\n cb.call(flow, match.factHash, flow, ret.resolve);\n } else {\n ret = cb.call(flow, match.factHash, flow);\n }\n } catch (e) {\n ret.errback(e);\n }\n return ret;\n }\n }\n});\n\nfunction createRule(name, options, conditions, cb) {\n if (isArray(options)) {\n cb = conditions;\n conditions = options;\n } else {\n options = options || {};\n }\n var isRules = extd.every(conditions, function (cond) {\n return isArray(cond);\n });\n if (isRules && conditions.length === 1) {\n conditions = conditions[0];\n isRules = false;\n }\n var rules = [];\n var scope = options.scope || {};\n conditions.scope = scope;\n if (isRules) {\n var _mergePatterns = function (patt, i) {\n if (!patterns[i]) {\n patterns[i] = i === 0 ? [] : patterns[i - 1].slice();\n //remove dup\n if (i !== 0) {\n patterns[i].pop();\n }\n patterns[i].push(patt);\n } else {\n extd(patterns).forEach(function (p) {\n p.push(patt);\n });\n }\n\n };\n var l = conditions.length, patterns = [], condition;\n for (var i = 0; i < l; i++) {\n condition = conditions[i];\n condition.scope = scope;\n extd.forEach(parsePattern(condition), _mergePatterns);\n\n }\n rules = extd.map(patterns, function (patterns) {\n var compPat = null;\n for (var i = 0; i < patterns.length; i++) {\n if (compPat === null) {\n compPat = new CompositePattern(patterns[i++], patterns[i]);\n } else {\n compPat = new CompositePattern(compPat, patterns[i]);\n }\n }\n return new Rule(name, options, compPat, cb);\n });\n } else {\n rules = extd.map(parsePattern(conditions), function (cond) {\n return new Rule(name, options, cond, cb);\n });\n }\n return rules;\n}\n\nexports.createRule = createRule;\n\n\n\n","\"use strict\";\nvar declare = require(\"declare.js\"),\n LinkedList = require(\"./linkedList\"),\n InitialFact = require(\"./pattern\").InitialFact,\n id = 0;\n\nvar Fact = declare({\n\n instance: {\n constructor: function (obj) {\n this.object = obj;\n this.recency = 0;\n this.id = id++;\n },\n\n equals: function (fact) {\n return fact === this.object;\n },\n\n hashCode: function () {\n return this.id;\n }\n }\n\n});\n\ndeclare({\n\n instance: {\n\n constructor: function () {\n this.recency = 0;\n this.facts = new LinkedList();\n },\n\n dispose: function () {\n this.facts.clear();\n },\n\n getFacts: function () {\n var head = {next: this.facts.head}, ret = [], i = 0, val;\n while ((head = head.next)) {\n if (!((val = head.data.object) instanceof InitialFact)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactsByType: function (Type) {\n var head = {next: this.facts.head}, ret = [], i = 0;\n while ((head = head.next)) {\n var val = head.data.object;\n if (!(val instanceof InitialFact) && (val instanceof Type || val.constructor === Type)) {\n ret[i++] = val;\n }\n }\n return ret;\n },\n\n getFactHandle: function (o) {\n var head = {next: this.facts.head}, ret;\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(o)) {\n return existingFact;\n }\n }\n if (!ret) {\n ret = new Fact(o);\n ret.recency = this.recency++;\n //this.facts.push(ret);\n }\n return ret;\n },\n\n modifyFact: function (fact) {\n var head = {next: this.facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n existingFact.recency = this.recency++;\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to modify does not exist\");\n },\n\n assertFact: function (fact) {\n var ret = new Fact(fact);\n ret.recency = this.recency++;\n this.facts.push(ret);\n return ret;\n },\n\n retractFact: function (fact) {\n var facts = this.facts, head = {next: facts.head};\n while ((head = head.next)) {\n var existingFact = head.data;\n if (existingFact.equals(fact)) {\n facts.remove(head);\n return existingFact;\n }\n }\n //if we made it here we did not find the fact\n throw new Error(\"the fact to remove does not exist\");\n\n\n }\n }\n\n}).as(exports, \"WorkingMemory\");\n\n","(function () {\n \"use strict\";\n /*global extended isExtended*/\n\n function defineObject(extended, is, arr) {\n\n var deepEqual = is.deepEqual,\n isString = is.isString,\n isHash = is.isHash,\n difference = arr.difference,\n hasOwn = Object.prototype.hasOwnProperty,\n isFunction = is.isFunction;\n\n function _merge(target, source) {\n var name, s;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n if (!(name in target) || (target[name] !== s)) {\n target[name] = s;\n }\n }\n }\n return target;\n }\n\n function _deepMerge(target, source) {\n var name, s, t;\n for (name in source) {\n if (hasOwn.call(source, name)) {\n s = source[name];\n t = target[name];\n if (!deepEqual(t, s)) {\n if (isHash(t) && isHash(s)) {\n target[name] = _deepMerge(t, s);\n } else if (isHash(s)) {\n target[name] = _deepMerge({}, s);\n } else {\n target[name] = s;\n }\n }\n }\n }\n return target;\n }\n\n\n function merge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _merge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n function deepMerge(obj) {\n if (!obj) {\n obj = {};\n }\n for (var i = 1, l = arguments.length; i < l; i++) {\n _deepMerge(obj, arguments[i]);\n }\n return obj; // Object\n }\n\n\n function extend(parent, child) {\n var proto = parent.prototype || parent;\n merge(proto, child);\n return parent;\n }\n\n function forEach(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key;\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n iterator.call(scope || hash, hash[key], key, hash);\n }\n return hash;\n }\n\n function filter(hash, iterator, scope) {\n if (!isHash(hash) || !isFunction(iterator)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, value, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n value = hash[key];\n if (iterator.call(scope || hash, value, key, hash)) {\n ret[key] = value;\n }\n }\n return ret;\n }\n\n function values(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n ret.push(hash[objKeys[i]]);\n }\n return ret;\n }\n\n\n function keys(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var ret = [];\n for (var i in hash) {\n if (hasOwn.call(hash, i)) {\n ret.push(i);\n }\n }\n return ret;\n }\n\n function invert(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[hash[key]] = key;\n }\n return ret;\n }\n\n function toArray(hash) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n var objKeys = keys(hash), key, ret = [];\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret.push([key, hash[key]]);\n }\n return ret;\n }\n\n function omit(hash, omitted) {\n if (!isHash(hash)) {\n throw new TypeError();\n }\n if (isString(omitted)) {\n omitted = [omitted];\n }\n var objKeys = difference(keys(hash), omitted), key, ret = {};\n for (var i = 0, len = objKeys.length; i < len; ++i) {\n key = objKeys[i];\n ret[key] = hash[key];\n }\n return ret;\n }\n\n var hash = {\n forEach: forEach,\n filter: filter,\n invert: invert,\n values: values,\n toArray: toArray,\n keys: keys,\n omit: omit\n };\n\n\n var obj = {\n extend: extend,\n merge: merge,\n deepMerge: deepMerge,\n omit: omit\n };\n\n var ret = extended.define(is.isObject, obj).define(isHash, hash).define(is.isFunction, {extend: extend}).expose({hash: hash}).expose(obj);\n var orig = ret.extend;\n ret.extend = function __extend() {\n if (arguments.length === 1) {\n return orig.extend.apply(ret, arguments);\n } else {\n extend.apply(null, arguments);\n }\n };\n return ret;\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineObject(require(\"extended\"), require(\"is-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"array-extended\"], function (extended, is, array) {\n return defineObject(extended, is, array);\n });\n } else {\n this.objectExtended = defineObject(this.extended, this.isExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n /*global setImmediate, MessageChannel*/\n\n\n function definePromise(declare, extended, array, is, fn, args) {\n\n var forEach = array.forEach,\n isUndefinedOrNull = is.isUndefinedOrNull,\n isArray = is.isArray,\n isFunction = is.isFunction,\n isBoolean = is.isBoolean,\n bind = fn.bind,\n bindIgnore = fn.bindIgnore,\n argsToArray = args.argsToArray;\n\n function createHandler(fn, promise) {\n return function _handler() {\n try {\n when(fn.apply(null, arguments))\n .addCallback(promise)\n .addErrback(promise);\n } catch (e) {\n promise.errback(e);\n }\n };\n }\n\n var nextTick;\n if (typeof setImmediate === \"function\") {\n // In IE10, or use https://github.com/NobleJS/setImmediate\n if (typeof window !== \"undefined\") {\n nextTick = setImmediate.bind(window);\n } else {\n nextTick = setImmediate;\n }\n } else if (typeof process !== \"undefined\") {\n // node\n nextTick = function (cb) {\n process.nextTick(cb);\n };\n } else if (typeof MessageChannel !== \"undefined\") {\n // modern browsers\n // http://www.nonblocking.io/2011/06/windownexttick.html\n var channel = new MessageChannel();\n // linked list of tasks (single, with head node)\n var head = {}, tail = head;\n channel.port1.onmessage = function () {\n head = head.next;\n var task = head.task;\n delete head.task;\n task();\n };\n nextTick = function (task) {\n tail = tail.next = {task: task};\n channel.port2.postMessage(0);\n };\n } else {\n // old browsers\n nextTick = function (task) {\n setTimeout(task, 0);\n };\n }\n\n\n //noinspection JSHint\n var Promise = declare({\n instance: {\n __fired: false,\n\n __results: null,\n\n __error: null,\n\n __errorCbs: null,\n\n __cbs: null,\n\n constructor: function () {\n this.__errorCbs = [];\n this.__cbs = [];\n fn.bindAll(this, [\"callback\", \"errback\", \"resolve\", \"classic\", \"__resolve\", \"addCallback\", \"addErrback\"]);\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__error ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__error || this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(this, results);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = cb.callback;\n }\n if (this.__fired && this.__results) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = cb.errback;\n }\n if (this.__fired && this.__error) {\n this.__callNextTick(cb, this.__error);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n callback: function (args) {\n if (!this.__fired) {\n this.__results = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n errback: function (args) {\n if (!this.__fired) {\n this.__error = arguments;\n this.__resolve();\n }\n return this.promise();\n },\n\n resolve: function (err, args) {\n if (err) {\n this.errback(err);\n } else {\n this.callback.apply(this, argsToArray(arguments, 1));\n }\n return this;\n },\n\n classic: function (cb) {\n if (\"function\" === typeof cb) {\n this.addErrback(function (err) {\n cb(err);\n });\n this.addCallback(function () {\n cb.apply(this, [null].concat(argsToArray(arguments)));\n });\n }\n return this;\n },\n\n then: function (callback, errback) {\n\n var promise = new Promise(), errorHandler = promise;\n if (isFunction(errback)) {\n errorHandler = createHandler(errback, promise);\n }\n this.addErrback(errorHandler);\n if (isFunction(callback)) {\n this.addCallback(createHandler(callback, promise));\n } else {\n this.addCallback(promise);\n }\n\n return promise.promise();\n },\n\n both: function (callback) {\n return this.then(callback, callback);\n },\n\n promise: function () {\n var ret = {\n then: bind(this, \"then\"),\n both: bind(this, \"both\"),\n promise: function () {\n return ret;\n }\n };\n forEach([\"addCallback\", \"addErrback\", \"classic\"], function (action) {\n ret[action] = bind(this, function () {\n this[action].apply(this, arguments);\n return ret;\n });\n }, this);\n\n return ret;\n }\n\n\n }\n });\n\n\n var PromiseList = Promise.extend({\n instance: {\n\n /*@private*/\n __results: null,\n\n /*@private*/\n __errors: null,\n\n /*@private*/\n __promiseLength: 0,\n\n /*@private*/\n __defLength: 0,\n\n /*@private*/\n __firedLength: 0,\n\n normalizeResults: false,\n\n constructor: function (defs, normalizeResults) {\n this.__errors = [];\n this.__results = [];\n this.normalizeResults = isBoolean(normalizeResults) ? normalizeResults : false;\n this._super(arguments);\n if (defs && defs.length) {\n this.__defLength = defs.length;\n forEach(defs, this.__addPromise, this);\n } else {\n this.__resolve();\n }\n },\n\n __addPromise: function (promise, i) {\n promise.then(\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.callback.apply(this, args);\n }),\n bind(this, function () {\n var args = argsToArray(arguments);\n args.unshift(i);\n this.errback.apply(this, args);\n })\n );\n },\n\n __resolve: function () {\n if (!this.__fired) {\n this.__fired = true;\n var cbs = this.__errors.length ? this.__errorCbs : this.__cbs,\n len = cbs.length, i,\n results = this.__errors.length ? this.__errors : this.__results;\n for (i = 0; i < len; i++) {\n this.__callNextTick(cbs[i], results);\n }\n\n }\n },\n\n __callNextTick: function (cb, results) {\n nextTick(function () {\n cb.apply(null, [results]);\n });\n },\n\n addCallback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.callback) {\n cb = bind(cb, \"callback\");\n }\n if (this.__fired && !this.__errors.length) {\n this.__callNextTick(cb, this.__results);\n } else {\n this.__cbs.push(cb);\n }\n }\n return this;\n },\n\n addErrback: function (cb) {\n if (cb) {\n if (isPromiseLike(cb) && cb.errback) {\n cb = bind(cb, \"errback\");\n }\n if (this.__fired && this.__errors.length) {\n this.__callNextTick(cb, this.__errors);\n } else {\n this.__errorCbs.push(cb);\n }\n }\n return this;\n },\n\n\n callback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__results[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n },\n\n\n errback: function (i) {\n if (this.__fired) {\n throw new Error(\"Already fired!\");\n }\n var args = argsToArray(arguments);\n if (this.normalizeResults) {\n args = args.slice(1);\n args = args.length === 1 ? args.pop() : args;\n }\n this.__errors[i] = args;\n this.__firedLength++;\n if (this.__firedLength === this.__defLength) {\n this.__resolve();\n }\n return this.promise();\n }\n\n }\n });\n\n\n function callNext(list, results, propogate) {\n var ret = new Promise().callback();\n forEach(list, function (listItem) {\n ret = ret.then(propogate ? listItem : bindIgnore(null, listItem));\n if (!propogate) {\n ret = ret.then(function (res) {\n results.push(res);\n return results;\n });\n }\n });\n return ret;\n }\n\n function isPromiseLike(obj) {\n return !isUndefinedOrNull(obj) && (isFunction(obj.then));\n }\n\n function wrapThenPromise(p) {\n var ret = new Promise();\n p.then(bind(ret, \"callback\"), bind(ret, \"errback\"));\n return ret.promise();\n }\n\n function when(args) {\n var p;\n args = argsToArray(arguments);\n if (!args.length) {\n p = new Promise().callback(args).promise();\n } else if (args.length === 1) {\n args = args.pop();\n if (isPromiseLike(args)) {\n if (args.addCallback && args.addErrback) {\n p = new Promise();\n args.addCallback(p.callback);\n args.addErrback(p.errback);\n } else {\n p = wrapThenPromise(args);\n }\n } else if (isArray(args) && array.every(args, isPromiseLike)) {\n p = new PromiseList(args, true).promise();\n } else {\n p = new Promise().callback(args);\n }\n } else {\n p = new PromiseList(array.map(args, function (a) {\n return when(a);\n }), true).promise();\n }\n return p;\n\n }\n\n function wrap(fn, scope) {\n return function _wrap() {\n var ret = new Promise();\n var args = argsToArray(arguments);\n args.push(ret.resolve);\n fn.apply(scope || this, args);\n return ret.promise();\n };\n }\n\n function serial(list) {\n if (isArray(list)) {\n return callNext(list, [], false);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function chain(list) {\n if (isArray(list)) {\n return callNext(list, [], true);\n } else {\n throw new Error(\"When calling promise.serial the first argument must be an array\");\n }\n }\n\n\n function wait(args, fn) {\n args = argsToArray(arguments);\n var resolved = false;\n fn = args.pop();\n var p = when(args);\n return function waiter() {\n if (!resolved) {\n args = arguments;\n return p.then(bind(this, function doneWaiting() {\n resolved = true;\n return fn.apply(this, args);\n }));\n } else {\n return when(fn.apply(this, arguments));\n }\n };\n }\n\n function createPromise() {\n return new Promise();\n }\n\n function createPromiseList(promises) {\n return new PromiseList(promises, true).promise();\n }\n\n function createRejected(val) {\n return createPromise().errback(val);\n }\n\n function createResolved(val) {\n return createPromise().callback(val);\n }\n\n\n return extended\n .define({\n isPromiseLike: isPromiseLike\n }).expose({\n isPromiseLike: isPromiseLike,\n when: when,\n wrap: wrap,\n wait: wait,\n serial: serial,\n chain: chain,\n Promise: Promise,\n PromiseList: PromiseList,\n promise: createPromise,\n defer: createPromise,\n deferredList: createPromiseList,\n reject: createRejected,\n resolve: createResolved\n });\n\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = definePromise(require(\"declare.js\"), require(\"extended\"), require(\"array-extended\"), require(\"is-extended\"), require(\"function-extended\"), require(\"arguments-extended\"));\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"declare\", \"extended\", \"array-extended\", \"is-extended\", \"function-extended\", \"arguments-extended\"], function (declare, extended, array, is, fn, args) {\n return definePromise(declare, extended, array, is, fn, args);\n });\n } else {\n this.promiseExtended = definePromise(this.declare, this.extended, this.arrayExtended, this.isExtended, this.functionExtended, this.argumentsExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","(function () {\n \"use strict\";\n\n function defineString(extended, is, date, arr) {\n\n var stringify;\n if (typeof JSON === \"undefined\") {\n /*\n json2.js\n 2012-10-08\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n */\n\n (function () {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n var isPrimitive = is.tester().isString().isNumber().isBoolean().tester();\n\n function toJSON(obj) {\n if (is.isDate(obj)) {\n return isFinite(obj.valueOf()) ? obj.getUTCFullYear() + '-' +\n f(obj.getUTCMonth() + 1) + '-' +\n f(obj.getUTCDate()) + 'T' +\n f(obj.getUTCHours()) + ':' +\n f(obj.getUTCMinutes()) + ':' +\n f(obj.getUTCSeconds()) + 'Z'\n : null;\n } else if (isPrimitive(obj)) {\n return obj.valueOf();\n }\n return obj;\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n var i, k, v, length, mind = gap, partial, value = holder[key];\n if (value) {\n value = toJSON(value);\n }\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n switch (typeof value) {\n case 'string':\n return quote(value);\n case 'number':\n return isFinite(value) ? String(value) : 'null';\n case 'boolean':\n case 'null':\n return String(value);\n case 'object':\n if (!value) {\n return 'null';\n }\n gap += indent;\n partial = [];\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === 'string') {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n return str('', {'': value});\n };\n }());\n } else {\n stringify = JSON.stringify;\n }\n\n\n var isHash = is.isHash, aSlice = Array.prototype.slice;\n\n var FORMAT_REGEX = /%((?:-?\\+?.?\\d*)?|(?:\\[[^\\[|\\]]*\\]))?([sjdDZ])/g;\n var INTERP_REGEX = /\\{(?:\\[([^\\[|\\]]*)\\])?(\\w+)\\}/g;\n var STR_FORMAT = /(-?)(\\+?)([A-Z|a-z|\\W]?)([1-9][0-9]*)?$/;\n var OBJECT_FORMAT = /([1-9][0-9]*)$/g;\n\n function formatString(string, format) {\n var ret = string;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], padChar = match[3], width = match[4];\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar, isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n }\n return ret;\n }\n\n function formatNumber(number, format) {\n var ret;\n if (is.isNumber(number)) {\n ret = \"\" + number;\n if (STR_FORMAT.test(format)) {\n var match = format.match(STR_FORMAT);\n var isLeftJustified = match[1], signed = match[2], padChar = match[3], width = match[4];\n if (signed) {\n ret = (number > 0 ? \"+\" : \"\") + ret;\n }\n if (width) {\n width = parseInt(width, 10);\n if (ret.length < width) {\n ret = pad(ret, width, padChar || \"0\", isLeftJustified);\n } else {\n ret = truncate(ret, width);\n }\n }\n\n }\n } else {\n throw new Error(\"stringExtended.format : when using %d the parameter must be a number!\");\n }\n return ret;\n }\n\n function formatObject(object, format) {\n var ret, match = format.match(OBJECT_FORMAT), spacing = 0;\n if (match) {\n spacing = parseInt(match[0], 10);\n if (isNaN(spacing)) {\n spacing = 0;\n }\n }\n try {\n ret = stringify(object, null, spacing);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", object);\n }\n return ret;\n }\n\n\n var styles = {\n //styles\n bold: 1,\n bright: 1,\n italic: 3,\n underline: 4,\n blink: 5,\n inverse: 7,\n crossedOut: 9,\n\n red: 31,\n green: 32,\n yellow: 33,\n blue: 34,\n magenta: 35,\n cyan: 36,\n white: 37,\n\n redBackground: 41,\n greenBackground: 42,\n yellowBackground: 43,\n blueBackground: 44,\n magentaBackground: 45,\n cyanBackground: 46,\n whiteBackground: 47,\n\n encircled: 52,\n overlined: 53,\n grey: 90,\n black: 90\n };\n\n var characters = {\n SMILEY: \"☺\",\n SOLID_SMILEY: \"☻\",\n HEART: \"♥\",\n DIAMOND: \"♦\",\n CLOVE: \"♣\",\n SPADE: \"♠\",\n DOT: \"•\",\n SQUARE_CIRCLE: \"◘\",\n CIRCLE: \"○\",\n FILLED_SQUARE_CIRCLE: \"◙\",\n MALE: \"♂\",\n FEMALE: \"♀\",\n EIGHT_NOTE: \"♪\",\n DOUBLE_EIGHTH_NOTE: \"♫\",\n SUN: \"☼\",\n PLAY: \"►\",\n REWIND: \"◄\",\n UP_DOWN: \"↕\",\n PILCROW: \"¶\",\n SECTION: \"§\",\n THICK_MINUS: \"▬\",\n SMALL_UP_DOWN: \"↨\",\n UP_ARROW: \"↑\",\n DOWN_ARROW: \"↓\",\n RIGHT_ARROW: \"→\",\n LEFT_ARROW: \"←\",\n RIGHT_ANGLE: \"∟\",\n LEFT_RIGHT_ARROW: \"↔\",\n TRIANGLE: \"▲\",\n DOWN_TRIANGLE: \"▼\",\n HOUSE: \"⌂\",\n C_CEDILLA: \"Ç\",\n U_UMLAUT: \"ü\",\n E_ACCENT: \"é\",\n A_LOWER_CIRCUMFLEX: \"â\",\n A_LOWER_UMLAUT: \"ä\",\n A_LOWER_GRAVE_ACCENT: \"à\",\n A_LOWER_CIRCLE_OVER: \"å\",\n C_LOWER_CIRCUMFLEX: \"ç\",\n E_LOWER_CIRCUMFLEX: \"ê\",\n E_LOWER_UMLAUT: \"ë\",\n E_LOWER_GRAVE_ACCENT: \"è\",\n I_LOWER_UMLAUT: \"ï\",\n I_LOWER_CIRCUMFLEX: \"î\",\n I_LOWER_GRAVE_ACCENT: \"ì\",\n A_UPPER_UMLAUT: \"Ä\",\n A_UPPER_CIRCLE: \"Å\",\n E_UPPER_ACCENT: \"É\",\n A_E_LOWER: \"æ\",\n A_E_UPPER: \"Æ\",\n O_LOWER_CIRCUMFLEX: \"ô\",\n O_LOWER_UMLAUT: \"ö\",\n O_LOWER_GRAVE_ACCENT: \"ò\",\n U_LOWER_CIRCUMFLEX: \"û\",\n U_LOWER_GRAVE_ACCENT: \"ù\",\n Y_LOWER_UMLAUT: \"ÿ\",\n O_UPPER_UMLAUT: \"Ö\",\n U_UPPER_UMLAUT: \"Ü\",\n CENTS: \"¢\",\n POUND: \"£\",\n YEN: \"¥\",\n CURRENCY: \"¤\",\n PTS: \"₧\",\n FUNCTION: \"ƒ\",\n A_LOWER_ACCENT: \"á\",\n I_LOWER_ACCENT: \"í\",\n O_LOWER_ACCENT: \"ó\",\n U_LOWER_ACCENT: \"ú\",\n N_LOWER_TILDE: \"ñ\",\n N_UPPER_TILDE: \"Ñ\",\n A_SUPER: \"ª\",\n O_SUPER: \"º\",\n UPSIDEDOWN_QUESTION: \"¿\",\n SIDEWAYS_L: \"⌐\",\n NEGATION: \"¬\",\n ONE_HALF: \"½\",\n ONE_FOURTH: \"¼\",\n UPSIDEDOWN_EXCLAMATION: \"¡\",\n DOUBLE_LEFT: \"«\",\n DOUBLE_RIGHT: \"»\",\n LIGHT_SHADED_BOX: \"░\",\n MEDIUM_SHADED_BOX: \"▒\",\n DARK_SHADED_BOX: \"▓\",\n VERTICAL_LINE: \"│\",\n MAZE__SINGLE_RIGHT_T: \"┤\",\n MAZE_SINGLE_RIGHT_TOP: \"┐\",\n MAZE_SINGLE_RIGHT_BOTTOM_SMALL: \"┘\",\n MAZE_SINGLE_LEFT_TOP_SMALL: \"┌\",\n MAZE_SINGLE_LEFT_BOTTOM_SMALL: \"└\",\n MAZE_SINGLE_LEFT_T: \"├\",\n MAZE_SINGLE_BOTTOM_T: \"┴\",\n MAZE_SINGLE_TOP_T: \"┬\",\n MAZE_SINGLE_CENTER: \"┼\",\n MAZE_SINGLE_HORIZONTAL_LINE: \"─\",\n MAZE_SINGLE_RIGHT_DOUBLECENTER_T: \"╡\",\n MAZE_SINGLE_RIGHT_DOUBLE_BL: \"╛\",\n MAZE_SINGLE_RIGHT_DOUBLE_T: \"╢\",\n MAZE_SINGLE_RIGHT_DOUBLEBOTTOM_TOP: \"╖\",\n MAZE_SINGLE_RIGHT_DOUBLELEFT_TOP: \"╕\",\n MAZE_SINGLE_LEFT_DOUBLE_T: \"╞\",\n MAZE_SINGLE_BOTTOM_DOUBLE_T: \"╧\",\n MAZE_SINGLE_TOP_DOUBLE_T: \"╤\",\n MAZE_SINGLE_TOP_DOUBLECENTER_T: \"╥\",\n MAZE_SINGLE_BOTTOM_DOUBLECENTER_T: \"╨\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_BOTTOM: \"╘\",\n MAZE_SINGLE_LEFT_DOUBLERIGHT_TOP: \"╒\",\n MAZE_SINGLE_LEFT_DOUBLEBOTTOM_TOP: \"╓\",\n MAZE_SINGLE_LEFT_DOUBLETOP_BOTTOM: \"╙\",\n MAZE_SINGLE_LEFT_TOP: \"Γ\",\n MAZE_SINGLE_RIGHT_BOTTOM: \"╜\",\n MAZE_SINGLE_LEFT_CENTER: \"╟\",\n MAZE_SINGLE_DOUBLECENTER_CENTER: \"╫\",\n MAZE_SINGLE_DOUBLECROSS_CENTER: \"╪\",\n MAZE_DOUBLE_LEFT_CENTER: \"╣\",\n MAZE_DOUBLE_VERTICAL: \"║\",\n MAZE_DOUBLE_RIGHT_TOP: \"╗\",\n MAZE_DOUBLE_RIGHT_BOTTOM: \"╝\",\n MAZE_DOUBLE_LEFT_BOTTOM: \"╚\",\n MAZE_DOUBLE_LEFT_TOP: \"╔\",\n MAZE_DOUBLE_BOTTOM_T: \"╩\",\n MAZE_DOUBLE_TOP_T: \"╦\",\n MAZE_DOUBLE_LEFT_T: \"╠\",\n MAZE_DOUBLE_HORIZONTAL: \"═\",\n MAZE_DOUBLE_CROSS: \"╬\",\n SOLID_RECTANGLE: \"█\",\n THICK_LEFT_VERTICAL: \"▌\",\n THICK_RIGHT_VERTICAL: \"▐\",\n SOLID_SMALL_RECTANGLE_BOTTOM: \"▄\",\n SOLID_SMALL_RECTANGLE_TOP: \"▀\",\n PHI_UPPER: \"Φ\",\n INFINITY: \"∞\",\n INTERSECTION: \"∩\",\n DEFINITION: \"≡\",\n PLUS_MINUS: \"±\",\n GT_EQ: \"≥\",\n LT_EQ: \"≤\",\n THEREFORE: \"⌠\",\n SINCE: \"∵\",\n DOESNOT_EXIST: \"∄\",\n EXISTS: \"∃\",\n FOR_ALL: \"∀\",\n EXCLUSIVE_OR: \"⊕\",\n BECAUSE: \"⌡\",\n DIVIDE: \"÷\",\n APPROX: \"≈\",\n DEGREE: \"°\",\n BOLD_DOT: \"∙\",\n DOT_SMALL: \"·\",\n CHECK: \"√\",\n ITALIC_X: \"✗\",\n SUPER_N: \"ⁿ\",\n SQUARED: \"²\",\n CUBED: \"³\",\n SOLID_BOX: \"■\",\n PERMILE: \"‰\",\n REGISTERED_TM: \"®\",\n COPYRIGHT: \"©\",\n TRADEMARK: \"™\",\n BETA: \"β\",\n GAMMA: \"γ\",\n ZETA: \"ζ\",\n ETA: \"η\",\n IOTA: \"ι\",\n KAPPA: \"κ\",\n LAMBDA: \"λ\",\n NU: \"ν\",\n XI: \"ξ\",\n OMICRON: \"ο\",\n RHO: \"ρ\",\n UPSILON: \"υ\",\n CHI_LOWER: \"φ\",\n CHI_UPPER: \"χ\",\n PSI: \"ψ\",\n ALPHA: \"α\",\n ESZETT: \"ß\",\n PI: \"π\",\n SIGMA_UPPER: \"Σ\",\n SIGMA_LOWER: \"σ\",\n MU: \"µ\",\n TAU: \"τ\",\n THETA: \"Θ\",\n OMEGA: \"Ω\",\n DELTA: \"δ\",\n PHI_LOWER: \"φ\",\n EPSILON: \"ε\"\n };\n\n function pad(string, length, ch, end) {\n string = \"\" + string; //check for numbers\n ch = ch || \" \";\n var strLen = string.length;\n while (strLen < length) {\n if (end) {\n string += ch;\n } else {\n string = ch + string;\n }\n strLen++;\n }\n return string;\n }\n\n function truncate(string, length, end) {\n var ret = string;\n if (is.isString(ret)) {\n if (string.length > length) {\n if (end) {\n var l = string.length;\n ret = string.substring(l - length, l);\n } else {\n ret = string.substring(0, length);\n }\n }\n } else {\n ret = truncate(\"\" + ret, length);\n }\n return ret;\n }\n\n function format(str, obj) {\n if (obj instanceof Array) {\n var i = 0, len = obj.length;\n //find the matches\n return str.replace(FORMAT_REGEX, function (m, format, type) {\n var replacer, ret;\n if (i < len) {\n replacer = obj[i++];\n } else {\n //we are out of things to replace with so\n //just return the match?\n return m;\n }\n if (m === \"%s\" || m === \"%d\" || m === \"%D\") {\n //fast path!\n ret = replacer + \"\";\n } else if (m === \"%Z\") {\n ret = replacer.toUTCString();\n } else if (m === \"%j\") {\n try {\n ret = stringify(replacer);\n } catch (e) {\n throw new Error(\"stringExtended.format : Unable to parse json from \", replacer);\n }\n } else {\n format = format.replace(/^\\[|\\]$/g, \"\");\n switch (type) {\n case \"s\":\n ret = formatString(replacer, format);\n break;\n case \"d\":\n ret = formatNumber(replacer, format);\n break;\n case \"j\":\n ret = formatObject(replacer, format);\n break;\n case \"D\":\n ret = date.format(replacer, format);\n break;\n case \"Z\":\n ret = date.format(replacer, format, true);\n break;\n }\n }\n return ret;\n });\n } else if (isHash(obj)) {\n return str.replace(INTERP_REGEX, function (m, format, value) {\n value = obj[value];\n if (!is.isUndefined(value)) {\n if (format) {\n if (is.isString(value)) {\n return formatString(value, format);\n } else if (is.isNumber(value)) {\n return formatNumber(value, format);\n } else if (is.isDate(value)) {\n return date.format(value, format);\n } else if (is.isObject(value)) {\n return formatObject(value, format);\n }\n } else {\n return \"\" + value;\n }\n }\n return m;\n });\n } else {\n var args = aSlice.call(arguments).slice(1);\n return format(str, args);\n }\n }\n\n function toArray(testStr, delim) {\n var ret = [];\n if (testStr) {\n if (testStr.indexOf(delim) > 0) {\n ret = testStr.replace(/\\s+/g, \"\").split(delim);\n }\n else {\n ret.push(testStr);\n }\n }\n return ret;\n }\n\n function multiply(str, times) {\n var ret = [];\n if (times) {\n for (var i = 0; i < times; i++) {\n ret.push(str);\n }\n }\n return ret.join(\"\");\n }\n\n\n function style(str, options) {\n var ret, i, l;\n if (options) {\n if (is.isArray(str)) {\n ret = [];\n for (i = 0, l = str.length; i < l; i++) {\n ret.push(style(str[i], options));\n }\n } else if (options instanceof Array) {\n ret = str;\n for (i = 0, l = options.length; i < l; i++) {\n ret = style(ret, options[i]);\n }\n } else if (options in styles) {\n ret = '\\x1B[' + styles[options] + 'm' + str + '\\x1B[0m';\n }\n }\n return ret;\n }\n\n function escape(str, except) {\n return str.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, function (ch) {\n if (except && arr.indexOf(except, ch) !== -1) {\n return ch;\n }\n return \"\\\\\" + ch;\n });\n }\n\n function trim(str) {\n return str.replace(/^\\s*|\\s*$/g, \"\");\n }\n\n function trimLeft(str) {\n return str.replace(/^\\s*/, \"\");\n }\n\n function trimRight(str) {\n return str.replace(/\\s*$/, \"\");\n }\n\n function isEmpty(str) {\n return str.length === 0;\n }\n\n\n var string = {\n toArray: toArray,\n pad: pad,\n truncate: truncate,\n multiply: multiply,\n format: format,\n style: style,\n escape: escape,\n trim: trim,\n trimLeft: trimLeft,\n trimRight: trimRight,\n isEmpty: isEmpty\n };\n return extended.define(is.isString, string).define(is.isArray, {style: style}).expose(string).expose({characters: characters});\n }\n\n if (\"undefined\" !== typeof exports) {\n if (\"undefined\" !== typeof module && module.exports) {\n module.exports = defineString(require(\"extended\"), require(\"is-extended\"), require(\"date-extended\"), require(\"array-extended\"));\n\n }\n } else if (\"function\" === typeof define && define.amd) {\n define([\"extended\", \"is-extended\", \"date-extended\", \"array-extended\"], function (extended, is, date, arr) {\n return defineString(extended, is, date, arr);\n });\n } else {\n this.stringExtended = defineString(this.extended, this.isExtended, this.dateExtended, this.arrayExtended);\n }\n\n}).call(this);\n\n\n\n\n\n\n","// Underscore.js 1.9.1\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.1';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","/**\n * @module rules-engine\n *\n * Business logic for interacting with rules documents\n */\n\nconst pouchdbProvider = require('./pouchdb-provider');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst wireupToProvider = require('./provider-wireup');\n\n/**\n * @param {Object} db Medic pouchdb database\n */\nmodule.exports = db => {\n const provider = pouchdbProvider(db);\n return {\n /**\n * @param {Object} settings Settings for the behavior of the rules engine\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's settings document\n */\n initialize: (settings) => wireupToProvider.initialize(provider, settings),\n\n /**\n * @returns {Boolean} True if the rules engine is enabled and ready for use\n */\n isEnabled: () => rulesEmitter.isEnabled() && rulesEmitter.isLatestNoolsSchema(),\n\n /**\n * Refreshes all rules documents for a set of contacts and returns their task documents\n *\n * @param {string[]} contactIds An array of contact ids. If undefined, all contacts are\n * @returns {Promise} All the fresh task docs owned by contactIds\n */\n fetchTasksFor: contactIds => wireupToProvider.fetchTasksFor(provider, contactIds),\n\n /**\n * Refreshes all rules documents and returns the latest target document\n *\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the\n * target scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} Array of fresh targets\n */\n fetchTargets: filterInterval => wireupToProvider.fetchTargets(provider, filterInterval),\n\n /**\n * Indicate that the task documents associated with a given subjectId are dirty.\n *\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To mark the subjectIds as dirty\n */\n updateEmissionsFor: subjectIds => wireupToProvider.updateEmissionsFor(provider, subjectIds),\n\n /**\n * Determines if either the settings or user's hydrated contact document have changed in a way which will impact\n * the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Updated settings\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n */\n rulesConfigChange: (settings) => {\n const cacheIsReset = rulesStateStore.rulesConfigChange(settings);\n if (cacheIsReset) {\n rulesEmitter.shutdown();\n rulesEmitter.initialize(settings);\n }\n },\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => rulesStateStore.getDirtyContacts(),\n };\n};\n","/**\n * @module pouchdb-provider\n *\n * Wireup for accessing rules document data via medic pouch db\n */\n\n// TODO work out how to pass in the logger from node/browser\n/* eslint-disable no-console */\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\nconst uniqBy = require('lodash/uniqBy');\n\nconst RULES_STATE_DOCID = '_local/rulesStateStore';\nconst docsOf = (query) => {\n return query.then(result => {\n const rows = uniqBy(result.rows, 'id');\n return rows.map(row => row.doc).filter(existing => existing);\n });\n};\n\n\nconst medicPouchProvider = db => {\n const self = {\n // PouchDB.query slows down when provided with a large keys array.\n // For users with ~1000 contacts it is ~50x faster to provider a start/end key instead of specifying all ids\n allTasks: prefix => {\n const options = { startkey: `${prefix}-`, endkey: `${prefix}-\\ufff0`, include_docs: true };\n return docsOf(db.query('medic-client/tasks_by_contact', options));\n },\n\n allTaskData: userSettingsDoc => {\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n return Promise.all([\n docsOf(db.query('medic-client/contacts_by_type', { include_docs: true })),\n docsOf(db.query('medic-client/reports_by_subject', { include_docs: true })),\n self.allTasks('requester'),\n ])\n .then(([contactDocs, reportDocs, taskDocs]) => ({ contactDocs, reportDocs, taskDocs, userSettingsId }));\n },\n\n contactsBySubjectId: subjectIds => {\n const keys = subjectIds.map(key => ['shortcode', key]);\n return db.query('medic-client/contacts_by_reference', { keys, include_docs: true })\n .then(results => {\n const shortcodeIds = results.rows.map(result => result.doc._id);\n const idsThatArentShortcodes = subjectIds.filter(id => !results.rows.map(row => row.key[1]).includes(id));\n\n return [...shortcodeIds, ...idsThatArentShortcodes];\n });\n },\n\n stateChangeCallback: docUpdateClosure(db),\n\n commitTargetDoc: (targets, userContactDoc, userSettingsDoc, docTag, force = false) => {\n const userContactId = userContactDoc && userContactDoc._id;\n const userSettingsId = userSettingsDoc && userSettingsDoc._id;\n const _id = `target~${docTag}~${userContactId}~${userSettingsId}`;\n const createNew = () => ({\n _id,\n type: 'target',\n user: userSettingsId,\n owner: userContactId,\n reporting_period: docTag,\n });\n\n const today = moment().startOf('day').valueOf();\n return db.get(_id)\n .catch(createNew)\n .then(existingDoc => {\n if (existingDoc.updated_date === today && !force) {\n return false;\n }\n\n existingDoc.targets = targets;\n existingDoc.updated_date = today;\n return db.put(existingDoc);\n });\n },\n\n commitTaskDocs: taskDocs => {\n if (!taskDocs || taskDocs.length === 0) {\n return Promise.resolve([]);\n }\n\n console.debug(`Committing ${taskDocs.length} task document updates`);\n return db.bulkDocs(taskDocs)\n .catch(err => console.error('Error committing task documents', err));\n },\n\n existingRulesStateStore: () => db.get(RULES_STATE_DOCID).catch(() => ({ _id: RULES_STATE_DOCID })),\n\n tasksByRelation: (contactIds, prefix) => {\n const keys = contactIds.map(contactId => `${prefix}-${contactId}`);\n return docsOf(db.query('medic-client/tasks_by_contact', { keys, include_docs: true }));\n },\n\n taskDataFor: (contactIds, userSettingsDoc) => {\n if (!contactIds || contactIds.length === 0) {\n return Promise.resolve({});\n }\n\n return docsOf(db.allDocs({ keys: contactIds, include_docs: true }))\n .then(contactDocs => {\n const subjectIds = contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set(contactIds));\n\n const keys = Array.from(subjectIds);\n return Promise.all([\n docsOf(db.query('medic-client/reports_by_subject', { keys, include_docs: true })),\n self.tasksByRelation(contactIds, 'requester'),\n ])\n .then(([reportDocs, taskDocs]) => {\n // tighten the connection between reports and contacts\n // a report will only be allowed to generate tasks for a single contact!\n reportDocs = reportDocs.filter(report => {\n const subjectId = registrationUtils.getSubjectId(report);\n return subjectIds.has(subjectId);\n });\n\n return {\n userSettingsId: userSettingsDoc && userSettingsDoc._id,\n contactDocs,\n reportDocs,\n taskDocs,\n };\n });\n });\n },\n };\n\n return self;\n};\n\nmedicPouchProvider.RULES_STATE_DOCID = RULES_STATE_DOCID;\n\nconst docUpdateClosure = db => {\n // previousResult helps avoid conflict errors if this functions is used asynchronously\n let previousResult = Promise.resolve();\n return (baseDoc, assigned) => {\n Object.assign(baseDoc, assigned);\n\n previousResult = previousResult\n .then(() => db.put(baseDoc))\n .then(updatedDoc => { baseDoc._rev = updatedDoc.rev; })\n .catch(err => console.error(`Error updating ${baseDoc._id}: ${err}`))\n .then(() => {\n // unsure of how browsers handle long promise chains, so break the chain when possible\n previousResult = Promise.resolve();\n });\n\n return previousResult;\n };\n};\n\nmodule.exports = medicPouchProvider;\n","/**\n * @module wireup\n *\n * Wireup a data provider to the rules-engine\n */\n\nconst moment = require('moment');\nconst registrationUtils = require('@medic/registration-utils');\n\nconst TaskStates = require('./task-states');\nconst refreshRulesEmissions = require('./refresh-rules-emissions');\nconst rulesEmitter = require('./rules-emitter');\nconst rulesStateStore = require('./rules-state-store');\nconst updateTemporalStates = require('./update-temporal-states');\nconst calendarInterval = require('@medic/calendar-interval');\n\nlet wireupOptions;\n\nmodule.exports = {\n /**\n * @param {Object} provider A data provider\n * @param {Object} settings Settings for the behavior of the provider\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object[]} settings.targets Target definitions from settings doc\n * @param {Boolean} settings.enableTasks Flag to enable tasks\n * @param {Boolean} settings.enableTargets Flag to enable targets\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} userDoc User's hydrated contact document\n */\n initialize: (provider, settings) => {\n const isEnabled = rulesEmitter.initialize(settings);\n if (!isEnabled) {\n return Promise.resolve();\n }\n\n const { enableTasks=true, enableTargets=true } = settings;\n wireupOptions = { enableTasks, enableTargets };\n\n return provider\n .existingRulesStateStore()\n .then(existingStateDoc => {\n if (!rulesEmitter.isLatestNoolsSchema()) {\n throw Error('Rules Engine: Updates to the nools schema are required');\n }\n\n const contactClosure = updatedState => provider.stateChangeCallback(\n existingStateDoc,\n { rulesStateStore: updatedState }\n );\n const needsBuilding = rulesStateStore.load(existingStateDoc.rulesStateStore, settings, contactClosure);\n return handleIntervalTurnover(provider, settings).then(() => {\n if (!needsBuilding) {\n return;\n }\n\n rulesStateStore.build(settings, contactClosure);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n * Fetches all tasks in non-terminal state owned by the contacts\n * Updates the temporal states of the task documents\n * Commits those changes (async)\n *\n * @param {Object} provider A data provider\n * @param {string[]} contactIds An array of contact ids. If undefined, all task documents\n * @returns {Promise} All the fresh task docs owned by contacts\n */\n fetchTasksFor: (provider, contactIds) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTasks) {\n return disabledResponse();\n }\n\n return enqueue(() => {\n const calculationTimestamp = Date.now();\n return refreshRulesEmissionForContacts(provider, calculationTimestamp, contactIds)\n .then(() => contactIds ? provider.tasksByRelation(contactIds, 'owner') : provider.allTasks('owner'))\n .then(tasksToDisplay => {\n const docsToCommit = updateTemporalStates(tasksToDisplay, calculationTimestamp);\n provider.commitTaskDocs(docsToCommit);\n return tasksToDisplay.filter(taskDoc => taskDoc.state === TaskStates.Ready);\n });\n });\n },\n\n /**\n * Refreshes the rules emissions for all contacts\n *\n * @param {Object} provider A data provider\n * @param {Object} filterInterval Target emissions with date within the interval will be aggregated into the target\n * scores\n * @param {Integer} filterInterval.start Start timestamp of interval\n * @param {Integer} filterInterval.end End timestamp of interval\n * @returns {Promise} The fresh aggregate target doc\n */\n fetchTargets: (provider, filterInterval) => {\n if (!rulesEmitter.isEnabled() || !wireupOptions.enableTargets) {\n return disabledResponse();\n }\n\n const calculationTimestamp = Date.now();\n const targetEmissionFilter = filterInterval && (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n return enqueue(() => {\n return refreshRulesEmissionForContacts(provider, calculationTimestamp)\n .then(() => {\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval).then(() => targets);\n });\n });\n },\n\n /**\n * Indicate that the rules emissions associated with a given subjectId are dirty\n *\n * @param {Object} provider A data provider\n * @param {string[]} subjectIds An array of subject ids\n *\n * @returns {Promise} To complete the transaction marking the subjectIds as dirty\n */\n updateEmissionsFor: (provider, subjectIds) => {\n if (!subjectIds) {\n subjectIds = [];\n }\n\n if (subjectIds && !Array.isArray(subjectIds)) {\n subjectIds = [subjectIds];\n }\n\n // this function accepts subject ids, but rulesStateStore accepts a contact id, so a conversion is required\n return provider.contactsBySubjectId(subjectIds)\n .then(contactIds => rulesStateStore.markDirty(contactIds));\n },\n};\n\nlet refreshQueue = Promise.resolve();\nconst enqueue = callback => {\n const listeners = [];\n const eventQueue = [];\n const emit = evtName => {\n // we have to emit `queued` immediately, but there are no listeners listening at this point\n // eventQueue will keep a list of listener-less events. when listeners are registered, we check if they\n // have events in eventQueue, and call their callback immediately for each matching queued event.\n if (!listeners[evtName]) {\n return eventQueue.push(evtName);\n }\n listeners[evtName].forEach(callback => callback());\n };\n\n emit('queued');\n refreshQueue = refreshQueue.then(() => {\n emit('running');\n return callback();\n });\n\n refreshQueue.on = (evtName, callback) => {\n listeners[evtName] = listeners[evtName] || [];\n listeners[evtName].push(callback);\n eventQueue.forEach(queuedEvent => queuedEvent === evtName && callback());\n return refreshQueue;\n };\n\n return refreshQueue;\n};\n\nconst disabledResponse = () => {\n const p = Promise.resolve([]);\n p.on = () => p;\n return p;\n};\n\nconst refreshRulesEmissionForContacts = (provider, calculationTimestamp, contactIds) => {\n const refreshAndSave = (freshData, updatedContactIds) => (\n refreshRulesEmissions(freshData, calculationTimestamp, wireupOptions)\n .then(refreshed => Promise.all([\n rulesStateStore.storeTargetEmissions(updatedContactIds, refreshed.targetEmissions),\n provider.commitTaskDocs(refreshed.updatedTaskDocs),\n ]))\n );\n\n const refreshForAllContacts = (calculationTimestamp) => (\n provider.allTaskData(rulesStateStore.currentUserSettings())\n .then(freshData => (\n refreshAndSave(freshData)\n .then(() => {\n const contactIds = freshData.contactDocs.map(doc => doc._id);\n\n const subjectIds = freshData.contactDocs.reduce((agg, contactDoc) => {\n registrationUtils.getSubjectIds(contactDoc).forEach(subjectId => agg.add(subjectId));\n return agg;\n }, new Set());\n\n const headlessSubjectIds = freshData.reportDocs\n .map(doc => registrationUtils.getSubjectId(doc))\n .filter(subjectId => !subjectIds.has(subjectId));\n\n rulesStateStore.markAllFresh(calculationTimestamp, [...contactIds, ...headlessSubjectIds]);\n })\n ))\n );\n\n const refreshForKnownContacts = (calculationTimestamp, contactIds) => {\n const dirtyContactIds = contactIds.filter(contactId => rulesStateStore.isDirty(contactId));\n return provider.taskDataFor(dirtyContactIds, rulesStateStore.currentUserSettings())\n .then(freshData => refreshAndSave(freshData, dirtyContactIds))\n .then(() => {\n rulesStateStore.markFresh(calculationTimestamp, dirtyContactIds);\n });\n };\n\n return handleIntervalTurnover(provider, { monthStartDate: rulesStateStore.getMonthStartDate() }).then(() => {\n if (contactIds) {\n return refreshForKnownContacts(calculationTimestamp, contactIds);\n }\n\n // If the contact state store does not contain all contacts, build up that list (contact doc ids + headless ids in\n // reports/tasks)\n if (!rulesStateStore.hasAllContacts()) {\n return refreshForAllContacts(calculationTimestamp);\n }\n\n // Once the contact state store has all contacts, trust it and only refresh those marked dirty\n return refreshForKnownContacts(calculationTimestamp, rulesStateStore.getContactIds());\n });\n};\n\nconst storeTargetsDoc = (provider, targets, filterInterval, force = false) => {\n const targetDocTag = filterInterval ? moment(filterInterval.end).format('YYYY-MM') : 'latest';\n const minifyTarget = target => ({ id: target.id, value: target.value });\n\n return provider.commitTargetDoc(\n targets.map(minifyTarget),\n rulesStateStore.currentUserContact(),\n rulesStateStore.currentUserSettings(),\n targetDocTag,\n force\n );\n};\n\n// Because we only save the `target` document once per day (when we calculate targets for the first time),\n// we're losing all updates to targets that happened in the last day of the reporting period.\n// This function takes the last saved state (which may be stale) and generates the targets doc for the corresponding\n// reporting interval (that includes the date when the state was calculated).\n// We don't recalculate the state prior to this because we support targets that count events infinitely to emit `now`,\n// which means that they would all be excluded from the emission filter (being outside the past reporting interval).\n// https://github.com/medic/cht-core/issues/6209\nconst handleIntervalTurnover = (provider, { monthStartDate }) => {\n if (!rulesStateStore.isLoaded() || !wireupOptions.enableTargets) {\n return Promise.resolve();\n }\n\n const stateCalculatedAt = rulesStateStore.stateLastUpdatedAt();\n if (!stateCalculatedAt) {\n return Promise.resolve();\n }\n\n const currentInterval = calendarInterval.getCurrent(monthStartDate);\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n if (moment(stateCalculatedAt).isBetween(currentInterval.start, currentInterval.end, null, '[]')) {\n return Promise.resolve();\n }\n\n const filterInterval = calendarInterval.getInterval(monthStartDate, stateCalculatedAt);\n const targetEmissionFilter = (emission => {\n // 4th parameter of isBetween represents inclusivity. By default or using ( is exclusive, [ is inclusive\n return moment(emission.date).isBetween(filterInterval.start, filterInterval.end, null, '[]');\n });\n\n const targets = rulesStateStore.aggregateStoredTargetEmissions(targetEmissionFilter);\n return storeTargetsDoc(provider, targets, filterInterval, true);\n};\n","/**\n * @module refresh-rules-emissions\n * Uses rules-emitter to calculate the fresh emissions for a set of contacts, their reports, and their tasks\n * Creates or updates one task document per unique emission id\n * Cancels task documents in non-terminal states if they were not emitted\n *\n * @requires rules-emitter to be initialized\n */\n\nconst rulesEmitter = require('./rules-emitter');\nconst TaskStates = require('./task-states');\nconst transformTaskEmissionToDoc = require('./transform-task-emission-to-doc');\n\n/**\n * @param {Object[]} freshData.contactDocs A set of contact documents\n * @param {Object[]} freshData.reportDocs All of the contacts' reports\n * @param {Object[]} freshData.taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n * @param {Object[]} freshData.userSettingsId The id of the user's settings document\n *\n * @param {int} calculationTimestamp Timestamp for the round of rules calculations\n *\n * @param {Object=} [options] Options for the behavior when refreshing rules\n * @param {Boolean} [options.enableTasks=true] Flag to enable tasks\n * @param {Boolean} [options.enableTargets=true] Flag to enable targets\n *\n * @returns {Object} result\n * @returns {Object[]} result.targetEmissions Array of raw target emissions\n * @returns {Object[]} result.updatedTaskDocs Array of updated task documents\n */\nmodule.exports = (freshData = {}, calculationTimestamp = Date.now(), { enableTasks=true, enableTargets=true }={}) => {\n const { contactDocs = [], reportDocs = [], taskDocs = [] } = freshData;\n return rulesEmitter.getEmissionsFor(contactDocs, reportDocs, taskDocs)\n .then(emissions => Promise.all([\n enableTasks ? getUpdatedTaskDocs(emissions.tasks, freshData, calculationTimestamp, enableTasks) : [],\n enableTargets ? emissions.targets : [],\n ]))\n .then(([updatedTaskDocs, targetEmissions]) => ({ updatedTaskDocs, targetEmissions }));\n};\n\nconst getUpdatedTaskDocs = (taskEmissions, freshData, calculationTimestamp) => {\n const { taskDocs = [], userSettingsId } = freshData;\n const { winners: emissionIdToLatestDocMap, duplicates: duplicateTaskDocs } = disambiguateTaskDocs(\n taskDocs,\n calculationTimestamp\n );\n\n const timelyEmissions = taskEmissions.filter(emission => TaskStates.isTimely(emission, calculationTimestamp));\n const taskTransforms = disambiguateEmissions(timelyEmissions, calculationTimestamp)\n .map(taskEmission => {\n const existingDoc = emissionIdToLatestDocMap[taskEmission._id];\n return transformTaskEmissionToDoc(taskEmission, calculationTimestamp, userSettingsId, existingDoc);\n });\n\n const freshTaskDocs = taskTransforms.map(doc => doc.taskDoc);\n const cancelledDocs = getCancellationUpdates(freshTaskDocs, freshData.taskDocs, calculationTimestamp);\n const cancelledDuplicatedDocs = getDeduplicationUpdates(duplicateTaskDocs, calculationTimestamp);\n const updatedTaskDocs = taskTransforms.filter(doc => doc.isUpdated).map(result => result.taskDoc);\n return [...updatedTaskDocs, ...cancelledDocs, ...cancelledDuplicatedDocs];\n};\n\n/**\n * Examine the existing task documents which were previously emitted by the same contact\n * Cancel any doc that is in a non-terminal state and does not have an emission to keep it alive\n */\nconst getCancellationUpdates = (freshDocs, existingTaskDocs = [], calculatedAt) => {\n const existingNonTerminalTaskDocs = existingTaskDocs.filter(doc => !TaskStates.isTerminal(doc.state));\n const currentEmissionIds = new Set(freshDocs.map(doc => doc.emission._id));\n\n return existingNonTerminalTaskDocs\n .filter(doc => !currentEmissionIds.has(doc.emission._id))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt));\n};\n\n/**\n * All duplicate task docs that are not in a terminal state are \"Cancelled\" with a \"duplicate\" reason\n * @param {Array} duplicatedTaskDocs - array of task docs that exist in the local DB\n * @param {number} calculatedAt - Timestamp for the round of rules calculations\n * @returns {Array} - task docs with updated state\n */\nconst getDeduplicationUpdates = (duplicatedTaskDocs, calculatedAt) => {\n return duplicatedTaskDocs\n .filter(doc => !TaskStates.isTerminal(doc.state))\n .map(doc => TaskStates.setStateOnTaskDoc(doc, TaskStates.Cancelled, calculatedAt, 'duplicate'));\n};\n\n/*\nIt is possible to receive multiple emissions with the same id. When this happens, we need to pick one winner.\nWe pick the \"most ready\" emission.\n*/\nconst disambiguateEmissions = (taskEmissions, forTime) => {\n const winners = taskEmissions.reduce((agg, emission) => {\n if (!agg[emission._id]) {\n agg[emission._id] = emission;\n } else {\n const incomingState = TaskStates.calculateState(emission, forTime) || TaskStates.Cancelled;\n const currentState = TaskStates.calculateState(agg[emission._id], forTime) || TaskStates.Cancelled;\n if (TaskStates.isMoreReadyThan(incomingState, currentState)) {\n agg[emission._id] = emission;\n }\n }\n return agg;\n }, {});\n\n return Object.keys(winners).map(key => winners[key]); // Object.values()\n};\n\n/**\n * It's possible to have multiple task docs with the same emission id. (For example, when the same account logs in\n * on multiple devices). When this happens, we pick the \"most ready\" most recent task. However, tasks that are authored\n * in the future are discarded.\n * @param {Array} taskDocs - An array of already exiting task documents\n * @param {number} forTime - current calculation timestamp\n * @returns {Object} result\n * @returns {Object} result.winners - A map of emission id to task pairs\n * @returns {Array} result.duplicates - A list of task documents that are duplicates and need to be cancelled\n */\nconst disambiguateTaskDocs = (taskDocs, forTime) => {\n const duplicates = [];\n const winners = {};\n\n const taskDocsByEmissionId = mapEmissionIdToTaskDocs(taskDocs, forTime);\n\n Object.keys(taskDocsByEmissionId).forEach(emissionId => {\n taskDocsByEmissionId[emissionId].forEach(taskDoc => {\n if (!winners[emissionId]) {\n winners[emissionId] = taskDoc;\n return;\n }\n\n const stateComparison = TaskStates.compareState(taskDoc.state, winners[emissionId].state);\n if (\n // if taskDoc is more ready\n stateComparison < 0 ||\n // or taskDoc is more recent, when having the same state\n (stateComparison === 0 && taskDoc.authoredOn > winners[emissionId].authoredOn)\n ) {\n duplicates.push(winners[emissionId]);\n winners[emissionId] = taskDoc;\n } else {\n duplicates.push(taskDoc);\n }\n });\n });\n\n return { winners, duplicates };\n};\n\nconst mapEmissionIdToTaskDocs = (taskDocs, maxTimestamp) => {\n const tasksByEmission = {};\n taskDocs\n // mitigate the fallout of a user who rewinds their system-clock after creating task docs\n .filter(doc => doc.authoredOn <= maxTimestamp)\n .forEach(doc => {\n const emissionId = doc.emission._id;\n if (!tasksByEmission[emissionId]) {\n tasksByEmission[emissionId] = [];\n }\n tasksByEmission[emissionId].push(doc);\n });\n return tasksByEmission;\n};\n","/**\n * @module rules-emitter\n * Encapsulates interactions with the nools library\n * Handles marshaling of documents into nools facts\n * Promisifies the execution of partner \"rules\" code\n * Ensures memory allocated by nools is freed after each run\n */\nconst nools = require('nools');\nconst nootils = require('medic-nootils');\nconst registrationUtils = require('@medic/registration-utils');\n\nlet flow;\n\n/**\n* Sets the rules emitter to an uninitialized state.\n*/\nconst shutdown = () => {\n nools.deleteFlows();\n flow = undefined;\n};\n\nmodule.exports = {\n /**\n * Initializes the rules emitter\n *\n * @param {Object} settings Settings for the behavior of the rules emitter\n * @param {Object} settings.rules Rules code from settings doc\n * @param {Object[]} settings.taskSchedules Task schedules from settings doc\n * @param {Object} settings.contact The logged in user's contact document\n * @returns {Boolean} Success\n */\n initialize: (settings) => {\n if (flow) {\n throw Error('Attempted to initialize the rules emitter multiple times.');\n }\n\n if (!settings.rules) {\n return false;\n }\n\n shutdown();\n\n try {\n const settingsDoc = { tasks: { schedules: settings.taskSchedules } };\n const nootilsInstance = nootils(settingsDoc);\n flow = nools.compile(settings.rules, {\n name: 'medic',\n scope: {\n Utils: nootilsInstance,\n user: settings.contact,\n },\n });\n } catch (err) {\n shutdown();\n throw err;\n }\n\n return !!flow;\n },\n\n /**\n * When upgrading to version 3.8, partners are required to make schema changes in their partner code\n * TODO: Add link to documentation\n *\n * @returns True if the schema changes are in place\n */\n isLatestNoolsSchema: () => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot determine schema version');\n }\n\n const Task = flow.getDefined('task');\n const Target = flow.getDefined('target');\n const hasProperty = (obj, attr) => Object.hasOwnProperty.call(obj, attr);\n return hasProperty(Task.prototype, 'readyStart') &&\n hasProperty(Task.prototype, 'readyEnd') &&\n hasProperty(Target.prototype, 'contact');\n },\n\n /**\n * Runs the partner's rules code for a set of documents and returns all emissions from nools\n *\n * @param {Object[]} contactDocs A set of contact documents\n * @param {Object[]} reportDocs All of the contacts' reports\n * @param {Object[]} taskDocs All of the contacts' task documents (must be linked by requester to a contact)\n *\n * @returns {Promise} emissions The raw emissions from nools\n * @returns {Object[]} emissions.tasks Array of task emissions\n * @returns {Object[]} emissions.targets Array of target emissions\n */\n getEmissionsFor: (contactDocs, reportDocs = [], taskDocs = []) => {\n if (!flow) {\n throw Error('task emitter is not enabled -- cannot get emissions');\n }\n\n if (!Array.isArray(contactDocs)) {\n throw Error('invalid argument: contactDocs is expected to be an array');\n }\n\n if (!Array.isArray(reportDocs)) {\n throw Error('invalid argument: reportDocs is expected to be an array');\n }\n\n if (!Array.isArray(taskDocs)) {\n throw Error('invalid argument: taskDocs is expected to be an array');\n }\n\n const session = startSession();\n try {\n const facts = marshalDocsIntoNoolsFacts(contactDocs, reportDocs, taskDocs);\n facts.forEach(session.assert);\n } catch (err) {\n session.dispose();\n throw err;\n }\n\n return session.match();\n },\n\n /**\n * @returns True if the rules emitter is initialized and ready for use\n */\n isEnabled: () => !!flow,\n\n shutdown,\n};\n\nconst startSession = function() {\n if (!flow) {\n throw Error('Failed to start task session. Not initialized');\n }\n\n const session = flow.getSession();\n const tasks = [];\n const targets = [];\n session.on('task', task => tasks.push(task));\n session.on('target', target => targets.push(target));\n\n return {\n assert: session.assert.bind(session),\n dispose: session.dispose.bind(session),\n\n // session.match can return a thenable but not a promise. so wrap it in a real promise\n match: () => new Promise((resolve, reject) => {\n session.match(err => {\n session.dispose();\n if (err) {\n return reject(err);\n }\n\n resolve({ tasks, targets });\n });\n }),\n };\n};\n\nconst marshalDocsIntoNoolsFacts = (contactDocs, reportDocs, taskDocs) => {\n const Contact = flow.getDefined('contact');\n\n const factByContactId = contactDocs.reduce((agg, contact) => {\n agg[contact._id] = new Contact({ contact, reports: [], tasks: [] });\n return agg;\n }, {});\n\n const factBySubjectId = contactDocs.reduce((agg, contactDoc) => {\n const subjectIds = registrationUtils.getSubjectIds(contactDoc);\n for (const subjectId of subjectIds) {\n if (!agg[subjectId]) {\n agg[subjectId] = factByContactId[contactDoc._id];\n }\n }\n return agg;\n }, {});\n\n const addHeadlessContact = (contactId) => {\n const contact = contactId ? { _id: contactId } : undefined;\n const newFact = new Contact({ contact, reports: [], tasks: [] });\n factByContactId[contactId] = factBySubjectId[contactId] = newFact;\n return newFact;\n };\n\n for (const report of reportDocs) {\n const subjectIdInReport = registrationUtils.getSubjectId(report);\n const factOfPatient = factBySubjectId[subjectIdInReport] || addHeadlessContact(subjectIdInReport);\n factOfPatient.reports.push(report);\n }\n\n if (Object.hasOwnProperty.call(Contact.prototype, 'tasks')) {\n for (const task of taskDocs) {\n const sourceId = task.requester;\n const factOfPatient = factBySubjectId[sourceId] || addHeadlessContact(sourceId);\n factOfPatient.tasks.push(task);\n }\n }\n\n\n return Object.keys(factByContactId).map(key => {\n factByContactId[key].reports = factByContactId[key].reports.sort((a, b) => a.reported_date - b.reported_date);\n return factByContactId[key];\n }); // Object.values(factByContactId)\n};\n","/**\n * @module rules-state-store\n * In-memory datastore containing\n * 1. Details on the state of each contact's rules calculations\n * 2. Target emissions @see target-state\n */\nconst md5 = require('md5');\nconst calendarInterval = require('@medic/calendar-interval');\nconst targetState = require('./target-state');\n\nconst EXPIRE_CALCULATION_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nlet state;\nlet currentUserContact;\nlet currentUserSettings;\nlet onStateChange;\n\nconst self = {\n /**\n * Initializes the rules-state-store from an existing state. If existing state is invalid, builds an empty state.\n *\n * @param {Object} existingState State object previously passed to the stateChangeCallback\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n * @returns {Boolean} that represents whether or not the state needs to be rebuilt\n */\n load: (existingState, settings, stateChangeCallback) => {\n if (state) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = existingState;\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n setOnChangeState(stateChangeCallback);\n\n const rulesConfigHash = hashRulesConfig(settings);\n if (state && state.rulesConfigHash !== rulesConfigHash) {\n state.stale = true;\n }\n\n return !state || state.stale;\n },\n\n /**\n * Initializes an empty rules-state-store.\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @param {Object} settings.contact User's hydrated contact document\n * @param {Object} settings.user User's user-settings document\n * @param {number} settings.monthStartDate reporting interval start date\n * @param {Object} stateChangeCallback Callback which is invoked whenever the state changes.\n * Receives the updated state as the only parameter.\n */\n build: (settings, stateChangeCallback) => {\n if (state && !state.stale) {\n throw Error('Attempted to initialize the rules-state-store multiple times.');\n }\n\n state = {\n rulesConfigHash: hashRulesConfig(settings),\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n setOnChangeState(stateChangeCallback);\n return onStateChange(state);\n },\n\n /**\n * \"Dirty\" indicates that the contact's task documents are not up to date. They should be refreshed before being used.\n *\n * The dirty state can be due to:\n * 1. The time of a contact's most recent task calculation is unknown\n * 2. The contact's most recent task calculation expires\n * 3. The contact is explicitly marked as dirty\n * 4. Configurations impacting rules calculations have changed\n *\n * @param {string} contactId The id of the contact to test for dirtiness\n * @returns {Boolean} True if dirty\n */\n isDirty: contactId => {\n if (!state.contactState[contactId]) {\n return true;\n }\n\n const now = Date.now();\n const { calculatedAt, expireAt, isDirty } = state.contactState[contactId];\n return !expireAt ||\n isDirty ||\n calculatedAt > now || /* system clock changed */\n expireAt < now; /* isExpired */\n },\n\n /**\n * Determines if either the settings document or user's hydrated contact document have changed in a way which\n * will impact the result of rules calculations.\n * If they have changed in a meaningful way, the calculation state of all contacts is reset\n *\n * @param {Object} settings Settings for the behavior of the rules store\n * @returns {Boolean} True if the state of all contacts has been reset\n */\n rulesConfigChange: (settings) => {\n const rulesConfigHash = hashRulesConfig(settings);\n if (state.rulesConfigHash !== rulesConfigHash) {\n state = {\n rulesConfigHash,\n contactState: {},\n targetState: targetState.createEmptyState(settings.targets),\n monthStartDate: settings.monthStartDate,\n };\n currentUserContact = settings.contact;\n currentUserSettings = settings.user;\n\n onStateChange(state);\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {int} calculatedAt Timestamp of the calculation\n * @param {string[]} contactIds Array of contact ids to be marked as freshly calculated\n */\n markFresh: (calculatedAt, contactIds) => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n const reportingInterval = calendarInterval.getCurrent(state.monthStartDate);\n const defaultExpiry = calculatedAt + EXPIRE_CALCULATION_AFTER_MS;\n\n for (const contactId of contactIds) {\n state.contactState[contactId] = {\n calculatedAt,\n expireAt: Math.min(reportingInterval.end, defaultExpiry),\n };\n }\n\n return onStateChange(state);\n },\n\n /**\n * @param {string[]} contactIds Array of contact ids to be marked as dirty\n */\n markDirty: contactIds => {\n if (!Array.isArray(contactIds)) {\n contactIds = [contactIds];\n }\n contactIds = contactIds.filter(id => id);\n\n if (contactIds.length === 0) {\n return;\n }\n\n for (const contactId of contactIds) {\n if (!state.contactState[contactId]) {\n state.contactState[contactId] = {};\n }\n\n state.contactState[contactId].isDirty = true;\n }\n\n return onStateChange(state);\n },\n\n /**\n * @returns {string[]} The id of all contacts tracked by the store\n */\n getContactIds: () => Object.keys(state.contactState),\n\n /**\n * The rules system supports the concept of \"headless\" reports and \"headless\" task documents. In these scenarios,\n * a report exists on a user's device while the associated contact document of that report is not on the device.\n * A common scenario associated with this case is during supervisor workflows where supervisors sync reports with the\n * needs_signoff attribute but not the associated patient.\n *\n * In these cases, getting a list of \"all the contacts with rules\" requires us to look not just through contact\n * docs, but also through reports. To avoid this costly operation, the rules-state-store maintains a flag which\n * indicates if the contact ids in the store can serve as a trustworthy authority.\n *\n * markAllFresh should be called when the list of contact ids within the store is the complete set of contacts with\n * rules\n */\n markAllFresh: (calculatedAt, contactIds) => {\n state.allContactIds = true;\n return self.markFresh(calculatedAt, contactIds);\n },\n\n /**\n * @returns True if markAllFresh has been called on the current store state.\n */\n hasAllContacts: () => !!state.allContactIds,\n\n /**\n * @returns {string} User contact document\n */\n currentUserContact: () => currentUserContact,\n\n /**\n * @returns {string} User settings document\n */\n currentUserSettings: () => currentUserSettings,\n\n /**\n * @returns {number} The timestamp when the current loaded state was last updated\n */\n stateLastUpdatedAt: () => state.calculatedAt,\n\n /**\n * @returns {number} current monthStartDate\n */\n getMonthStartDate: () => state.monthStartDate,\n\n /**\n * @returns {boolean} whether or not the state is loaded\n */\n isLoaded: () => !!state,\n\n /**\n * Store a set of target emissions which were emitted by refreshing a set of contacts\n *\n * @param {string[]} contactIds An array of contact ids which produced these targetEmissions by being refreshed.\n * If undefined, all contacts are updated.\n * @param {Object[]} targetEmissions An array of target emissions (the result of the rules-emitter).\n */\n storeTargetEmissions: (contactIds, targetEmissions) => {\n const isUpdated = targetState.storeTargetEmissions(state.targetState, contactIds, targetEmissions);\n if (isUpdated) {\n return onStateChange(state);\n }\n },\n\n /**\n * Aggregates the stored target emissions into target models\n *\n * @param {Function(emission)=} targetEmissionFilter Filter function to filter which target emissions should\n * be aggregated\n * @example aggregateStoredTargetEmissions(emission => emission.date > moment().startOf('month').valueOf())\n *\n * @returns {Object[]} result\n * @returns {string} result[n].* All attributes of the target as defined in the settings doc\n * @returns {Integer} result[n].total The total number of unique target emission ids matching instanceFilter\n * @returns {Integer} result[n].pass The number of unique target emission ids matching instanceFilter with the\n * latest emission with truthy \"pass\"\n * @returns {Integer} result[n].percent The percentage of pass/total\n */\n aggregateStoredTargetEmissions: targetEmissionFilter => targetState.aggregateStoredTargetEmissions(\n state.targetState,\n targetEmissionFilter\n ),\n\n /**\n * Returns a list of UUIDs of tracked contacts that are marked as dirty\n * @returns {Array} list of dirty contacts UUIDs\n */\n getDirtyContacts: () => self.getContactIds().filter(self.isDirty),\n};\n\nconst hashRulesConfig = (settings) => {\n const asString = JSON.stringify(settings);\n return md5(asString);\n};\n\nconst setOnChangeState = (stateChangeCallback) => {\n onStateChange = (state) => {\n state.calculatedAt = new Date().getTime();\n\n if (stateChangeCallback && typeof stateChangeCallback === 'function') {\n return stateChangeCallback(state);\n }\n };\n};\n\n// ensure all exported functions are only ever called after initialization\nmodule.exports = Object.keys(self).reduce((agg, key) => {\n agg[key] = (...args) => {\n if (!['build', 'load', 'isLoaded'].includes(key) && (!state || !state.contactState)) {\n throw Error(`Invalid operation: Attempted to invoke rules-state-store.${key} before call to build or load`);\n }\n\n return self[key](...args);\n };\n return agg;\n}, {});\n","/**\n * @module target-state\n *\n * Stores raw target-emissions in a minified, efficient, deterministic structure\n * Handles removal of \"cancelled\" target emissions\n * Aggregates target emissions into targets\n */\n\n/** @summary state\n * Functions in this module all accept a \"state\" parameter or return a \"state\" object.\n * This state has the following structure:\n *\n * @example\n * {\n * target.id: {\n * id: 'target_id',\n * type: 'count',\n * goal: 0,\n * ..\n *\n * emissions: {\n * emission.id: {\n * requestor.id: {\n * pass: boolean,\n * date: timestamp,\n * order: timestamp,\n * },\n * ..\n * },\n * ..\n * }\n * },\n * ..\n * }\n */\n\nmodule.exports = {\n /**\n * Builds an empty target-state.\n *\n * @param {Object[]} targets An array of target definitions\n */\n createEmptyState: (targets=[]) => {\n return targets\n .reduce((agg, definition) => {\n agg[definition.id] = Object.assign({}, definition, { emissions: {} });\n return agg;\n }, {});\n },\n\n storeTargetEmissions: (state, contactIds, targetEmissions) => {\n let isUpdated = false;\n if (!Array.isArray(targetEmissions)) {\n throw Error('targetEmissions argument must be an array');\n }\n\n // Remove all emissions that were previously emitted by the contact (\"cancelled emissions\")\n if (!contactIds) {\n for (const targetId of Object.keys(state)) {\n state[targetId].emissions = {};\n }\n } else {\n for (const contactId of contactIds) {\n for (const targetId of Object.keys(state)) {\n for (const emissionId of Object.keys(state[targetId].emissions)) {\n const emission = state[targetId].emissions[emissionId];\n if (emission[contactId]) {\n delete emission[contactId];\n isUpdated = true;\n }\n }\n }\n }\n }\n\n // Merge the emission data into state\n for (const emission of targetEmissions) {\n const target = state[emission.type];\n const requestor = emission.contact && emission.contact._id;\n if (target && requestor && !emission.deleted) {\n const targetRequestors = target.emissions[emission._id] = target.emissions[emission._id] || {};\n targetRequestors[requestor] = {\n pass: !!emission.pass,\n groupBy: emission.groupBy,\n date: emission.date,\n order: emission.contact.reported_date || -1,\n };\n isUpdated = true;\n }\n }\n\n return isUpdated;\n },\n\n aggregateStoredTargetEmissions: (state, targetEmissionFilter) => {\n const pick = (obj, attrs) => attrs\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(obj, attr)) {\n agg[attr] = obj[attr];\n }\n return agg;\n }, {});\n\n const scoreTarget = target => {\n const emissionIds = Object.keys(target.emissions);\n const relevantEmissions = emissionIds\n // emissions passing the \"targetEmissionFilter\"\n .map(emissionId => {\n const requestorIds = Object.keys(target.emissions[emissionId]);\n const filteredInstanceIds = requestorIds.filter(requestorId => {\n return !targetEmissionFilter || targetEmissionFilter(target.emissions[emissionId][requestorId]);\n });\n return pick(target.emissions[emissionId], filteredInstanceIds);\n })\n\n // if there are multiple emissions with the same id emitted by different contacts, disambiguate them\n .map(emissionsByRequestor => emissionOfLatestRequestor(emissionsByRequestor))\n .filter(emission => emission);\n\n const passingThreshold = target.passesIfGroupCount && target.passesIfGroupCount.gte;\n if (!passingThreshold) {\n return {\n pass: relevantEmissions.filter(emission => emission.pass).length,\n total: relevantEmissions.length,\n };\n }\n\n const countEmissionsByGroup = relevantEmissions\n .filter(emission => emission.groupBy)\n .reduce((agg, curr) => {\n if (!agg[curr.groupBy]) {\n agg[curr.groupBy] = 0;\n }\n\n agg[curr.groupBy]++;\n return agg;\n }, {});\n\n const groups = Object.keys(countEmissionsByGroup);\n return {\n pass: groups.filter(group => countEmissionsByGroup[group] >= passingThreshold).length,\n total: groups.length,\n };\n };\n\n const aggregateTarget = target => {\n const aggregated = pick(\n target,\n ['id', 'type', 'goal', 'translation_key', 'name', 'icon', 'subtitle_translation_key', 'visible']\n );\n aggregated.value = scoreTarget(target);\n\n if (aggregated.type === 'percent') {\n aggregated.value.percent = aggregated.value.total ?\n Math.round(aggregated.value.pass * 100 / aggregated.value.total) : 0;\n }\n\n return aggregated;\n };\n\n const emissionOfLatestRequestor = emissionsByRequestor => {\n return Object.keys(emissionsByRequestor).reduce((previousValue, requestorId) => {\n const current = emissionsByRequestor[requestorId];\n if (!previousValue || !previousValue.order || current.order > previousValue.order) {\n return current;\n }\n return previousValue;\n }, undefined);\n };\n\n return Object.keys(state).map(targetId => aggregateTarget(state[targetId]));\n },\n};\n","/**\n * @module task-states\n * As defined by the FHIR task standard https://www.hl7.org/fhir/task.html#statemachine\n */\n\nconst moment = require('moment');\n\n/**\n * Problems:\n * If all emissions are converted to documents, heavy users will create thousands of legacy task docs after upgrading\n * to this rules-engine.\n * In order to purge task documents, we need to guarantee that they won't just be recreated after they are purged.\n * The two scenarios above are important for maintaining the client-side performance of the app.\n *\n * Therefore, we only consider task emissions \"timely\" if they end within a fixed time period.\n * However, if this window is too short then users who don't login frequently may fail to create a task document at all.\n * Looking at time-between-reports for active projects, a time window of 60 days will ensure that 99.9% of tasks are\n * recorded as docs.\n */\nconst TIMELY_WHEN_NEWER_THAN_DAYS = 60;\n\n// This must be a comparable string format to avoid a bunch of parsing. For example, \"2000-01-01\" < \"2010-11-31\"\nconst formatString = 'YYYY-MM-DD';\n\nconst States = {\n /**\n * Task has been calculated but it is scheduled in the future\n */\n Draft: 'Draft',\n\n /**\n * Task is currently showing to the user\n */\n Ready: 'Ready',\n\n /**\n * Task was not emitted when refreshing the contact\n * Task resulted from invalid emissions\n */\n Cancelled: 'Cancelled',\n\n /**\n * Task was emitted with { resolved: true }\n */\n Completed: 'Completed',\n\n /**\n * Task was never terminated and is now outside the allowed time window\n */\n Failed: 'Failed',\n};\n\nconst getDisplayWindow = (taskEmission) => {\n const hasExistingDisplayWindow = taskEmission.startDate || taskEmission.endDate;\n if (hasExistingDisplayWindow) {\n return {\n dueDate: taskEmission.dueDate,\n startDate: taskEmission.startDate,\n endDate: taskEmission.endDate,\n };\n }\n\n const dueDate = moment(taskEmission.date);\n if (!dueDate.isValid()) {\n return { dueDate: NaN, startDate: NaN, endDate: NaN };\n }\n\n return {\n dueDate: dueDate.format(formatString),\n startDate: dueDate.clone().subtract(taskEmission.readyStart || 0, 'days').format(formatString),\n endDate: dueDate.clone().add(taskEmission.readyEnd || 0, 'days').format(formatString),\n };\n};\n\nconst mostReadyOrder = [States.Ready, States.Draft, States.Completed, States.Failed, States.Cancelled];\nconst orderOf = state => {\n const order = mostReadyOrder.indexOf(state);\n return order >= 0 ? order : mostReadyOrder.length;\n};\n\nmodule.exports = {\n isTerminal: state => [States.Cancelled, States.Completed, States.Failed].includes(state),\n\n isMoreReadyThan: (stateA, stateB) => orderOf(stateA) < orderOf(stateB),\n\n compareState: (stateA, stateB) => orderOf(stateA) - orderOf(stateB),\n\n calculateState: (taskEmission, timestamp) => {\n if (!taskEmission) {\n return false;\n }\n\n if (taskEmission.resolved) {\n return States.Completed;\n }\n\n if (taskEmission.deleted) {\n return States.Cancelled;\n }\n\n // invalid data yields falsey\n if (!taskEmission.date && !taskEmission.dueDate) {\n return false;\n }\n\n const { startDate, endDate } = getDisplayWindow(taskEmission);\n if (!startDate || !endDate || startDate > endDate || endDate < startDate) {\n return false;\n }\n\n const timestampAsDate = moment(timestamp).format(formatString);\n if (startDate > timestampAsDate) {\n return States.Draft;\n }\n\n if (endDate < timestampAsDate) {\n return States.Failed;\n }\n\n return States.Ready;\n },\n\n getDisplayWindow,\n\n isTimely: (taskEmission, timestamp) => {\n const { endDate } = getDisplayWindow(taskEmission);\n return endDate > moment(timestamp).add(-TIMELY_WHEN_NEWER_THAN_DAYS, 'days').format(formatString);\n },\n\n setStateOnTaskDoc: (taskDoc, updatedState, timestamp = Date.now(), reason = '') => {\n if (!taskDoc) {\n return;\n }\n\n if (!updatedState) {\n taskDoc.state = States.Cancelled;\n taskDoc.stateReason = 'invalid';\n } else {\n taskDoc.state = updatedState;\n if (reason) {\n taskDoc.stateReason = reason;\n }\n }\n\n const stateHistory = taskDoc.stateHistory = taskDoc.stateHistory || [];\n const mostRecentState = stateHistory[stateHistory.length - 1];\n if (!mostRecentState || taskDoc.state !== mostRecentState.state) {\n const stateChange = { state: taskDoc.state, timestamp };\n stateHistory.push(stateChange);\n }\n\n return taskDoc;\n },\n};\n\nObject.assign(module.exports, States);\n","/**\n * @module transform-task-emission-to-doc\n * Transforms a task emission into the schema used by task documents\n * Minifies all unneeded data from the emission\n * Merges emission data into an existing document, or creates a new task document (as appropriate)\n */\n\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object} taskEmission A task emission from the rules engine\n * @param {int} calculatedAt Epoch timestamp at the time the emission was calculated\n * @param {Object} existingDoc The most recent taskDocument with the same emission id\n\n * @returns {Object} result\n * @returns {Object} result.taskDoc The result of the transformation\n * @returns {Boolean} result.isUpdated True if the document is new or has been altered\n */\nmodule.exports = (taskEmission, calculatedAt, userSettingsId, existingDoc) => {\n const emittedState = TaskStates.calculateState(taskEmission, calculatedAt);\n const baseFromExistingDoc = !!existingDoc &&\n (!TaskStates.isTerminal(existingDoc.state) || existingDoc.state === emittedState);\n\n // reduce document churn - don't tweak data on existing docs in terminal states\n const baselineStateOfExistingDoc = baseFromExistingDoc &&\n !TaskStates.isTerminal(existingDoc.state) &&\n JSON.stringify(existingDoc);\n const taskDoc = baseFromExistingDoc ? existingDoc : newTaskDoc(taskEmission, userSettingsId, calculatedAt);\n taskDoc.user = userSettingsId;\n taskDoc.requester = taskEmission.doc && taskEmission.doc.contact && taskEmission.doc.contact._id;\n taskDoc.owner = taskEmission.contact && taskEmission.contact._id;\n minifyEmission(taskDoc, taskEmission);\n TaskStates.setStateOnTaskDoc(taskDoc, emittedState, calculatedAt);\n\n const isUpdated = (() => {\n if (!baseFromExistingDoc) {\n // do not create new documents where the initial state is cancelled (invalid emission)\n return taskDoc.state !== TaskStates.Cancelled;\n }\n\n return baselineStateOfExistingDoc && JSON.stringify(taskDoc) !== baselineStateOfExistingDoc;\n })();\n\n return {\n isUpdated,\n taskDoc,\n };\n};\n\nconst minifyEmission = (taskDoc, emission) => {\n const minified = ['_id', 'title', 'icon', 'deleted', 'resolved', 'actions', 'priority', 'priorityLabel' ]\n .reduce((agg, attr) => {\n if (Object.hasOwnProperty.call(emission, attr)) {\n agg[attr] = emission[attr];\n }\n return agg;\n }, {});\n\n /*\n The declarative configuration \"contactLabel\" results in a task emission with a contact with only a name attribute.\n For backward compatibility, contacts which don't provide an id should not be minified and rehydrated.\n */\n if (emission.contact) {\n minified.contact = { name: emission.contact.name };\n }\n\n if (emission.date || emission.dueDate) {\n const timeWindow = TaskStates.getDisplayWindow(emission);\n Object.assign(minified, timeWindow);\n }\n minified.actions && minified.actions\n .filter(action => action && action.content)\n .forEach(action => {\n if (!minified.forId) {\n minified.forId = action.content.contact && action.content.contact._id;\n }\n delete action.content.contact;\n });\n\n taskDoc.emission = minified;\n return taskDoc;\n};\n\nconst newTaskDoc = (emission, userSettingsId, calculatedAt) => ({\n _id: `task~${userSettingsId}~${emission._id}~${calculatedAt}`,\n type: 'task',\n authoredOn: calculatedAt,\n stateHistory: [],\n});\n","/**\n * @module update-temporal-states\n * As time elapses, documents change state because the timing window has been reached.\n * Eg. Documents with state Draft move to state Ready just because it is now after midnight\n */\nconst TaskStates = require('./task-states');\n\n/**\n * @param {Object[]} taskDocs A list of task documents to evaluate\n * @param {int} timestamp=Date.now() Epoch timestamp to use when evaluating the current state of the task documents\n */\nmodule.exports = (taskDocs, timestamp = Date.now()) => {\n const docsToCommit = [];\n for (const taskDoc of taskDocs) {\n let updatedState = TaskStates.calculateState(taskDoc.emission, timestamp);\n if (taskDoc.authoredOn > timestamp) {\n updatedState = TaskStates.Cancelled;\n }\n\n if (!TaskStates.isTerminal(taskDoc.state) && taskDoc.state !== updatedState) {\n TaskStates.setStateOnTaskDoc(taskDoc, updatedState, timestamp);\n docsToCommit.push(taskDoc);\n }\n }\n\n return docsToCommit;\n};\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * @license\n * Lodash (Custom Build) \n * Build: `lodash core -o ./dist/lodash.core.js`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Error message constants. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_PARTIAL_FLAG = 32;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n /** Used to match HTML entities and HTML characters. */\n var reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n array.push.apply(array, values);\n return array;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return baseMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /*--------------------------------------------------------------------------*/\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Built-in value references. */\n var objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeIsFinite = root.isFinite,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n return value instanceof LodashWrapper\n ? value\n : new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n }\n\n LodashWrapper.prototype = baseCreate(lodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n object[key] = value;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !false)\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return baseFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n return objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n var baseIsArguments = noop;\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : baseGetTag(object),\n othTag = othIsArr ? arrayTag : baseGetTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n stack || (stack = []);\n var objStack = find(stack, function(entry) {\n return entry[0] == object;\n });\n var othStack = find(stack, function(entry) {\n return entry[0] == other;\n });\n if (objStack && othStack) {\n return objStack[1] == other;\n }\n stack.push([object, other]);\n stack.push([other, object]);\n if (isSameTag && !objIsObj) {\n var result = (objIsArr)\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n stack.pop();\n return result;\n }\n }\n if (!isSameTag) {\n return false;\n }\n var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(func) {\n if (typeof func == 'function') {\n return func;\n }\n if (func == null) {\n return identity;\n }\n return (typeof func == 'object' ? baseMatches : baseProperty)(func);\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var props = nativeKeys(source);\n return function(object) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length];\n if (!(key in object &&\n baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG)\n )) {\n return false;\n }\n }\n return true;\n };\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, props) {\n object = Object(object);\n return reduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source) {\n return baseSlice(source, 0, source.length);\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n return reduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = false;\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = false;\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return fn.apply(isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined;\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n var compared;\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!baseSome(other, function(othValue, othIndex) {\n if (!indexOf(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n var compared;\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return func.apply(this, otherArgs);\n };\n }\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = identity;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n return baseFilter(array, Boolean);\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (typeof fromIndex == 'number') {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n } else {\n fromIndex = 0;\n }\n var index = (fromIndex || 0) - 1,\n isReflexive = value === value;\n\n while (++index < length) {\n var other = array[index];\n if ((isReflexive ? other === value : other !== other)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n start = start == null ? 0 : +start;\n end = end === undefined ? length : +end;\n return length ? baseSlice(array, start, end) : [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseEvery(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n return baseFilter(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n return baseEach(collection, baseIteratee(iteratee));\n }\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n return baseMap(collection, baseIteratee(iteratee));\n }\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n collection = isArrayLike(collection) ? collection : nativeKeys(collection);\n return collection.length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseSome(collection, baseIteratee(predicate));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n function sortBy(collection, iteratee) {\n var index = 0;\n iteratee = baseIteratee(iteratee);\n\n return baseMap(baseMap(collection, function(value, key, collection) {\n return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) };\n }).sort(function(object, other) {\n return compareAscending(object.criteria, other.criteria) || (object.index - other.index);\n }), baseProperty('value'));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials);\n });\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n if (!isObject(value)) {\n return value;\n }\n return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = baseIsDate;\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n return !nativeKeys(value).length;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = baseIsRegExp;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!isArrayLike(value)) {\n return values(value);\n }\n return value.length ? copyArray(value) : [];\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n var toInteger = Number;\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n var toNumber = Number;\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n copyObject(source, nativeKeys(source), object);\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, nativeKeysIn(source), object);\n });\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : assign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasOwnProperty.call(object, path);\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n var keys = nativeKeys;\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n var keysIn = nativeKeysIn;\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n var value = object == null ? undefined : object[path];\n if (value === undefined) {\n value = defaultValue;\n }\n return isFunction(value) ? value.call(object) : value;\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n var iteratee = baseIteratee;\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(assign({}, source));\n }\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n baseEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.assignIn = assignIn;\n lodash.before = before;\n lodash.bind = bind;\n lodash.chain = chain;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.create = create;\n lodash.defaults = defaults;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.filter = filter;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.iteratee = iteratee;\n lodash.keys = keys;\n lodash.map = map;\n lodash.matches = matches;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.once = once;\n lodash.pick = pick;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.tap = tap;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.values = values;\n\n // Add aliases.\n lodash.extend = assignIn;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.clone = clone;\n lodash.escape = escape;\n lodash.every = every;\n lodash.find = find;\n lodash.forEach = forEach;\n lodash.has = has;\n lodash.head = head;\n lodash.identity = identity;\n lodash.indexOf = indexOf;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isBoolean = isBoolean;\n lodash.isDate = isDate;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isNaN = isNaN;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isRegExp = isRegExp;\n lodash.isString = isString;\n lodash.isUndefined = isUndefined;\n lodash.last = last;\n lodash.max = max;\n lodash.min = min;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.reduce = reduce;\n lodash.result = result;\n lodash.size = size;\n lodash.some = some;\n lodash.uniqueId = uniqueId;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Add `Array` methods to `lodash.prototype`.\n baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n /*--------------------------------------------------------------------------*/\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = lodash;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return lodash;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = lodash)._ = lodash;\n // Export for CommonJS support.\n freeExports._ = lodash;\n }\n else {\n // Export to the global object.\n root._ = lodash;\n }\n}.call(this));\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","module.exports = require(\"events\");;","module.exports = require(\"fs\");;","module.exports = require(\"path\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(__webpack_require__.s = \"./all-chts-bundle.js\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/form-host.dev.js b/dist/form-host.dev.js index 6e90437f..0b2a1e6b 100644 --- a/dist/form-host.dev.js +++ b/dist/form-host.dev.js @@ -15,7 +15,7 @@ \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -eval("var _ = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore-umd.js\"),\n ExtendedXpathEvaluator = __webpack_require__(/*! extended-xpath */ \"./node_modules/openrosa-xpath-evaluator/src/extended-xpath.js\"),\n openrosaExtensions = __webpack_require__(/*! openrosa-xpath-extensions */ \"./node_modules/openrosa-xpath-evaluator/src/openrosa-xpath-extensions.js\"),\n\n /* This file changed from v3.6 > v3.7, but not v3.7 > v3.11 */\n medicExtensions = __webpack_require__(/*! cht-core-3-11/webapp/src/js/enketo/medic-xpath-extensions */ \"./node_modules/cht-core-3-11/webapp/src/js/enketo/medic-xpath-extensions.js\"),\n translator = __webpack_require__(/*! cht-core-3-11/webapp/src/js/enketo/translator */ \"./node_modules/cht-core-3-11/webapp/src/js/enketo/translator.js\");\n\nmodule.exports = function() {\n // re-implement XPathJS ourselves!\n var evaluator = new XPathEvaluator();\n this.xml.jsCreateExpression = function() {\n return evaluator.createExpression.apply( evaluator, arguments );\n };\n this.xml.jsCreateNSResolver = function() {\n return evaluator.createNSResolver.apply( evaluator, arguments );\n };\n this.xml.jsEvaluate = function(e, contextPath, namespaceResolver, resultType, result) {\n var extensions = openrosaExtensions(translator.t);\n\n // https://github.com/enketo/openrosa-xpath-evaluator/pull/28\n const _now = function() { return window.now || new Date(); };\n extensions._now = _now;\n medicExtensions.func.now =\n medicExtensions.func.today = function() { return { t: 'date', v: _now() }; };\n extensions.func = _.extend(extensions.func, medicExtensions.func);\n var wrappedXpathEvaluator = function(v) {\n // Node requests (i.e. result types greater than 3 (BOOLEAN)\n // should be processed unaltered, as they are passed this\n // way from the ExtendedXpathEvaluator. For anything else,\n // we will be ask for the most appropriate result type, and\n // handle as best we can.\n var wrappedResultType = resultType > XPathResult.BOOLEAN_TYPE ? resultType : XPathResult.ANY_TYPE;\n var doc = contextPath.ownerDocument;\n return doc.evaluate(v, contextPath, namespaceResolver, wrappedResultType, result);\n };\n var evaluator = new ExtendedXpathEvaluator(wrappedXpathEvaluator, extensions);\n return evaluator.evaluate(e, contextPath, namespaceResolver, resultType, result);\n };\n window.JsXPathException =\n window.JsXPathExpression =\n window.JsXPathNSResolver =\n window.JsXPathResult =\n window.JsXPathNamespace = true;\n};\n\n\n//# sourceURL=webpack://cht-conf-test-harness/./ext/OpenrosaXpathEvaluatorBinding.js?"); +eval("var _ = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore-umd.js\"),\n ExtendedXpathEvaluator = __webpack_require__(/*! extended-xpath */ \"./node_modules/openrosa-xpath-evaluator/src/extended-xpath.js\"),\n openrosaExtensions = __webpack_require__(/*! openrosa-xpath-extensions */ \"./node_modules/openrosa-xpath-evaluator/src/openrosa-xpath-extensions.js\"),\n\n /* This file changed from v3.6 > v3.7, but not v3.7 > v3.11 */\n medicExtensions = __webpack_require__(/*! cht-core-3-13/webapp/src/js/enketo/medic-xpath-extensions */ \"./node_modules/cht-core-3-13/webapp/src/js/enketo/medic-xpath-extensions.js\"),\n translator = __webpack_require__(/*! cht-core-3-13/webapp/src/js/enketo/translator */ \"./node_modules/cht-core-3-13/webapp/src/js/enketo/translator.js\");\n\nmodule.exports = function() {\n // re-implement XPathJS ourselves!\n var evaluator = new XPathEvaluator();\n this.xml.jsCreateExpression = function() {\n return evaluator.createExpression.apply( evaluator, arguments );\n };\n this.xml.jsCreateNSResolver = function() {\n return evaluator.createNSResolver.apply( evaluator, arguments );\n };\n this.xml.jsEvaluate = function(e, contextPath, namespaceResolver, resultType, result) {\n var extensions = openrosaExtensions(translator.t);\n\n // https://github.com/enketo/openrosa-xpath-evaluator/pull/28\n const _now = function() { return window.now || new Date(); };\n extensions._now = _now;\n medicExtensions.func.now =\n medicExtensions.func.today = function() { return { t: 'date', v: _now() }; };\n extensions.func = _.extend(extensions.func, medicExtensions.func);\n var wrappedXpathEvaluator = function(v) {\n // Node requests (i.e. result types greater than 3 (BOOLEAN)\n // should be processed unaltered, as they are passed this\n // way from the ExtendedXpathEvaluator. For anything else,\n // we will be ask for the most appropriate result type, and\n // handle as best we can.\n var wrappedResultType = resultType > XPathResult.BOOLEAN_TYPE ? resultType : XPathResult.ANY_TYPE;\n var doc = contextPath.ownerDocument;\n return doc.evaluate(v, contextPath, namespaceResolver, wrappedResultType, result);\n };\n var evaluator = new ExtendedXpathEvaluator(wrappedXpathEvaluator, extensions);\n return evaluator.evaluate(e, contextPath, namespaceResolver, resultType, result);\n };\n window.JsXPathException =\n window.JsXPathExpression =\n window.JsXPathNSResolver =\n window.JsXPathResult =\n window.JsXPathNamespace = true;\n};\n\n\n//# sourceURL=webpack://cht-conf-test-harness/./ext/OpenrosaXpathEvaluatorBinding.js?"); /***/ }), @@ -39,23 +39,23 @@ eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPAC /***/ }), -/***/ "./node_modules/cht-core-3-11/webapp/src/js/enketo/medic-xpath-extensions.js": +/***/ "./node_modules/cht-core-3-13/webapp/src/js/enketo/medic-xpath-extensions.js": /*!***********************************************************************************!*\ - !*** ./node_modules/cht-core-3-11/webapp/src/js/enketo/medic-xpath-extensions.js ***! + !*** ./node_modules/cht-core-3-13/webapp/src/js/enketo/medic-xpath-extensions.js ***! \***********************************************************************************/ /***/ ((module) => { -eval("let zscoreUtil;\n\nconst isObject = (value) => {\n const type = typeof value;\n return value !== null && (type === 'object' || type === 'function');\n};\n\nconst getValue = function(resultObject) {\n if (!isObject(resultObject) || !resultObject.t) {\n return resultObject;\n }\n\n // input fields, evaluated as `UNORDERED_NODE_ITERATOR_TYPE`, are received as arrays with one element\n if (resultObject.t === 'arr' && resultObject.v.length) {\n return resultObject.v[0];\n }\n\n return resultObject.v;\n};\n\nconst now_and_today = function() { return { t: 'date', v: new Date() }; };\n\nconst toISOLocalString = function(date) {\n if (date.toString() === 'Invalid Date') {\n return date.toString();\n }\n\n const dt = new Date(date.getTime() - (date.getTimezoneOffset() * 60 * 1000))\n .toISOString()\n .replace('Z', module.exports.getTimezoneOffsetAsTime(date));\n\n return dt;\n};\n\nconst getTimezoneOffsetAsTime = function(date) {\n const pad2 = function(x) {\n return ( x < 10 ) ? '0' + x : x;\n };\n\n if (date.toString() === 'Invalid Date') {\n return date.toString();\n }\n\n const offsetMinutesTotal = date.getTimezoneOffset();\n\n const direction = (offsetMinutesTotal < 0) ? '+' : '-';\n const hours = pad2(Math.abs(Math.floor(offsetMinutesTotal / 60)));\n const minutes = pad2(Math.abs(Math.floor(offsetMinutesTotal % 60)));\n\n return direction + hours + ':' + minutes;\n};\n\nmodule.exports = {\n getTimezoneOffsetAsTime: getTimezoneOffsetAsTime,\n toISOLocalString: toISOLocalString,\n init: function(_zscoreUtil) {\n zscoreUtil = _zscoreUtil;\n },\n func: {\n now: now_and_today,\n today: now_and_today,\n 'z-score': function() {\n const args = Array.from(arguments).map(function(arg) {\n return getValue(arg);\n });\n const result = zscoreUtil.apply(null, args);\n if (!result) {\n return { t: 'str', v: '' };\n }\n return { t: 'num', v: result };\n }\n },\n process: {\n toExternalResult: function(r) {\n if(r.t === 'date') {\n return {\n resultType: XPathResult.STRING_TYPE,\n numberValue: r.v.getTime(),\n stringValue: module.exports.toISOLocalString(r.v),\n };\n }\n }\n }\n};\n\n\n//# sourceURL=webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/webapp/src/js/enketo/medic-xpath-extensions.js?"); +eval("let zscoreUtil;\n\nconst isObject = (value) => {\n const type = typeof value;\n return value !== null && (type === 'object' || type === 'function');\n};\n\nconst getValue = function(resultObject) {\n if (!isObject(resultObject) || !resultObject.t) {\n return resultObject;\n }\n\n // input fields, evaluated as `UNORDERED_NODE_ITERATOR_TYPE`, are received as arrays with one element\n if (resultObject.t === 'arr' && resultObject.v.length) {\n return resultObject.v[0];\n }\n\n return resultObject.v;\n};\n\nconst now_and_today = function() { return { t: 'date', v: new Date() }; };\n\nconst toISOLocalString = function(date) {\n if (date.toString() === 'Invalid Date') {\n return date.toString();\n }\n\n const dt = new Date(date.getTime() - (date.getTimezoneOffset() * 60 * 1000))\n .toISOString()\n .replace('Z', module.exports.getTimezoneOffsetAsTime(date));\n\n return dt;\n};\n\nconst getTimezoneOffsetAsTime = function(date) {\n const pad2 = function(x) {\n return ( x < 10 ) ? '0' + x : x;\n };\n\n if (date.toString() === 'Invalid Date') {\n return date.toString();\n }\n\n const offsetMinutesTotal = date.getTimezoneOffset();\n\n const direction = (offsetMinutesTotal < 0) ? '+' : '-';\n const hours = pad2(Math.abs(Math.floor(offsetMinutesTotal / 60)));\n const minutes = pad2(Math.abs(Math.floor(offsetMinutesTotal % 60)));\n\n return direction + hours + ':' + minutes;\n};\n\nconst parseTimestampToDate = (value) => {\n const timestamp = parseInt(getValue(value));\n\n if (isNaN(timestamp)) {\n return { t: 'str', v: '' };\n }\n\n return { t:'date', v: new Date(timestamp) };\n};\n\nmodule.exports = {\n getTimezoneOffsetAsTime: getTimezoneOffsetAsTime,\n toISOLocalString: toISOLocalString,\n init: function(_zscoreUtil) {\n zscoreUtil = _zscoreUtil;\n },\n func: {\n now: now_and_today,\n today: now_and_today,\n 'z-score': function() {\n const args = Array.from(arguments).map(function(arg) {\n return getValue(arg);\n });\n const result = zscoreUtil.apply(null, args);\n if (!result) {\n return { t: 'str', v: '' };\n }\n return { t: 'num', v: result };\n },\n 'parse-timestamp-to-date': parseTimestampToDate, // Function name convention of XForm\n },\n process: {\n toExternalResult: function(r) {\n if(r.t === 'date') {\n return {\n resultType: XPathResult.STRING_TYPE,\n numberValue: r.v.getTime(),\n stringValue: module.exports.toISOLocalString(r.v),\n };\n }\n }\n }\n};\n\n\n//# sourceURL=webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/webapp/src/js/enketo/medic-xpath-extensions.js?"); /***/ }), -/***/ "./node_modules/cht-core-3-11/webapp/src/js/enketo/translator.js": +/***/ "./node_modules/cht-core-3-13/webapp/src/js/enketo/translator.js": /*!***********************************************************************!*\ - !*** ./node_modules/cht-core-3-11/webapp/src/js/enketo/translator.js ***! + !*** ./node_modules/cht-core-3-13/webapp/src/js/enketo/translator.js ***! \***********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -eval("const moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nfunction translate(key) {\n if(key.indexOf('date.dayofweek.') === 0) {\n return moment().weekday(key.substring(15)).format('ddd');\n }\n if(key.indexOf('date.month.') === 0) {\n return moment().month(parseInt(key.substring(11)) - 1).format('MMM');\n }\n\n return window.CHTCore.Translate.instant('enketo.' + key);\n}\n\nmodule.exports = {\n t: translate,\n};\n\n\n//# sourceURL=webpack://cht-conf-test-harness/./node_modules/cht-core-3-11/webapp/src/js/enketo/translator.js?"); +eval("const moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nfunction translate(key) {\n if(key.indexOf('date.dayofweek.') === 0) {\n return moment().weekday(key.substring(15)).format('ddd');\n }\n if(key.indexOf('date.month.') === 0) {\n return moment().month(parseInt(key.substring(11)) - 1).format('MMM');\n }\n\n return window.CHTCore.Translate.instant('enketo.' + key);\n}\n\nmodule.exports = {\n t: translate,\n};\n\n\n//# sourceURL=webpack://cht-conf-test-harness/./node_modules/cht-core-3-13/webapp/src/js/enketo/translator.js?"); /***/ }), diff --git a/ext/OpenrosaXpathEvaluatorBinding.js b/ext/OpenrosaXpathEvaluatorBinding.js index 52e90f3a..bf3131d0 100644 --- a/ext/OpenrosaXpathEvaluatorBinding.js +++ b/ext/OpenrosaXpathEvaluatorBinding.js @@ -3,8 +3,8 @@ var _ = require('underscore'), openrosaExtensions = require('openrosa-xpath-extensions'), /* This file changed from v3.6 > v3.7, but not v3.7 > v3.11 */ - medicExtensions = require('cht-core-3-11/webapp/src/js/enketo/medic-xpath-extensions'), - translator = require('cht-core-3-11/webapp/src/js/enketo/translator'); + medicExtensions = require('cht-core-3-13/webapp/src/js/enketo/medic-xpath-extensions'), + translator = require('cht-core-3-13/webapp/src/js/enketo/translator'); module.exports = function() { // re-implement XPathJS ourselves! diff --git a/harness.defaults.json.example b/harness.defaults.json.example index 3887f50f..c0d91f4b 100644 --- a/harness.defaults.json.example +++ b/harness.defaults.json.example @@ -1,5 +1,5 @@ { - "coreVersion": "3.11.0", + "coreVersion": "3.13.0", "user": "user_contact_id", "subject": "patient_id", diff --git a/package-lock.json b/package-lock.json index 9305cc03..e1135eca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -865,6 +865,11 @@ "from": "git+https://github.com/medic/cht-core.git#3.12.x", "dev": true }, + "cht-core-3-13": { + "version": "git+https://github.com/medic/cht-core.git#bcccc168906add3c56f891fb01c1255a5397159e", + "from": "git+https://github.com/medic/cht-core.git#3.13.x", + "dev": true + }, "cht-core-3-9": { "version": "git+https://github.com/medic/cht-core.git#e6bcce41988afb8565723156e56b2ce2ce8d17be", "from": "cht-core-3-9@git+https://github.com/medic/cht-core.git#3.9.x", diff --git a/package.json b/package.json index 05f10561..481a86ef 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "test": "npx mocha test/*.spec.js --timeout 25000 --slow 500", "build": "npm run docs && ./build.sh", "docs": "npx jsdoc src/*.js src/**/*.js ./JSDOC.md -d docs", - "explore": "node ./project-explorer/build-assets.js --path=./test/collateral && cd project-explorer && webpack && google-chrome ./project-explorer.html", + "explore": "node ./project-explorer/build-assets.js --path=./test/collateral/project-without-source --formPath=./test/collateral && cd project-explorer && webpack && google-chrome ./project-explorer.html", "eslint": "npx eslint .", "travis": "npm run build && npm run eslint && npm test" }, @@ -30,6 +30,7 @@ "cht-core-3-10": "git+https://github.com/medic/cht-core.git#3.10.x", "cht-core-3-11": "git+https://github.com/medic/cht-core.git#3.11.x", "cht-core-3-12": "git+https://github.com/medic/cht-core.git#3.12.x", + "cht-core-3-13": "git+https://github.com/medic/cht-core.git#3.13.x", "cht-core-3-9": "git+https://github.com/medic/cht-core.git#3.9.x", "couchdb-compile": "^1.11.0", "enketo-core": "4.41.6", diff --git a/project-explorer/build-assets.js b/project-explorer/build-assets.js index 68fb1e73..4fe5b6fc 100644 --- a/project-explorer/build-assets.js +++ b/project-explorer/build-assets.js @@ -6,12 +6,14 @@ const jsonToXml = require('pojo2xml'); const usage = `Usage: build-assets --path=[DIRECTORY] Builds the content of a project folder for user in project explorer. - --path path to the medic project folder - --output path where the built assets will be written (optional) + --path path to the medic project folder (app_settings.json) + --formPath path to folder containing app/*.xml or contact/*.xml (defaults to path) + --output path where the built assets will be written (optional) `; const argv = require('minimist')(process.argv.slice(2)); const pathToProject = path.resolve(argv.path); +const formPath = argv.formPath ? path.resolve(argv.formPath) : pathToProject; if (!pathToProject) { console.error(usage); @@ -19,7 +21,12 @@ if (!pathToProject) { } if (!fs.existsSync(pathToProject)) { - console.error(`Could not locate project folder at: ${path.resolve(pathToProject)}`); + console.error(`Could not locate project folder at: ${pathToProject}`); + return -1; +} + +if (!fs.existsSync(formPath)) { + console.error(`Could not locate form folder at: ${formPath}`); return -1; } @@ -45,14 +52,14 @@ if (!fs.existsSync(pathToProject)) { fs.writeFileSync(harnessDefaultDestinationPath, fileContent); const appFormPaths = [ - pathToProject, - path.join(pathToProject, 'forms'), - path.join(pathToProject, 'forms/app'), - path.join(pathToProject, 'forms/collect'), + formPath, + path.join(formPath, 'forms'), + path.join(formPath, 'forms/app'), + path.join(formPath, 'forms/collect'), ]; const contactFormPaths = [ - path.join(pathToProject, 'forms/contact') + path.join(formPath, 'forms/contact') ]; const getFilesInFolders = directoriesToScan => { diff --git a/test/app-forms.spec.js b/test/app-forms.spec.js index 4efffe5f..ea73f405 100644 --- a/test/app-forms.spec.js +++ b/test/app-forms.spec.js @@ -254,4 +254,17 @@ describe('forms that have caused bugs', () => { const result2 = await harness.fillForm('empty', [1]); expect(result2.errors).to.not.be.empty; }); + + it('#148 - Support for parse-timestamp-to-date (added in 3.13)', async () => { + await harness.setNow('2000-01-01'); + await harness.loadForm('covid19_rdt_provision'); + await harness.page.evaluate(() => window.$$('input[name$="preview_session_state"]').removeAttr('data-required')); + const result = await harness.fillForm( + ['nasal', 'asymptomatic'], + ['nasal', undefined, '2000-04-01', ''], + [], + ); + expect(result.errors).to.be.empty; + expect(result.report.fields.preview_time_expired).to.include('Mar, 1972'); + }); }); diff --git a/test/collateral/forms/app/covid19_rdt_provision.xml b/test/collateral/forms/app/covid19_rdt_provision.xml new file mode 100644 index 00000000..141292be --- /dev/null +++ b/test/collateral/forms/app/covid19_rdt_provision.xml @@ -0,0 +1,699 @@ + + + + RDT Covid-19 + + + + + What is the patient's name? + + + Contact ID of the logged in user + + + Place ID of the logged in user + + + Name of the logged in user + + + ✓ RDT provisioned! + + + Click "Next" to continue. + + + Click on "Launch app" to provision a Covid-19 rapid diagnostic test to this patient. + + + The status is auto populated once the RDT is provisioned + + + RDT status * + + + You have selected "Other" for the test in RD-Toolkit. Please specify the test being used: + + + Notes + + + What is the lot or batch number to which the Rapid Diagnostic Test device belong to? + + + When does the lot or batch expire? + + + Warning: please use caution when using expired RDTs. Test results may not be accurate. + + + Nasal + + + Nasopharyngeal + + + Other + + + How the test will be collected? + + + Specify other + + + Specimen & Lot + + + Patient Details<i class="fa fa-user"></i> + + + Be sure you submit to complete this action + + + RDT Details<i class="fa fa-medkit"></i> + + + **** + + + + Results expire at - be sure to complete the task before this time. + + + + + + Number of days should be between 1 and 200 + + + How many days since the first symptoms began? + + + No + + + Yes + + + Are you at "" now? + + + Facility address + + + Facility name + + + Community: Home + + + Community: Other + + + Community: Workplace + + + Healthcare: Clinic + + + Healthcare: Hospital + + + Healthcare: Other + + + Facility type + + + Specify other + + + Anxiety + + + Chest pain + + + Chills or dizziness + + + Confusion + + + Conjunctivitis + + + Cough + + + Depression + + + Diarrhea + + + General weakness or fatigue + + + Headache + + + High temperature (above 38 °C) + + + Irritability + + + Loss of appetite + + + Loss of taste or smell + + + Muscle or joint pain + + + Nasal congestion + + + Nausea or vomiting + + + Neurologic complications + + + Shortness of breath + + + Skin rash + + + Sleep disorders + + + Sore throat + + + What symptoms does the patient have? + + + Asymptomatic + + + History of close contact + + + Confirmed COVID-19 case + + + Symptomatic + + + Select only one of the "asymptomatic" or "symptomatic", a patient cannot be both "asymptomatic" and "symptomatic" + + + Why is the patient taking the test? + + + Location & Symptoms + + + + + + + + + + + + + + + + + + + + user + + <_id/> + + + + + + + + +
+ + <_id/> + +
+ + <_id/> + +
+ + + + + + + + + + + 1020398734 + + + + + + + yes + + + + + + + + + + + + + + + + + + + org.rdtoolkit.action.Provision + + + + + PRE_POPULATE + TWO_PHASE + CRITERIA_SET_AND + sars_cov2 + + + + + + + + + + + 70000000000 + + + + + + + + + + + + + COVID-19 + 94558-4 + SARS-CoV-2 (COVID-19) Ag [Presence] in Respiratory specimen by Rapid immunoassay + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/collateral/harness.defaults.json b/test/collateral/harness.defaults.json index 6e028f26..2faa4133 100644 --- a/test/collateral/harness.defaults.json +++ b/test/collateral/harness.defaults.json @@ -1,5 +1,5 @@ { - "coreVersion": "3.12", + "coreVersion": "3.13", "user": "chw_area_contact_id", "userRoles": ["chw_role", "role_dne"], "subject": "patient_id", diff --git a/webpack.config.js b/webpack.config.js index 26060c81..7bf1434d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -34,9 +34,9 @@ module.exports = [ }, resolve: { alias: { - '@medic/calendar-interval': path.join(__dirname, 'node_modules/cht-core-3-11/shared-libs/calendar-interval'), - '@medic/registration-utils': path.join(__dirname, 'node_modules/cht-core-3-11/shared-libs/registration-utils'), - '@medic/contact-types-utils': path.join(__dirname, 'node_modules/cht-core-3-11/shared-libs/contact-types-utils'), + '@medic/calendar-interval': path.join(__dirname, 'node_modules/cht-core-3-13/shared-libs/calendar-interval'), + '@medic/registration-utils': path.join(__dirname, 'node_modules/cht-core-3-13/shared-libs/registration-utils'), + '@medic/contact-types-utils': path.join(__dirname, 'node_modules/cht-core-3-13/shared-libs/contact-types-utils'), }, }, target: 'node',